EDB Postgres Distributed(PGD)6.5.0
日本語訳|EDB Postgres Distributed(PGD)6.5.0
※GoogleのAutoML Translationを使用して翻訳しております。
![]() |
![]() |
英語原文|EDB Postgres Distributed(PGD)6.5.0
![]() |
![]() |
概要
1. PGD(EDB Postgres Distributed)とは
EDB Postgres Distributed (PGD) は、標準の PostgreSQL、EDB Postgres Extended Server (PGE)、または EDB Postgres Advanced Server (EPAS) を、分散型かつ常時稼働(Always-On)のマルチマスターデータベースプラットフォームへと拡張する統合ソフトウェアスタックです。
最新世代の BDR(Bi-Directional Replication:双方向レプリケーション) を中核として構築されており、外部のプロキシやコンセンサスツールを必要とせず、ローカルノード間、複数データセンター間、マルチリージョンクラウド環境にわたり、マルチマスター論理レプリケーション、クラスタ全体の合意形成、自動競合管理、最大「99.999%(ファイブナイン)」の高可用性を提供します。
2. PGDの主な機能
- マルチマスター(アクティブ・アクティブ)レプリケーション: すべてのデータノードが書き込み可能であり、複数の拠点で同時に読み書きを処理できます。
- コミットスコープ(柔軟な耐久性・一貫性制御):
- Synchronous Commit(同期コミット): リモートノードによる確認(received、replicated、durable、visible)を保証。
- Quorum Commit(クォーラムコミット): 2フェーズコミットを用いて過半数のノードが合意するまでどのノードもローカルコミットを行わない仕組みで、データの不整合や競合を未然に防止。
- CAMO (Commit At Most Once): パートナーノードと連携し、障害発生時の再試行によるトランザクションの二重実行を防止。
- Lag Control(遅延制御): レプリケーション遅延が閾値を超えた場合、元のノードの書き込みスループットを自動的に抑制。
- 自動競合管理(Conflict Management): 「最新の更新を優先(update_if_newer)」、カスタム競合トリガー、カラムレベル競合検出(CLCD)、競合フリー複製データ型(CRDT) などを用いて、データの衝突を自動的に解決。
- 組み込み型 Connection Manager: データベースインスタンス内に組み込まれたレイヤー7プロキシ/コネクションプーラー。書き込みリーダーへの自動ルーティング、レプリカ間での読み取り負荷分散、セッション/トランザクションプーリングを提供。
- Raftコンセンサスレイヤー: 書き込みリーダーの選出、グローバルDDL/DMLロックの管理、クラスタ全体の合意形成を自動処理。
- グローバルシーケンス: SnowflakeId(タイムスタンプ/ノードIDベース)や galloc(グローバル割り当て範囲)により、クラスタ全体で重複しない一意の主キーを生成。
- 階層化テーブル(Tiered Tables)とレイクハウス連携(PGAA): Postgres Analytics Accelerator (PGAA) と連携し、古いコールドデータをオブジェクトストレージ(Apache Iceberg® や Delta Lake)へ自動移行しつつ、同一テーブルとしてSQLから透過的に検索可能。
- 選択的レプリケーション(Selective Replication): レプリケーションセットや行フィルター(row_filter)により、機密データや個人情報(GDPR/CCPA対象データ)を特定リージョン内のみに保持し、共通マスタデータのみをグローバルに複製可能。
- LCR(論理変更レコード)とCDCフェイルオーバーサポート: デコード処理を1回で済ませるデコーディングワーカーや、論理レプリケーションスロットをクラスタ全体で複製するCDCフェイルオーバー機能を提供。
3. PGDのメリット
- 高可用性と待ち時間ゼロのフェイルオーバー: ノードやリージョンで障害が発生しても数秒でトラフィックが自動迂回され、復旧時間目標(RTO)を大幅に短縮(最大99.999%の可用性)。
- ダウンタイムゼロのローリングアップグレード: アプリケーションを停止させることなく、OSのパッチ適用やPostgres/PGDのメジャー/マイナーバージョンアップを1ノードずつ順次実施可能。
- 厳格な分散一貫性の実現: Quorum Commitにより、金融や決済など不整合が許されないワークロードでもデータ不整合(スプリットブレイン)を起こさずに安全に処理。
- データ主権と地域制限への適合: データの所在規制(GDPR、CCPA等)に準拠し、特定国のデータを国内に留めながらグローバルシステムを構築可能。
- 大幅なコスト削減: 階層化ストレージにより、蓄積された履歴データを安価なオブジェクトストレージへオフロードすることで、高性能SSDと比較してストレージコストを最大 18分の1 に削減。
- 運用の簡素化: Connection ManagerやRaftが組み込まれているため、PgBouncer、HARP、etcd などの外部ツールが不要。
4. バージョン 6.5.0 の新機能・変更点
- マルチスレッド対応 Connection Manager:
- エンジンがマルチスレッド化され、CPUコア数に応じて接続処理能力がスケーリング(bdr.conn_mgr_worker_threads で制御)。
- ルーティングや設定更新が別スレッドで処理されるため、スループットが約2.4倍向上しレイテンシが低減。
- PgBouncerスタイルの高速リセットモード(conn_mgr_server_reset_mode = fast)が追加され、トランザクションプーリングのスループットがさらに最大 60% 向上。
- 組み込み監視Web UIおよびREST API(PGD Monitor):
各ノードがバックグラウンドワーカーとして監視Web UIとJSON REST API(/api/v1/)を提供(bdr.monitor_enabled = on で有効化)。クラスタ概要、レプリケーション遅延、Raft状態、クエリ診断、エラーログなどをブラウザから確認可能。 - Prometheus メトリクスエンドポイント:
PGD MonitorがPrometheusテキスト形式の /metrics エンドポイントを標準公開。PGD固有の時系列データ、クラスタ状態、コミットレイテンシヒストグラム、Postgres統計情報をエクスポート可能。 - レプリケーション遅延によるノード自動退出(Node Eviction):
新しいグループオプション evict_node_action(part 等)と evict_node_lag_bytes により、ノードのレプリケーション遅延が設定閾値を超えた場合に自動で切り離し(part)を実行。WALの肥大化によるディスク枯渇障害を防止。 - Quorum Commit のトランザクションストリーミング全モード対応:
Quorum Commit がすべてのストリーミングモード(off, file, writer, auto)に対応。送信元で自動判別してファイルへストリーミングするため、特別な手動設定が不要に。 - 新しい PGD CLI コマンドの追加:
- pgd raft restore: 過半数のノードを喪失した際に、最小限のノード(Witnessノードを優先)を切り離してRaftコンセンサスを復旧するディザスタリカバリコマンド。
- pgd node start / stop / restart: systemd を介さずに pg_ctl を使ってローカルのPostgresインスタンスを直接制御。
- 分析ストレージ/カタログ設定の事前検証:
bdr.alter_node_group_option() で analytics_storage_location や analytics_write_catalog を設定する際、指定先が有効かつ到達可能な読み書きパスであるかを自動検証。 - コミット判定の追跡属性(is_raft)の追加:
bdr.commit_decisions および bdr.bdr_get_commit_decisions() に is_raft カラムが追加され、Raft調整によるコミットか否かを判別可能に。 - PostgreSQL 19 サポートに向けた準備:
PGD 6.5.0 は PGD 6 シリーズの最終機能リリースであり、将来の「PGD 19」統合パッケージモデルへの移行に向けた基盤を整備。 - PGD Essential (PGD-S) パッケージの統合(提供終了):
独立した個別パッケージとしての「PGD Essential」が終了。標準の postgres_distributed リポジトリのパッケージへ統合。





