PostgreSQL (ACID / MVCC)(ポスグレ)
オープンソースリレーショナルDB の最先端。1986年UCB Postgres プロジェクト発、ACID 完全準拠・MVCC・JSON / 全文検索 / 拡張機能で世界最強OSS RDBMS。
概要
PostgreSQL は1986年Michael Stonebraker (UC Berkeley・Turing 賞受賞者 2014) が立ち上げた「Postgres」プロジェクト発。1996年「PostgreSQL」改名・PostgreSQL Global Development Group 主導で開発継続。ACID (Atomicity / Consistency / Isolation / Durability) 完全準拠・MVCC (Multi-Version Concurrency Control)・PL/pgSQL / Python / Perl 等の拡張言語・GIS (PostGIS) / 全文検索 / JSONB・FDW (Foreign Data Wrapper) 等の豊富な機能で、世界最強オープンソースRDBMS の地位を保つ。
主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 1986 | UC Berkeley Postgres プロジェクト開始 |
| 1989 | Postgres v1 リリース |
| 1995 | Postgres95 (SQL言語対応) |
| 1996 | PostgreSQL 改名 |
| 2010 | PostgreSQL 9.0 (Hot Standby) |
| 2017-09 | PostgreSQL 10 (論理レプリケーション) |
| 2020-09 | PostgreSQL 13 (B-tree dedup) |
| 2021-09 | PostgreSQL 14 (Async Connection) |
| 2022-10 | PostgreSQL 15 (MERGE / Logical Repl) |
| 2023-09 | PostgreSQL 16 (Logical Repl 大幅強化) |
| 2024-09 | PostgreSQL 17 (Logical Repl Failover) |
MVCC (Multi-Version Concurrency Control)
PostgreSQL の最大の特徴の1つ。各行に複数バージョンを保持し、トランザクション毎に「見える」バージョンを管理する仕組み:
- 読み込みでは絶対にブロックしない (no read lock)
- 書き込み中も並行read 継続
- VACUUM で古いバージョンをクリーンアップ
- MySQL InnoDB と類似だが実装は異なる
主要機能
| 機能 | 内容 |
|---|---|
| ACID | 完全準拠 |
| MVCC | 標準 |
| JSON / JSONB | 標準 (GIN index 可) |
| 全文検索 | 標準 (tsvector) |
| GIS | PostGIS 拡張 |
| Time-Series | TimescaleDB / pg_partman |
| Foreign Data Wrapper | 標準 |
| 論理レプリケーション | 14+ |
| パーティショニング | 標準 (Range / List / Hash) |
| Window Function | 標準 (SQL:2003) |
| CTE / Recursive CTE | 標準 |
| 拡張機能 | 1000+ (TimescaleDB / pgvector / PostGIS等) |
主要拡張
| 拡張 | 用途 |
|---|---|
| PostGIS | 地理空間 |
| TimescaleDB | 時系列 |
| pgvector | ベクトル検索 (AI) |
| Citus | 分散DB |
| Hypopg | 仮想インデックス |
| pg_stat_statements | クエリ統計 |
| pg_partman | パーティション管理 |
| pg_trgm | あいまい検索 |
主要採用企業
| 企業 | 用途 |
|---|---|
| Apple | iCloud バックエンド |
| 主要DB | |
| Spotify | プレイリスト |
| 投稿管理 | |
| Yandex | 検索インデックス |
| Coursera | コースデータ |
| Skype | 通話履歴 (旧) |
クラウド・マネージド・サーバレス
| サービス | 提供元 |
|---|---|
| Amazon RDS / Aurora PostgreSQL | AWS |
| Google Cloud SQL / AlloyDB | GCP |
| Azure Database for PostgreSQL | Microsoft |
| Supabase | Supabase Inc. (Firebase 代替) |
| Neon | Neon Inc. (Serverless / Branching) |
| Crunchy Data | Crunchy |
| Aiven | Aiven |
| PlanetScale (Vitess 風) | MySQL 系だが PostgreSQL 対応中 |
関連用語との違い
- vs MySQL: MVCC / 標準準拠が強い (PG) / 性能重視 (MySQL)
- vs SQLite: 大規模 / 組込み
- vs DuckDB: OLTP / OLAP
FAQ
Q1: PostgreSQL vs MySQL 選び方? A: 複雑クエリ / 標準SQL / 拡張機能 / GIS なら PG。Web / 単純 OLTP / 大量Read ならMySQL。
Q2: pgvector とは? A: AI / 機械学習用のベクトル類似検索拡張 (2023-)。OpenAI Embeddings 等のRAG (Retrieval Augmented Generation) に最適、PostgreSQL を AIデータベース化。
Q3: PG17 の主要変更? A: 論理レプリケーション Failover 対応・Vacuum 高速化 (1/5 メモリ)・Buffer I/O 大幅改善・SQL/JSON 構文強化。