jsonb

jsonb
jsonb は、ASCII/UTF-8 ストリングとしてではなく、バイナリー・コードとして、分解されたバイナリー形式でデータを保管します。 これにより、変換によるオーバーヘッドが追加されるため、入力は若干遅くなりますが、再解析が不要となるため、処理は大幅に速くなります。
jsonb では索引付けもサポートされており、大きな利点となる場合があります。
jsonb では、空白、オブジェクト・キーの順序、および重複オブジェクト・キーが保持されません。 入力に重複キーが指定されている場合、最後の値のみが保持されます。
アプリケーションでは、オブジェクト・キーの順序付けに関する従来の想定など、非常に特殊なニーズがない限り、JSON データを jsonb として保管することをお勧めします。
RFC 7159 は、'JSON文字列が '\uXXXX で示される Unicode エスケープシーケンスを含むことを許可しています。 jsonb の入力関数では、データベース・エンコードが UTF8 でない限り、非 ASCII 文字 (U+007F を超える文字) の Unicode エスケープは許可されません。 jsonbは '\u0000 を拒否する。 その理由は'\u0000がPostgreSQL'sのテキスト型で表現できないからです。 jsonb では、Unicode Basic Multilingual Plane 外の文字の指定に Unicode サロゲート・ペアを使用することは適切であると見なされます。 有効な Unicode エスケープは、保管のために同等の ASCII 文字または UTF8 文字に変換されます。これには、サロゲート・ペアの単一文字へのフォールディングが含まれます。
テキストの JSON 入力を jsonb に変換する場合、RFC 7159 で記述されているプリミティブ型は、ネイティブの PostgreSQL 型に効率的にマップされます。 jsonb は、PostgreSQL 数値データ型の範囲外の数値を拒否します。