web-dev-qa-db-ja.com

PostgresのJSONとJSONBの違い

PostgreSQLのJSONとJSONBデータ型の違いは何ですか?

  1. その他のメリットとデメリットは何ですか?
18
Somnath Muluk

これは説明です: https://www.citusdata.com/blog/2016/07/14/choosing-nosql-hstore-json-jsonb/

ほとんどの場合、JSONBはNoSQL、スキーマレス、データ型を探すときに必要なものです。 HstoreとJSONも同じように使用できますが、あまり一般的ではありません。より広い意味では、JSONBは常にすべてのデータモデルに適合するとは限りません。正規化できるところには利点がありますが、オプションの列が多数あるスキーマ(イベントデータなど)がある場合、またはスキーマがテナントIDによって異なる場合は、JSONBが最適です。一般的にあなたが望む:

JSONB - In most cases
JSON - If you’re just processing logs, don’t often need to query, and use as more of an audit trail
hstore - Can work fine for text based key-value looks, but in general JSONB can still work great here
12
Piotr R

jsonは基本的に、JSONデータを未加工の形式で格納するblobであり、空白、オブジェクト内のキーの順序、オブジェクト内の重複キーなどの重要ではないものも保持します。オブジェクトのキーに関連付けられた値を抽出するなどの基本的なJSON操作を実行する機能を提供しますが、毎回JSON blobを解析する必要があるため、処理速度は遅くなります。また、すべての値を検証して、それが有効なJSONであることを確認します。一方、jsonbは、オブジェクトの一部のキーに関連付けられた値を抽出するなどの特定の操作に最適化されたカスタム形式でJSONデータを格納します(つまり、JSONを再解析せず、線形に検索しません)。さらに、jsonbは、オブジェクトの連結やオブジェクト内部の値の設定と同様に、より多くの操作をサポートします。

一般に、jsonを使用するのは、JSON操作を実行しないか、時々しか実行しないことがわかっている場合のみです。他のすべてのケースでは、jsonbを使用します。前者の場合、textは、特にjsonが行う検証に関心がない場合(たとえば、データのソースを信頼しているため)、完全に有効なオプションでもあることに注意してください。

29
redneb