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/