Dipende. Se prevedi di avere molti utenti, un volume di transazioni molto elevato o un numero folle di recuperi di attributi per query, direi di utilizzare HSTORE. Se, tuttavia, la tua app inizierà in piccolo e crescerà nel tempo, o ha relativamente poche transazioni che recuperano gli attributi o ne recupera solo alcuni per query, usa JSON. Anche in quest'ultimo caso, se non stai recuperando molti attributi ma controllando spesso una o due chiavi nel WHERE
clausola delle tue query, puoi creare un indice funzionale per velocizzare le cose:
CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));
Ora, quando hai WHERE bar ->> somekey
, dovrebbe utilizzare l'indice.
E, naturalmente, sarà più facile utilizzare i dati nidificati e aggiornare a jsonb quando saranno disponibili.
Quindi mi orienterei verso JSON a meno che tu non sappia per certo che prenderai a calci in culo il tuo server con un uso massiccio di recuperi di chiavi prima di avere la possibilità di eseguire l'aggiornamento a 9.4. Ma per esserne sicuro, direi, fai un po' di benchmarking con i volumi di query previsti ora e vedi cosa funziona meglio per te.