MoTLab -GO Inc. Engineering Blog-MoTLab -GO Inc. Engineering Blog-

PostgreSQL JSONカラム利用例


PostgreSQLのJSONカラムの利用例を紹介します。


バックオフィス基盤チームの棟朝です。最近、マスターテーブルとJOINの多いRDBシステムにJSONカラムを導入したら運用がかなり楽になったので、その事例を紹介します。

RDBテーブル ⇒ JSONカラム

MoTにはRDBで契約データを管理・参照しているサービスがあり以下の問題がありました。

  • マスターテーブルが多すぎる(問題1)
  • テーブルの結合が多くSQLが複雑(問題2)
  • DBに手動でデータ登録する運用が頻繁にある(問題3)

これを以下のようのKVS風に修正しました。

  • マスターデータの結合先を含めた1つのドキュメントデータで保存する(問題1→対応1)
  • ドキュメントデータには主キーを持たせる(問題2→対応2)
  • 毎日全データをCronバッチで洗い替えをする(問題3→対応3)

メインのアイデアは手動登録の代わりにCronジョブを実行して、ジョブ内で全ての契約データを収集して1つのJSON形式で保存したことです。これによりSQLで取得時にデータをJOINすること、手動登録が不要になりました。元々PostgreSQLで運用されていたシステムだったため、KVSのDBへの移行コストがあったためDBはPostgreSQLのままJSONカラムを利用しました。

SQLは本当にこれだけになりました↓

select json_datas.data from json_data where key_id = ?;

結果

(対応1) テーブルは約30個→1個になった

(対応2) SQLは主キーをWHERE句で指定してJSONカラムを取得するだけになった

(対応3) 手動でのAPI登録作業が不要になった。


We're Hiring!

📢
Mobility Technologies ではともに働くエンジニアを募集しています。

興味のある方は 採用ページ も見ていただけると嬉しいです。

Twitter @mot_techtalk のフォローもよろしくお願いします!