はじめに Postgres には JSON/JSONB というデータ型がありますが,JSONB はデータをバイナリ形式で格納するためインサート時に変換のオーバーヘッドがあるものの,その後の処理が非常に高速である上に,インデックスを貼ることができるため,実用上は JSONB を使うのが一般的です. 一方で,そもそも RDB のようなスキーマの厳格な型付けをしているシステムで半構造化データである JSON を扱うこと自体がアンチパターンであるという指摘もあります. しかしながら,適切に設計,運用することで厳格な RDB で柔軟なデータを扱うことができ,アプリケーションの表現の幅を広げることができます. 本記事では,JSONB を可能な限り安全に扱うための実践的な工夫を紹介します. JSON Schema を使ったバリデーションを Check Constraint にする Postgres では