Hello list, been a while!
We lost track of this list while the team's discussions moved to HipChat and face-to-face, but it's time to make amends and be more active here.
Among the developments in the last few months is our increased reliance on key/value data models. We keep coming up with them all over the place, primarily because they are such a natural fit in Python and JavaScript.
I've been resisting the move to document storage databases such as MongoDB (or raw filesystems) as many other aspects of our data are best defined relationally, and trying to run two databases at once seems more trouble than it is worth.
So: PostgreSQL 9.3's new support for JSON columns (first introduced in 9.2) and the existing HSTORE column for string-only key/value pairs are starting to look very good. We are already using PostgreSQL in production (was MySQL earlier) and moving all our development environments from SQLite to PostgreSQL.
The question: should we commit to PostgreSQL and make use of HSTORE/JSON/ARRAY types?
Use cases:
1. Lastuser needs a way to store properties on User objects that are available to apps (avatar URL, etc)
2. Nodular could see better performance storing properties as HSTORE instead of as a separate table
3. Funnel needs a customizable form per event, which means data will be stored as JSON instead of in individual columns
There are many use cases where a column almost always has a single value, but occasionally has two -- for instance, authors on a blog post. Using secondary tables everywhere for such small possibilities is overkill and makes queries painful, while using an ARRAY makes more sense.
Your thoughts?