JSONB (Postgres)
JSONをバイナリ形式で保存するPostgreSQLの型。テキスト型のJSONより高速で(一度だけ解析されて構造化されて保存される)、キーの存在確認やパス検索にGINインデックスが使える。JSONストアとしてはMongoDBよりPostgresの方が良いことも多い。
演算子は、->(値の取得)、->>(テキストとして取得)、@>(包含)、?(キーの存在)、#>(パス)。列全体へのGINインデックスで包含クエリが速くなる。特定のパスには式インデックスを使う:CREATE INDEX ON users ((data->>'email'))。保存時には重複キーが捨てられ、順序は保持されない。テキスト型JSONとのトレードオフは、JSONが書式と順序を保つのに対し、JSONBはサイズが約10%大きい代わりにクエリが100倍速いことである。現在のベストプラクティスは、基本はリレーショナルにし、スキーマのないユーザーデータやイベントのペイロードにJSONBを使うことである。