PostgreSQL

実務(CODEプロジェクト等)で主軸に使ってきたRDBMS。_moc-web-infra

型と機能

  • 範囲型(range type): tsrange で timestamp の範囲を表現。<@(包含)演算子で「ある時刻が範囲内か」を判定できる。NULL 指定で片側無限。
  • jpa-hibernate から範囲検索する際、nullbytea になりキャスト不能になるため :x::text::timestamp のように text を経由してキャストする。
  • UUID 主キーが標準的。

運用

  • 外部キー制約は内部的にトリガーとして実装され、ALTER TABLE <t> DISABLE TRIGGER ALL で一括無効化できる(Spring Batch のメタテーブル大量削除を高速化する用途など)。
  • 実行計画: EXPLAIN ANALYZE <query>Seq Scan(インデックス無)/Index Scan(有)を見る。
  • マイグレーション: golang-migrate などで /migrations を適用。sqldef はスキーマ定義からマイグレーションを生成(カラム削除は不可)。
  • CLI: pgcli(補完付き)。\d <table> でテーブル定義確認。

周辺

  • 軽量版: SQLite。組み込み・単一ファイル。
  • クラウド: Amazon Aurora(最大15 read replica, multi-AZ, auto scaling)、Google Spanner(分散SQL)。
  • 変種: Dolt(SQL DBに Git 的バージョン管理を足したもの)。

関連