👋
PostgreSQLのJSONのメリット・デメリット
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