PgDog
接続プール、負荷分散、分散シャーディングを1つの実行ファイルに統合した PostgreSQL 水平スケーリングツール。
PgDogについて
PgDog は PostgreSQL 向けの水平スケーリングツールで、接続プール、負荷分散、分散データベース機能を1つの実行ファイルに統合します。接続プールとして、少数の Postgres 接続で100,000を超えるクライアントに対応し、Postgres の機能を損なわないようにします。ベンダーによると、単一スレッドで毎秒50,000件を超えるトランザクションを処理できます。ロードバランサーとして、レプリカ間で読み取りクエリを分散し、レプリケーション遅延とプライマリの切り替えを検知するため、アプリケーションの入口は1つで済みます。分散モードでは、PgDog がクエリからシャードキーを抽出して正しいシャードにルーティングし、シャードキーのないクエリをすべてのデータベースで並列実行します。クロスシャードトランザクションは2フェーズコミットによるアトミックな書き込みを行い、エラー時に自動ロールバックします。ベンダーによると、大規模環境でも ACID 準拠を維持します。
おすすめの利用者
最適な利用シーン
クライアント接続数が100,000規模に達した際、少数のデータベース接続で安定して対応
複数の読み取り専用レプリカ間で読み取りトラフィックを分散し、レプリケーション遅延とプライマリの切り替えを把握
シャードキーに基づいてクエリを対応するシャードにルーティングし、シャードキーのないクエリを並列実行
クロスシャードトランザクションを実行し、エラー時に自動ロールバックしてアトミック性を確保
機能
接続プール
少数の Postgres 接続を100,000+ クライアント間で共有し、Postgres の機能を損なわない。
読み取り負荷分散
レプリカ間で読み取りクエリを分散し、レプリケーション遅延、ハードウェア障害、プライマリの切り替えを検知。すべてのクエリに1つのエンドポイントだけ。
インテリジェントシャーディング
クエリからシャードキーを直接取得して正しいシャードに送信。シャードキーのないクエリはすべてのデータベースで並列実行。
クロスシャードトランザクション
ネイティブ Postgres プリペアドトランザクションと2フェーズコミットを使用し、すべてのシャードにアトミックに書き込み、エラー時に自動ロールバック。
長所
- ベンダーによると、単一スレッドで毎秒50,000件超のトランザクションを処理でき、マルチスレッド非同期アーキテクチャを採用
- 少数の接続で100,000超のクライアントに対応し、Postgres の機能を損なわない
- すべてのクエリに必要なのは1つのエンドポイントだけで、レプリケーション遅延、ハードウェア障害、プライマリの切り替えを自動検知
- クロスシャードトランザクションは2フェーズコミットを使用し、エラー時に自動ロールバック