필사 모드: モダン PostgreSQL 2026 — Postgres 17 / 18 / pgvector / pgvectorscale / pgai / TimescaleDB / PostGIS / Citus 徹底ガイド
日本語> "PostgreSQL is the world's most advanced open source relational database — and in 2026, it is quietly becoming the world's most advanced open source vector database, time-series database, geospatial database, and search engine, too." — Andrew Kane (pgvector author), PGConf NYC 2024
PostgreSQL は 1986 年の UC Berkeley「POSTGRES」プロジェクトに端を発する、もうすぐ 40 歳のデータベースです。それでも 2026 年 5 月のコミュニティでは「過去 5 年は、それまでの 30 年より大きな変化があった」とよく語られます。pgvector が OpenAI・Anthropic 系 RAG の事実上の標準になり、TimescaleDB が時系列市場を吸収し、PostGIS がほぼすべての GIS スタックのデフォルトになり、Supabase・Neon が「Postgres as a Service」を再定義した結果、PostgreSQL は「リレーショナル DB の一つ」ではなく **一つのプラットフォーム** になりました。
本稿では Postgres 17 (2024.9)・Postgres 18 (2025.9) のコア機能、pgvector → pgvectorscale → pgvector.rs → pgai と続くベクター拡張の進化、TimescaleDB・PostGIS・pgRouting といったドメイン拡張、PgBouncer・Pgpool-II によるコネクションプーリング、Citus・Hydra・Tembo・Crunchy Data などの分散/クラウド選択肢、そして pgmustard・Postgres.ai の AI 支援運用ツールまで、まとめて整理します。
1. 2026 年の Postgres — あらゆる DB の代替
2026 年 5 月時点で、PostgreSQL はほぼすべてのデータベース カテゴリにおいて「十分良い」選択肢になっています。DB-Engines Ranking では 2023 年に初めて MySQL を抜き、2024 年の Stack Overflow Developer Survey でも 49.0% の採用率で 1 位に立ち、その流れは 2025 年と 2026 年も継続しています。
| カテゴリ | 伝統的 1 位 | Postgres + 拡張の代替 |
|---|---|---|
| ベクター DB | Pinecone, Weaviate, Qdrant | pgvector + pgvectorscale |
| 時系列 DB | InfluxDB, Prometheus | TimescaleDB |
| 地理情報 DB | Oracle Spatial, Esri SDE | PostGIS + pgRouting |
| 全文検索 | Elasticsearch, OpenSearch | pg_trgm + tsvector + ParadeDB |
| カラムナ / OLAP | ClickHouse, DuckDB | Hydra Columnar + pg_mooncake |
| グラフ DB | Neo4j, ArangoDB | Apache AGE (Postgres 拡張) |
| キュー / イベントバス | Kafka, RabbitMQ | pgmq (Tembo) + NOTIFY/LISTEN |
| キャッシュ | Redis, Memcached | UNLOGGED テーブル + ParadeDB Search |
| 分散 SQL | CockroachDB, Spanner | Citus, pgEdge |
この表が言いたいのは「Postgres が全カテゴリの 1 位」ではなく、「5 つの DB を運用する代わりに、1 つの Postgres で 80% の要件を満たせる」ということです。Stripe・Notion・Linear・Vercel・Cloudflare が自社のメイン DB を Postgres に据えて公言している理由でもあります。
PostgreSQL Global Development Group (PGDG) は毎年 9 月に 1 つのメジャー リリースを出し、5 年間のセキュリティ パッチを提供します。2026 年 5 月時点でアクティブにサポートされているのは 14・15・16・17・18 の 5 系統で、13 は 2025 年 11 月に EOL を迎えました。
2. Postgres 17 (2024.9) — Incremental Backup / MERGE / JSON_TABLE
PostgreSQL 17 は 2024 年 9 月 26 日にリリースされました。ユーザから見て最も目立つ 3 つの強化は **incremental backup / MERGE 改善 / JSON_TABLE** です。
**Incremental Backup**: `pg_basebackup --incremental=manifest_path` の形で、前回のフル バックアップ以降に変更されたページのみをバックアップできるようになりました。これまでは pgBackRest や WAL-G のような外部ツールに頼る必要があった機能が、ようやくコアに入ったわけです。TB クラスの DB で日次バックアップ時間が 8 時間から 30 分に短縮されたという報告が複数公開されています。
フル バックアップ
pg_basebackup -D /backup/full --manifest-checksums=SHA256
インクリメンタル (前日の manifest を参照)
pg_basebackup -D /backup/incr-2026-05-16 \
--incremental=/backup/full/backup_manifest
復元: pg_combinebackup でフル + インクリメンタルをマージ
pg_combinebackup /backup/full /backup/incr-2026-05-16 -o /restore
**MERGE 改善**: SQL 2003 標準で 15 から導入された MERGE に、17 では **RETURNING 句** と **WHEN NOT MATCHED BY SOURCE** が追加されました。UPSERT パターンがよりすっきり書け、特にデータ同期や CDC の適用に有用です。
MERGE INTO orders_summary t
USING new_orders s ON t.order_id = s.order_id
WHEN MATCHED THEN UPDATE SET total = s.total
WHEN NOT MATCHED BY TARGET THEN INSERT VALUES (s.order_id, s.total)
WHEN NOT MATCHED BY SOURCE THEN DELETE
RETURNING merge_action(), t.order_id;
**JSON_TABLE**: SQL/JSON 標準の JSON_TABLE 関数が追加され、JSONB カラムをリレーショナル テーブルのように扱えるようになりました。
SELECT jt.*
FROM events e,
JSON_TABLE(e.payload, '$.items[*]' COLUMNS (
sku TEXT PATH '$.sku',
qty INT PATH '$.qty',
price NUMERIC(10,2) PATH '$.price'
)) jt;
この他に、**VACUUM のメモリ使用量を約 20 分の 1 に削減**、**streaming I/O インターフェース**、**identity column の OVERRIDING 追加**、**pg_stat_statements の query_id 正規化改善** などが入りました。Postgres 17 の全体テーマは「性能と運用性の強化」です。
3. Postgres 18 (2025.9) — Virtual Generated Columns / OAuth2
PostgreSQL 18 は 2025 年 9 月 25 日にリリースされました。大きな変更は **virtual generated columns** と **OAuth2 認証** の二つです。
**Virtual Generated Columns**: これまで generated column は STORED (ディスクに永続化) のみでしたが、18 から VIRTUAL (クエリ時計算) オプションが追加されました。ストレージを消費せずに計算済みカラムをインデックス・ビュー・クエリで使えます。
CREATE TABLE products (
id BIGSERIAL PRIMARY KEY,
price_cents INT NOT NULL,
vat_rate NUMERIC(5,2) NOT NULL DEFAULT 10.0,
price_with_vat NUMERIC(12,2)
GENERATED ALWAYS AS (price_cents * (1 + vat_rate/100) / 100) VIRTUAL
);
CREATE INDEX idx_products_price_with_vat ON products(price_with_vat);
**OAuth2 / OIDC 認証**: 18 から `pg_hba.conf` で `oauth` 認証メソッドがサポートされました。Auth0・Okta・Azure AD・Google Workspace などの IdP が発行する JWT で直接 Postgres にログインできます。従来は PgBouncer・CloudNativePG・Crunchy などの外部レイヤが必要でした。
pg_hba.conf (Postgres 18)
host all all 0.0.0.0/0 oauth issuer="https://auth.example.com" \
scope="postgres" validator="example_validator"
加えて **非同期 I/O** (io_uring ベース、シーケンシャル スキャン・VACUUM の高速化)、**B-tree の skip scan** (複合インデックスの先頭カラムをスキップ)、**UUID v7 サポート**、**論理レプリケーションでのシーケンス複製**、部分的な **temporal table 構文**、**pg_stat_io 列の追加** などが盛り込まれました。18 は 17 以上に「性能寄り」のリリースで、特に SSD/NVMe 環境で io_uring の効果が大きく出ます。
4. pgvector — もっともホットな拡張
pgvector は Andrew Kane が 2021 年に作った拡張で、Postgres に **vector データ型**・**距離演算子** (L2, inner product, cosine)・**HNSW / IVFFlat インデックス** を追加します。2023 年の OpenAI embeddings API の爆発と RAG パターンの標準化と相まって、pgvector は事実上「Postgres でベクターを扱う標準」になりました。
2026 年 5 月時点の最新版は 0.8.x で、AWS RDS・GCP Cloud SQL・Azure Database for PostgreSQL・Supabase・Neon・Crunchy Bridge のすべてで標準提供されています。
CREATE EXTENSION vector;
CREATE TABLE documents (
id BIGSERIAL PRIMARY KEY,
content TEXT NOT NULL,
embedding vector(1536) -- OpenAI text-embedding-3-small
);
-- HNSW インデックス (PG 16+, pgvector 0.5+)
CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
-- top-K 類似度検索
SELECT id, content, embedding <=> '[0.1, 0.2, ...]'::vector AS distance
FROM documents
ORDER BY embedding <=> '[0.1, 0.2, ...]'::vector
LIMIT 10;
pgvector のインデックス選択肢:
- **IVFFlat** (Inverted File with Flat compression): データを K クラスタに分け、クエリ時に近いクラスタのみをスキャン。構築は速いが、データ更新が多いと再構築が必要。
- **HNSW** (Hierarchical Navigable Small World): グラフ ベース インデックス。構築は遅いが動的更新に対応し、一般に再現率が高い。2026 年時点のデフォルト選択肢は HNSW。
pgvector の限界は **インデックスがメモリに収まらないと性能が出ない** ことです。1 億ベクター (1536 次元 float32) は約 600 GB に達し、単一ノードの RAM を簡単に超えます。この問題を解決するために登場したのが次章の pgvectorscale です。
5. pgvectorscale (Timescale, 2024.4) — ディスクベースのベクター インデックス
Timescale は 2024 年 4 月に **pgvectorscale** を PostgreSQL License で OSS 公開しました。中核は **StreamingDiskANN インデックス** — Microsoft Research の DiskANN アルゴリズムを Postgres に移植したもの — と **Statistical Binary Quantization (SBQ)** です。
DiskANN はインデックスの大半をディスクに置きつつ、SSD への 1 回の read で KNN を解く設計です。Timescale のローンチ時のベンチマークでは、単一の m6i.2xlarge (8 vCPU, 32 GB RAM) で **1 億ベクター・再現率 95%・p95 50 ms** を達成したと公表しています。同じワークロードを Pinecone は約 8x s1.x4 pod (約 $1,200/月) で処理するのに対し、pgvectorscale は同一 VM ($230/月程度) で処理できる、という比較が大きな話題になりました。
CREATE EXTENSION vectorscale CASCADE;
CREATE TABLE documents (
id BIGSERIAL PRIMARY KEY,
embedding vector(1536)
);
-- StreamingDiskANN インデックス (ディスクベース)
CREATE INDEX ON documents
USING diskann (embedding vector_cosine_ops)
WITH (storage_layout = 'memory_optimized', num_neighbors = 50);
-- 検索は pgvector と同じ演算子
SELECT id, embedding <=> $1::vector AS dist
FROM documents
ORDER BY embedding <=> $1::vector
LIMIT 10;
pgvectorscale の本質は「ディスク使用量が少ない」ことではなく、「分散システムを立てずに単一の Postgres でベクター インデックスを運用できる」点にあります。1 億〜10 億ベクター規模を 1 ノードで扱えるようになり、「Pinecone / Weaviate を別途運用する」パターンは急速に減りつつあります。
同カテゴリには **lantern** (Lantern Cloud) や **VectorChord** (旧 pgvecto.rs CNPG fork) があり、いずれも「Postgres 内のディスク ベース ベクター インデックス」というビジョンを共有しています。
6. pgvector.rs / pgai — Rust 実装と DB 内埋め込み
**pgvector.rs (VectorChord)**: TensorChord チームが開発した Rust ベースの pgvector 互換拡張です。本家 pgvector が C 実装で単一バックエンド プロセス内で動作するのに対し、pgvector.rs は Rust と pgrx フレームワークで書かれ、より安全で高速なインデックス構築を目指します。2025 年末に VectorChord にリブランドされ、MIT ライセンスで提供されています。
VectorChord の目玉は独自の **rabbit hole** アルゴリズム — IVF の変種で、構築速度が pgvector HNSW の 5〜10 倍速いと発表されています。毎日数億ベクターを再インデックスする RAG パイプラインに向きます。
CREATE EXTENSION vchord CASCADE;
CREATE INDEX ON documents
USING vchordrq (embedding vector_l2_ops)
WITH (options = $$
residual_quantization = true
[build.internal]
lists = []
spherical_centroids = false
$$);
**pgai (Timescale)**: pgai は「Postgres の中で埋め込み生成から LLM 呼び出しまで」をまとめる拡張です。2024 年に登場し、2025 年には pgai Vectorizer という大規模ワークフロー ツールへ拡張されました。
-- SQL から OpenAI 埋め込みを直接呼び出す
SELECT ai.openai_embed(
'text-embedding-3-small',
'PostgreSQL is the world''s most advanced open source database'
);
-- 自動ベクター化
SELECT ai.create_vectorizer(
'public.blog_posts'::regclass,
destination => 'blog_embeddings',
embedding => ai.embedding_openai('text-embedding-3-small', 1536),
chunking => ai.chunking_recursive_character_text_splitter('content'),
scheduling => ai.scheduling_timescaledb()
);
pgai の発想は「データを DB から出して埋め込んで戻すための ETL パイプライン自体を消す」というもの。Anthropic Claude・OpenAI・Cohere・Ollama・Voyage AI・HuggingFace をサポートし、埋め込みは継続的に同期されます。
pgvectorscale と pgai が組み合わさると、「RAG インフラ全体を Postgres の中に置く」というビジョンが現実に動きます。Timescale は 2024〜2025 年でこのメッセージを最も強く押し出している会社です。
7. TimescaleDB — 時系列 + AI ops
TimescaleDB は 2017 年に Timescale Inc. が作った時系列拡張で、中核となる抽象化は **ハイパーテーブル (hypertable)** という自動パーティショニングです。見た目は通常のテーブルですが、時間や空間に基づいて自動的にチャンク分割され、チャンク単位で圧縮・削除・ロールアップが行われます。
CREATE EXTENSION timescaledb;
CREATE TABLE metrics (
time TIMESTAMPTZ NOT NULL,
device_id TEXT NOT NULL,
cpu DOUBLE PRECISION,
mem DOUBLE PRECISION
);
SELECT create_hypertable('metrics', 'time', chunk_time_interval => INTERVAL '1 day');
-- カラムナ圧縮
ALTER TABLE metrics SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'device_id'
);
SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- 連続集計 (continuous aggregate)
CREATE MATERIALIZED VIEW metrics_hourly
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', time) AS hour,
device_id,
avg(cpu) AS avg_cpu
FROM metrics
GROUP BY hour, device_id;
TimescaleDB の魅力は、時系列特化の機能を Postgres SQL でそのまま使えることです。**time_bucket**, **first**, **last**, **lag**, **gap fill** といった関数や、2024 年に導入された **hypercore** (圧縮+行のハイブリッド ストレージ) によって、InfluxDB や Prometheus と直接張り合えます。
2024〜2025 年に Timescale は会社全体を「Postgres + AI ops」へとリポジショニングし、TimescaleDB・pgvector・pgvectorscale・pgai の 4 拡張を束ねて **Timescale Cloud** として提供しています。日本では楽天・ANA、韓国では SK テレコム・カカオモビリティが事例を公開しています。
ライセンスはコアが Apache 2.0、高機能部分が Timescale License (非 AWS SaaS 利用に制限) と二層構造で、AWS RDS で使うには Timescale Cloud 経由となります。
8. PostGIS / pgRouting — 地理情報
**PostGIS** は 2001 年に Refractions Research が作った地理情報拡張で、Postgres に **GEOMETRY** / **GEOGRAPHY** 型と 3000 を超える空間関数を追加します。2026 年 5 月時点の最新版は 3.5.x で、OpenStreetMap・Esri・MapBox・Google Maps の一部バックエンドも PostGIS 上で動いています。
CREATE EXTENSION postgis;
CREATE TABLE places (
id BIGSERIAL PRIMARY KEY,
name TEXT,
location GEOGRAPHY(POINT, 4326)
);
CREATE INDEX places_location_idx ON places USING GIST(location);
-- 半径 500m 以内を検索
SELECT name, ST_Distance(location, my_point) AS dist
FROM places, (SELECT ST_MakePoint(139.7, 35.7)::geography AS my_point) p
WHERE ST_DWithin(location, my_point, 500)
ORDER BY dist
LIMIT 20;
PostGIS は単なる座標格納ではなく、**空間結合**、**Voronoi**、**Convex Hull**、**isochrone**、**空間クラスタリング** (DBSCAN, K-Means)、**ラスタ処理**、**3D メッシュ** といった高度な機能をすべて SQL から提供します。不動産・物流・観光・自動運転・気象産業の事実上すべてのデータ基盤です。
**pgRouting** は PostGIS 上で動作する拡張で、**Dijkstra**, **A***, **TSP** (巡回セールスマン), **bidirectional A***, **Yen's K-shortest path** といったグラフ アルゴリズムを SQL で提供します。OpenStreetMap データをそのまま取り込んでルーティング サービスを構築できます。
-- OSRM 不要で SQL から最短経路
SELECT * FROM pgr_dijkstra(
'SELECT id, source, target, cost FROM ways',
start_node_id, end_node_id, directed => true
);
2024 年から **MobilityDB** (時空間オブジェクト) と **H3-pg** (Uber の H3 hex grid インデックス) が PostGIS エコシステムに合流し、「空間 + 時間 + ベクター」の統合分析が 1 つの DB で可能になりました。日本では JR 東日本の運行分析、韓国ではカカオモビリティ・TMAP・クーパン フルフィルメントで活用されています。
9. PgBouncer / Pgpool-II — コネクション プーリング
Postgres はプロセス モデルなので、コネクション 1 本あたり数十 MB のメモリを消費します。Web/API サーバから数千の短いコネクションが押し寄せると Postgres は膝をつくため、ほぼすべての本番 Postgres の前段には **PgBouncer** か **Pgpool-II** が置かれます。
**PgBouncer** は 2007 年に Skype が作った軽量プーラで、単一プロセスのイベント ループで数万のクライアント コネクションを少数の Postgres サーバ コネクションにマップします。プーリング モードは 3 つ:
- **session pooling**: クライアント セッションの間、同じバックエンドを保持 (デフォルト)
- **transaction pooling**: トランザクション中だけバックエンドを保持し、終了で返却 (もっとも一般的)
- **statement pooling**: ステートメント単位で返却 (制限多数)
pgbouncer.ini
[databases]
mydb = host=postgres.local port=5432 dbname=mydb
[pgbouncer]
listen_port = 6432
pool_mode = transaction
max_client_conn = 10000
default_pool_size = 100
reserve_pool_size = 5
**Pgpool-II** は PgBouncer より重く、機能も豊富です。**プーリング + ロード バランシング + 自動フェイルオーバ + クエリ キャッシュ + パラレル クエリ** を提供します。ただし transaction pooling では prepared statement の互換性に難があり、純粋なプーリングなら PgBouncer、HA とルーティングまでまとめたいときは Pgpool-II という棲み分けです。
2024〜2025 年に **pgcat** (Rust 製、PgBouncer 互換) と **Supavisor** (Supabase の Elixir 製プーラ、ディスク I/O 分離) が登場しました。pgcat はシャーディングとロード バランシングを一プロセスに統合し、Supavisor は Postgres 18 の OAuth2 を活用したマルチテナント プーリングを実現します。
コネクション プーリングは表面的にはインフラの細部に見えますが、Postgres 運用事故の 60% 以上はプーリング設定ミスから始まる、と言われるほど重要です。
10. Citus / Hydra — シャーディング / カラムナ
**Citus** は 2016 年に Citus Data が作り、2019 年に Microsoft が買収した分散 Postgres 拡張です。テーブルを複数のワーカ ノードへ自動でシャーディングし、coordinator がクエリをルーティングします。Azure Cosmos DB for PostgreSQL のバックエンドも Citus です。
CREATE EXTENSION citus;
-- ワーカ ノードの登録
SELECT * FROM master_add_node('worker-1', 5432);
SELECT * FROM master_add_node('worker-2', 5432);
-- テーブルをシャード (distribution column 指定)
SELECT create_distributed_table('orders', 'customer_id');
-- 参照テーブル (全ワーカに複製)
SELECT create_reference_table('countries');
Citus は単純な read スケールアウトに留まらず、**分散トランザクション、分散 JOIN、分散 Postgres 機能** までを提供します。ただしクロス シャード JOIN の性能は distribution column 設計に大きく依存するため、「Citus が本当に光るのはマルチテナント SaaS」というのが定説です。
2024 年は Citus が 11.x → 12.x → 13.x へと素早く進み、13 では論理レプリケーション ベースのゼロ ダウンタイム シャード リバランスが入りました。2024 年後半に Microsoft が Citus チーム要員を削減した、という報道があり、コミュニティは **Hydra Postgres**, **pgEdge**, **Spock** (pgEdge のマルチマスタ複製) などの代替に注目しています。
**Hydra** は Postgres に **カラムナ ストレージ** を追加する拡張です。DuckDB のストレージ エンジンを Postgres に統合した形で、分析ワークロードでは行ストレージより 10〜100 倍速いクエリを示します。
CREATE EXTENSION columnar;
CREATE TABLE events_columnar (
time TIMESTAMPTZ, user_id BIGINT, event_type TEXT, payload JSONB
) USING columnar;
近接プロジェクトには **pg_mooncake** (Iceberg ベースの lakehouse Postgres)、**pg_lakehouse** (ParadeDB)、**pg_analytics** (Hydra の後継プロジェクト) があり、2025〜2026 年の大きな流れは「OLTP は行ストレージ、OLAP は同じ Postgres のカラムナ テーブル」です。
11. Tembo / Crunchy Data — Postgres クラウド
**Tembo** は 2023 年にローンチした Postgres 専用クラウドで、「**Postgres + 拡張マーケット**」を中心メッセージにしています。pgvector・pgvectorscale・pgmq・PostGIS・Hydra Columnar・pg_partman・pg_cron をはじめとする 200 を超える拡張がワン クリックで有効化でき、ワークロード別の事前設定された **「Stack」** (VectorDB Stack, Time-series Stack, OLTP Stack, OLAP Stack) も用意されています。
Tembo の差別化要素は **拡張の信頼性** です。すべての拡張を自動ビルド & テストするレジストリ **Trunk** (`pgt.dev/trunk`) を運営し、ABI 互換性・ライセンス・CVE をトラッキングしています。AWS RDS や GCP Cloud SQL が新しい拡張を追加するのに半年〜2 年かかるのとは対照的です。
**Crunchy Data** は 2012 年から Postgres に注力する会社で、**Crunchy Bridge** (AWS / Azure / GCP のマネージド Postgres)、**Crunchy Postgres for Kubernetes** (PGO operator)、**Crunchy Postgres for VMware** が主力です。政府・金融などコンプライアンス要件が強い市場が主軸で、FedRAMP・HIPAA・PCI-DSS の取得済み Postgres SaaS としては最も歴史があります。
2024 年から Crunchy は **CloudNativePG** (EDB と共同開発の K8s operator) に大きく投資し、Kubernetes 上で Postgres を運用するデファクト operator になりました。**Crunchy Data Warehouse** (2025 年提供開始) は Iceberg + Parquet + Postgres を束ねる lakehouse 製品で、Hydra・pg_mooncake と同じカテゴリで競合します。
比較すると — **Supabase** はフルスタック BaaS、**Neon** はサーバーレス Postgres + ブランチング、**Tembo** は拡張中心の PaaS、**Crunchy Bridge** はエンタープライズ コンプライアンス、**AWS RDS / Aurora** はクラウド統合。1 社が全部を同時に使うことは少ないですが、ワークロード別に異なる Postgres ホスティングを使う構成はもう一般的です。
12. pglogical / pg_partman / pg_cron / pg_repack / pg_stat_statements — 運用拡張
ここまでが「機能追加」中心の拡張だったとすれば、本章は「**運用自動化**」中心の 5 拡張です。
**pg_stat_statements**: Postgres 12 から contrib として同梱されており、事実上すべての本番 Postgres で有効化されている拡張です。クエリ別の呼び出し回数・総時間・平均時間・一時ファイル使用量を集計し、「遅いクエリ TOP 20」を SQL 一発で出せます。
CREATE EXTENSION pg_stat_statements;
SELECT query, calls, mean_exec_time, total_exec_time, rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20;
**pg_partman**: 時間や数値範囲でテーブルを **自動パーティショニング** する拡張です。Postgres コアは declarative partitioning を備えていますが、パーティションの作成 / 削除自動化は自前スクリプトが必要で、pg_partman はこれを cron 一行に縮約します。
SELECT partman.create_parent(
p_parent_table => 'public.events',
p_control => 'created_at',
p_interval => '1 day',
p_premake => 7,
p_start_partition => '2026-05-01'
);
-- pg_cron と組み合わせる
SELECT cron.schedule('partition-maintenance', '0 3 * * *',
$$ SELECT partman.run_maintenance(p_analyze => true) $$);
**pg_cron**: PostgreSQL 内で cron ジョブを実行する拡張です。Citus チームが作成し、AWS RDS・GCP Cloud SQL・Azure・Tembo・Supabase・Neon で標準提供されています。VACUUM、REINDEX、パーティション整理、マテビュー リフレッシュを OS の cron なしで DB 内にスケジュール可能です。
**pg_repack**: 本番テーブルの **bloat 除去** とインデックス再構築を **ロック なし** で行う拡張です。VACUUM FULL はテーブル全体に ACCESS EXCLUSIVE ロックをかけますが、pg_repack は一時テーブルへの複製 + トリガによる同期 + 短いスワップで処理します。本番 DB のディスク回収には不可欠です。
**pglogical**: Postgres の論理レプリケーションをより柔軟にする拡張です。コアの論理レプリケーションは同一バージョン間でのみ動きますが、pglogical は 9.4 → 16 のような大規模バージョン ジャンプ、双方向レプリケーション、列フィルタリングをサポートします。大規模 Postgres 移行 (ブルー / グリーン) の事実上の標準です。
5 拡張に共通するのは「運用担当が自前で書いていたスクリプトを DB に押し込む」ことで、韓国・日本の大規模 Postgres 運用チームでは、ほぼ常にこの 5 つがセット運用されています。
13. pgmustard / Postgres.ai — クエリ プラン + AI
**pgmustard** は英国の 2 人の開発者 (Michael Christofides、Nikolay Samokhvalov) が作った EXPLAIN ANALYZE 可視化ツールです。Postgres の EXPLAIN ANALYZE 出力は読みづらさで有名ですが、pgmustard はこれを視覚化し、「どのノードが遅いか」「なぜ遅いか」「どう直すか」を自然言語で示します。
psql で JSON 形式の EXPLAIN を取得
EXPLAIN (ANALYZE, FORMAT JSON, BUFFERS) SELECT ...;
pgmustard に貼り付け (または CLI 経由)
pgmustard plan.json
2024 年から pgmustard は **インデックス提案** (欠けているインデックスのリコメンド)、**書き換え提案** (クエリ リファクタ)、**bloat 検出** といった自動診断を追加しました。SQL に自信のない開発者でも EXPLAIN の結果に基づいて行動できることが価値の中心です。
**Postgres.ai** は Nikolay Samokhvalov の会社で、主力は **DB Lab** (非本番のシン クローン) と **Postgres AI Bot** です。DB Lab は ZFS/LVM スナップショットを用いて TB クラスの DB を秒単位で複製し、開発者が自分の PR を本番相当データで検証できるようにします。
Postgres AI Bot は 2024 年追加の LLM ベース アシスタントで、「このクエリをどう高速化するか」「このインデックスは使われているか」「このロックはなぜ取られているか」といった質問に EXPLAIN + pg_stat_statements + pg_locks を自動取得して答えます。SRE の一次トリアージを自動化するのが狙いです。
近接カテゴリには **Tigerdata Insights** (Timescale)、**Datadog Database Monitoring**、**PgAnalyze** (最も歴史の長い Postgres APM) があり、2025〜2026 年の大きな流れは「DBA 1 名を LLM が補佐する」です。
14. バックアップ — pgBackRest / Barman / WAL-G / pg_dump
Postgres のバックアップは **物理** (データ ディレクトリ + WAL) と **論理** (SQL ダンプ) の 2 系統に分かれます。両者は用途がほとんど重なりません。
**pg_dump / pg_dumpall**: 公式付属ツールで、SQL あるいはカスタム形式でデータを出力します。小規模 DB (数十 GB 程度)、マイグレーション、テスト用フィクスチャ、アーカイブに適しています。メジャー バージョン ジャンプ時にもっとも安全な方法です。
並列ダンプ (custom format, jobs=8)
pg_dump -Fd -j 8 -f /backup/mydb.dir mydb
復元
pg_restore -d mydb_new -j 8 /backup/mydb.dir
**pgBackRest**: 最も成熟した物理バックアップ ツールで、2026 年 5 月時点では事実上の標準です。**フル + インクリメンタル + 差分バックアップ**、**S3 / GCS / Azure Blob への直接アップロード**、**並列圧縮 / 暗号化**、**PITR** (point-in-time recovery)、**保存時暗号化**、**delta restore** をすべて備えています。
pgbackrest.conf
[global]
repo1-path=/var/lib/pgbackrest
repo1-type=s3
repo1-s3-bucket=mybackups
repo1-s3-region=ap-northeast-1
repo1-retention-full=4
[mydb]
pg1-path=/var/lib/postgresql/17/data
フル バックアップ
pgbackrest --stanza=mydb backup --type=full
PITR 復元
pgbackrest --stanza=mydb restore --target="2026-05-16 12:00:00" --type=time
**Barman**: イタリアの 2ndQuadrant (現 EDB) が作ったツールで、pgBackRest より歴史が長く、テレコム / 金融のような保守的市場で広く使われます。Streaming WAL receiver、rsync ベース、多サーバ管理が強みです。
**WAL-G**: Citus Data が作った Go 実装のツールで、**S3 親和性 + 設定の簡潔さ** が強みです。delta バックアップ、暗号化、圧縮をサポートし、AWS / GCP / Azure / Yandex など複数のバックエンドに対応します。
WAL-G の基本プッシュ
WALG_S3_PREFIX=s3://mybackups/mydb wal-g backup-push /var/lib/postgresql/17/data
復元
wal-g backup-fetch /restore LATEST
3 ツールとも **WAL アーカイブ** (`archive_command`) を前提に動くため、「バックアップはあるが PITR が動かない」事故を避けるには `archive_command` の設定と `archive_status` のモニタリングが最重要です。
最後に **pgexporter** は Prometheus 用の Postgres メトリクス エクスポータで、バックアップと組み合わせて運用可観測性を担います。Grafana ダッシュボードと合わせて、バックアップ成功率・WAL ラグ・archive ラグ・接続数を 1 画面で見る運用が定番です。
15. 韓国 / 日本 — Toss、カカオ、NAVER、メルカリ、NTT
**韓国 — Toss**: Toss はおよそ 2020 年から、コア取引システムの一部を Oracle から Postgres に移行し始めました。2024 年に Toss Payments エンジニアリング ブログが「10 TB Postgres + Citus 上のマルチテナント SaaS」の運用事例を公開しています。中核取引 DB は Postgres 16 で、pgBackRest + Patroni + PgBouncer + pg_partman + pg_cron 構成で運用されており、pgvector は推奨・検索などの周辺サービスで活用されています。
**韓国 — カカオ**: 2022 年の SCC 火災を機にカカオは DB マルチリージョン戦略を抜本的に見直し、メッセージング / ペイの一部ワークロードを Postgres + Citus に移しました。2025 年の if(kakao) では Postgres 17 と CloudNativePG と pgvector を束ねた社内 PaaS「Kakao DB Platform」が公開されました。
**韓国 — NAVER**: NAVER のクローバ・検索・ショッピング基盤では Postgres + pgvector + pgvectorscale が RAG / レコメンド / 検索に積極利用されています。2024〜2025 年の NAVER D2 ブログでは「社内 LLM プラットフォームが Postgres ベース」とする記事が複数公開されています。
**日本 — メルカリ**: メルカリはマイクロサービスごとに異なる DB を使いつつ、決済・アカウント・在庫の相当部分が Postgres on Cloud SQL に乗っています。2024 年に Mercari Engineering Blog が pgvector ベースの商品レコメンドを公開し、2025 年には pgvectorscale への移行事例も発表されました。
**日本 — NTT (Fujii Masao, Amit Langote)**: PostgreSQL Global Development Group の主要コミッタのうち 2 名が NTT グループ出身です。**Fujii Masao** (NTT OSS センタ) は streaming replication・pg_basebackup・pg_rewind の主要作者であり、**Amit Langote** (EDB、元 NTT) は declarative partitioning と JSON_TABLE のキー コントリビュータです。日本は NTT・SRA OSS・富士通が PostgreSQL コア開発に最も多くの人員を投じている国であり、これは 2007 年に NTT が「PostgreSQL を日本の基幹 DB へ」という戦略を打ち出したことに起源があります。
**韓国 — PgKR / PostgreSQL Korea User Group**: 韓国 PostgreSQL ユーザ会 (PgKR) は毎年 PgDay を開催し、2025 年には Coupang・LINE+・Hyundai AutoEver の Postgres 事例が発表されました。2026 年は 9 月開催予定です。
16. 誰が Postgres を選ぶべきか — ほぼすべての場合 ✓
2026 年 5 月時点の推奨は、驚くほどシンプルです。
| 状況 | 推奨 |
|---|---|
| 新規プロジェクト — どの DB を使う? | まずは **Postgres** ✓ |
| 小規模 SaaS — Supabase / Neon / RDS / Tembo / Crunchy のどれ? | フルスタックは Supabase、ブランチングが必要なら Neon、拡張の自由度が必要なら Tembo / Crunchy |
| ベクター検索 — Pinecone vs pgvector? | 1 億ベクター以下 + 既存 Postgres あり → **pgvectorscale** |
| 時系列 — InfluxDB vs TimescaleDB? | SQL で問題なければ → **TimescaleDB** (ほぼ常に) |
| 地理情報 — Esri vs PostGIS? | OSS で十分 → **PostGIS**、政府 / 防衛認定が必要 → Esri |
| 分散 SQL — CockroachDB vs Citus? | マルチテナント SaaS → **Citus**、真のグローバル → CockroachDB / Spanner |
| カラムナ OLAP — ClickHouse vs Hydra? | TB 以下で同じ DB に置きたい → **Hydra / pg_mooncake**、PB 規模 → ClickHouse |
| K8s 上の運用 — operator は? | **CloudNativePG** か Zalando Postgres Operator |
| バックアップ — どのツール? | まずは **pgBackRest**、シンプルさ重視なら WAL-G |
Postgres が向かないケースもあります — (1) 超低レイテンシ KV (Redis / DragonflyDB)、(2) グローバルな強整合性 (Spanner)、(3) PB 規模のカラムナ分析 (ClickHouse / Snowflake)、(4) 深さ 10 以上のグラフ トラバーサル (Neo4j)、(5) 全文検索のランキングを深く調整したいケース (Elasticsearch)。この 5 つを除けば、ほぼあらゆる状況で Postgres を第一候補にしても大きな後悔はありません。
最後に — 「Postgres の拡張は強力だが、ホスティングのアロウ リスト (AWS RDS / Cloud SQL / Azure) は必ず先に確認すること」。拡張の自由度が最も高いのは Tembo・Crunchy Bridge・Supabase・Neon・自前運用 (K8s + CloudNativePG) で、RDS は約 50 個ほどに限られます。拡張依存の重いワークロードでは、ホスティング選びがそのまま拡張選びになります。
17. 参考文献 / References
- PostgreSQL 17 release notes — `https://www.postgresql.org/docs/17/release-17.html`
- PostgreSQL 18 release notes — `https://www.postgresql.org/docs/18/release-18.html`
- PostgreSQL versioning policy — `https://www.postgresql.org/support/versioning/`
- pgvector GitHub — `https://github.com/pgvector/pgvector`
- pgvectorscale GitHub — `https://github.com/timescale/pgvectorscale`
- pgvectorscale launch blog — `https://www.timescale.com/blog/pgvector-is-now-as-fast-as-pinecone-at-75-less-cost/`
- pgvector.rs / VectorChord — `https://github.com/tensorchord/VectorChord`
- pgai (Timescale) — `https://github.com/timescale/pgai`
- TimescaleDB docs — `https://docs.timescale.com/`
- PostGIS docs — `https://postgis.net/docs/`
- pgRouting — `https://pgrouting.org/`
- H3-pg — `https://github.com/zachasme/h3-pg`
- PgBouncer — `https://www.pgbouncer.org/`
- Pgpool-II — `https://www.pgpool.net/`
- pgcat — `https://github.com/postgresml/pgcat`
- Supavisor — `https://github.com/supabase/supavisor`
- Citus Data — `https://github.com/citusdata/citus`
- Hydra Postgres — `https://github.com/hydradatabase/hydra`
- pg_mooncake — `https://github.com/Mooncake-Labs/pg_mooncake`
- Tembo — `https://tembo.io/`
- Trunk extension registry — `https://pgt.dev/`
- Crunchy Data — `https://www.crunchydata.com/`
- CloudNativePG — `https://cloudnative-pg.io/`
- Crunchy Postgres for Kubernetes (PGO) — `https://github.com/CrunchyData/postgres-operator`
- pg_stat_statements — `https://www.postgresql.org/docs/current/pgstatstatements.html`
- pg_partman — `https://github.com/pgpartman/pg_partman`
- pg_cron — `https://github.com/citusdata/pg_cron`
- pg_repack — `https://github.com/reorg/pg_repack`
- pglogical — `https://github.com/2ndQuadrant/pglogical`
- pgmustard — `https://www.pgmustard.com/`
- Postgres.ai — `https://postgres.ai/`
- pgBackRest — `https://pgbackrest.org/`
- Barman — `https://pgbarman.org/`
- WAL-G — `https://github.com/wal-g/wal-g`
- pgexporter — `https://pgexporter.github.io/`
- Apache AGE (graph) — `https://age.apache.org/`
- pgmq (Tembo) — `https://github.com/tembo-io/pgmq`
- DB-Engines Ranking — `https://db-engines.com/en/ranking`
- Stack Overflow Developer Survey 2024 — `https://survey.stackoverflow.co/2024/technology`
- Andrew Kane PGConf NYC 2024 talk — `https://www.youtube.com/@PostgresConf`
- Mercari Engineering Blog — `https://engineering.mercari.com/en/blog/`
- Toss Tech Blog — `https://toss.tech/`
- カカオ if(kakao) — `https://if.kakao.com/`
- NAVER D2 — `https://d2.naver.com/`
- PgKR / PostgreSQL Korea — `https://postgresql.kr/`
- Fujii Masao (NTT) — `https://www.postgresql.org/community/contributors/`
- Amit Langote (EDB, 元 NTT) — `https://www.postgresql.org/community/contributors/`
현재 단락 (1/321)
PostgreSQL は 1986 年の UC Berkeley「POSTGRES」プロジェクトに端を発する、もうすぐ 40 歳のデータベースです。それでも 2026 年 5 月のコミュニティでは「過...