PostgreSQL
実務(CODEプロジェクト等)で主軸に使ってきたRDBMS。_moc-web-infra
型と機能
- 範囲型(range type):
tsrangeで timestamp の範囲を表現。<@(包含)演算子で「ある時刻が範囲内か」を判定できる。NULL指定で片側無限。 - jpa-hibernate から範囲検索する際、
nullがbyteaになりキャスト不能になるため: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 的バージョン管理を足したもの)。