場合によります。多数のユーザー、非常に大量のトランザクション、またはクエリごとの非常識な数の属性フェッチが予想される場合は、HSTOREを使用すると思います。ただし、アプリが小さく開始して時間の経過とともに大きくなる場合、属性をフェッチするトランザクションが比較的少ない場合、またはクエリごとにいくつかをフェッチする場合は、JSONを使用します。後者の場合でも、多くの属性をフェッチしていないが、WHERE
で1つまたは2つのキーを頻繁にチェックしている場合 クエリの句を使用すると、機能インデックスを作成して処理を高速化できます。
CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));
さて、あなたがWHERE bar ->> somekey
を持っているとき 、インデックスを使用する必要があります。
そしてもちろん、ネストされたデータを使用し、利用可能になったときにjsonbにアップグレードする方が簡単です。
したがって、9.4にアップグレードする前に、キーフェッチを多用してサーバーのお尻を蹴るのが確実でない限り、JSONに傾倒します。しかし、それを確実にするために、今、予想されるクエリ量でベンチマークを実行し、何が最適かを確認してください。