ベストアンサー1
初め、hstore
は、キー => 値のペアのみを保存できる contrib モジュールです。キーと値はtext
s のみです (ただし、値は sql も使用できますNULL
)。
json
& はどちらもjsonb
、有効なJSON値(そのスペック)。
たとえば、これらは有効な JSON 表現です: null
、true
、[1,false,"string",{"foo":"bar"}]
、{"foo":"bar","baz":[null]}
- hstore
JSON の機能と比較するとほんの小さなサブセットです (ただし、このサブセットだけが必要な場合は問題ありません)。
json
との唯一の違いはjsonb
ストレージです。
json
プレーンテキスト形式で保存されますが、jsonb
バイナリ表現で保存される
これには 3 つの大きな結果があります。
jsonb
通常、保存にはより多くのディスク容量が必要ですjson
(そうでない場合もあります)。jsonb
入力表現から構築するには、json
json
操作には、(型指定された値に対して何らかの操作を行うたびに解析も行う必要がある)よりも大幅に時間がかかります。jsonb
json
安定版リリースで利用可能になるとjsonb
、2 つの主要な使用例があり、簡単に選択できるようになります。
- アプリケーションで JSON 表現のみを扱い、PostgreSQL はこの表現の保存と取得にのみ使用される場合は、 を使用する必要があります
json
。 - PostgreSQL で JSON 値に対して多くの操作を実行する場合、または一部の JSON フィールドでインデックスを使用する場合は、 を使用する必要があります
jsonb
。