True, **Postgres 9.1** does not have [`json` / `jsonb` data types][1]. But there is the additional module [**`hstore`**][2] providing the data type of the same name.

`hstore` has been in the core release since Postgres 8.3 (it's very mature). For just text data and no nesting it's just as good as `json`, if not better. (`jsonb` introduced some new candy.)

If you only have a few dozen of sparsely populated columns I would also consider wide rows with many columns just being NULL. NULL storage is very cheap in Postgres.

- https://dba.stackexchange.com/questions/99174/many-columns-vs-few-tables-performance-wise/99179#99179

You *could* also go with an EAV (Entity-attribute-value) design. Related answer discussing pitfalls:

- https://dba.stackexchange.com/questions/20759/is-there-a-name-for-this-database-structure

But consider upgrading to a current version of Postgres first. [Postgres 9.1 reaches EOL in Sept 2016.][3]


  [1]: http://www.postgresql.org/docs/current/interactive/datatype-json.html
  [2]: http://www.postgresql.org/docs/9.1/interactive/hstore.html
  [3]: http://www.postgresql.org/support/versioning/