一つの記事で PostgreSQL の JSONB タイプをマスターする
PostgreSQL の JSONB タイプを使って、効率的に JSON データを格納し、クエリを実行し、操作する方法を学びましょう。
現代のアプリケーション開発では、非構造化データの取り扱いと保存がますます一般的になってきています。PostgreSQL の JSONB タイプは、開発者が効率的に JSON データを格納し、クエリを実行するための強力なツールを提供します。この記事では、JSONB タイプの概念と使用法について深掘りし、具体的なコード例を通じてその強力な機能を紹介します。
JSONB とは何か?
JSONB は、JSON データをバイナリ形式で格納する PostgreSQL のデータタイプです。通常の JSON タイプとは異なり、JSONB はクエリ処理と操作がより効率的です。JSON データの操作を簡素化する豊富なオペレータと関数をサポートしています。さらに、JSONB は B-tree、Hash、GIN、GiST インデックスを含む複数のインデックスタイプをサポートしており、クエリパフォーマンスをさらに強化しています。
JSONB タイプの作成
JSONB タイプを持つテーブルの作成
まず、JSONB カラムを持つテー ブルを作成してみましょう。商品情報を格納する products
テーブルがあり、商品の詳細情報は JSONB タイプを使用して格納されていると仮定します。
JSONB データの挿入
INSERT
ステートメントを使って、JSONB フィールドに JSON データを挿入することができます。
JSONB データのクエリ
JSONB フィールドからの値の抽出
->>
演算子を使って、JSONB フィールドからテキスト値を抽出することができます。次の例は、商品のブランド情報を抽出する方法を示しています。
JSONB と組み合わせてネストした値を抽出する
->
と ->>
演算子の組み合わせを使って、JSON 構造内にネストした値を抽出することができます。次の例は、商品の CPU 情報を抽出する方法を示しています。
JSONB パスを使った値の抽出
#>>
演算子を使うことで、JSON データ内の特定のパスから値を抽出することができます。次の例はストレージ情報を抽出する方法を示しています。
@>
演算子を使用した包含クエリ
@>
演算子は、ある JSONB オブジェクトが別の JSONB オブジェクトを含んでいるかどうかをチェックします。次の例は、特定のブランドの製品をクエリする方法を示しています。
JSONB データの変更
JSONB データの更新
jsonb_set
関数を使って JSONB データを更新することができます。この関数は、指定されたパスの値を更新します。次の例は、商品のストレージ情報を更新する方法を示しています。
JSONB データのトップレベルフィールドの削除
-
演算子を使って JSONB データからトップレベルのフィールドを削除することができます。この演算子は、JSONB オブジェクトから指定したキーを削除します。次の例は、商品詳細からトップレベルフィールドを削除する方法を示しています。
JSONB データのネストしたフィールドの削除
#-
演算子を使って、JSONB データから特定のパス要素を削除することができます。この演算子は、指定したパスのキーを削除します。次の例は、商品仕様から CPU 情報を削除する方法を示しています。