👋

PostgreSQLのJSONのメリット・デメリット

2025/01/20に公開

PostgreSQLのJSONについて、メリットとデメリットについて考えたい。

メリット

  • 複雑な構造のデータを、一つのカラムに保存することができる。
  • 複雑な構造のデータを、JOINを使わず、取得することができる。

デメリット

  • データの構造を変えた時に、変更前の構造のままのデータが残ってしまうことがある。
  • どういった構造のデータが入っているか、カラムの中を確認するまで、把握しずらい。

雑感

デメリットの1つ目は、データ構造を変える度にUPDATE文を実行すればいいと思うが、パフォーマンスはどうなんだろう。例えば、1億行のレコードのJSONのカラムのUPDATE文は、処理が重くなってしまうのか。2つ目のデメリットは、どうやれば解決できるのか。解決策がなかなか思い浮かばない。
 
あと、取得時のパフォーマンスも気になる。JSONに保存しているデータ量が多い場合、処理は重くなるのか。
 
また、言語・フレームワークとの相性とかもありそう。
 
4年前のPHP・Laravelと現在のGoだったら、Goの方がJSONと相性がいいと思う。Goには定義型があるので、JSONのデータ構造に合わせた定義型を作って、それをJSONを取得する際に使えば、安全に運用できると思う。確か、4年前のPHP・Laravelには、Goの定義型のような機能はなかったはずなので、安全に運用するのは、Goと比べたら難しいと思う。

Discussion