Skip to content

필사 모드: モダン PostgreSQL 2026 — Postgres 17 / 18 / pgvector / pgvectorscale / pgai / TimescaleDB / PostGIS / Citus 徹底ガイド

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

> "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 月のコミュニティでは「過...

작성 글자: 0원문 글자: 22,488작성 단락: 0/321