Зависи. Ако очаквате да имате много потребители, много голям обем на транзакция или безумен брой извличания на атрибути на заявка, бих казал, че използвате HSTORE. Ако обаче приложението ви ще започне малко и ще се разраства с течение на времето, или имате сравнително малко транзакции, които извличат атрибути, или просто извличате няколко на заявка, тогава използвайте JSON. Дори в последния случай, ако не извличате много атрибути, но проверявате често един или два ключа в WHERE
клауза на вашите заявки, можете да създадете функционален индекс, за да ускорите нещата:
CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));
Сега, когато имате WHERE bar ->> somekey
, трябва да използва индекса.
И разбира се, ще бъде по-лесно да използвате вложени данни и да надстроите до jsonb, когато стане достъпен за вас.
Така че бих склонил към JSON, освен ако не сте сигурни, че ще ритнете задника на сървъра си с интензивно използване на извличане на ключове, преди да имате шанс да надстроите до 9.4. Но за да сте сигурни в това, бих казал, направете сравнителен анализ с очакваните обеми на заявките сега и вижте какво работи най-добре за вас.