PgDog
PgDog: PostgreSQLの水平スケーリングを実現する高性能接続プーラー・分散型データベース
PgDogは、PostgreSQLをn倍に拡張するための統合プロキシソリューションです。接続プーラー、ロードバランサー、分散型データベース(シャーディング)の3つの機能を1つの実行ファイルで提供。アプリケーション側の変更を一切行わずに、20TB以上のデータ管理や秒間200万クエリ以上のスループットを実現します。ACID準拠のクロスシャードトランザクションや自動フェイルオーバーなど、エンタープライズ級の機能を備えています。
2026-07-16
--K
PgDog 製品情報
PgDog: PostgreSQLを無限にスケーリングする次世代データベースプロキシ
現代のデータ駆動型アプリケーションにおいて、データベースのスケーラビリティは常に大きな課題です。PgDogは、PostgreSQLのパフォーマンスを最大限に引き出し、水平スケーリングを実現するために設計された画期的なプロキシソリューションです。$5.5Mのシード資金を調達し、すでに本番環境で20TB以上のデータ、秒間200万クエリ以上のトラフィックを処理している実績を誇ります。
PgDogは、単なる接続プーラーではありません。**「接続プーラー」「ロードバランサー」「分散型データベース」**の3つの機能を1つの実行ファイルに集約しており、どこにでもデプロイ可能です。最大の特徴は、**アプリケーション側のコード変更を一切必要としない「ドロップイン・プロキシ」**であることです。
PgDogとは?(What's PgDog)
PgDogは、PostgreSQLのスケーラビリティを「n倍」に高めるための多機能プロキシです。従来のRDS Proxyや既存のミドルウェアでは解決が難しかった「シャーディングの複雑さ」や「大量のクライアント接続」の問題を、PgDogを導入するだけでシンプルに解決できます。
PgDogは、asyncpg、pgx、libpq、ruby-pgといった主要なPostgreSQLドライバと互換性があり、HelmやDockerを使用して迅速にデプロイできます。小規模なプロジェクトから、数千のPodを運用する大規模なエンタープライズ環境まで幅広く対応します。
PgDogの主な特徴(Features)
PgDogは、データベース運用における3つの重要な役割を高いレベルで統合しています。
1. 高性能接続プーラー(Connection Pooler)
PgDogは「真のトランザクションモード」を搭載しており、わずか数個のPostgreSQL接続を10万以上のクライアントで共有することが可能です。
- セッション状態の保持:
SETコマンド、アドバイザリロック、LISTEN/NOTIFYなどのPostgreSQL機能を、接続の固定(pinning)なしで利用できます。 - マルチスレッド・非同期処理: 1スレッドあたり毎秒50,000件以上のトランザクションを処理。クエリの長さや接続数の制限もありません。
- プリペアドステートメント: 全てのクライアントドライバと互換性があり、オーバーヘッドなしで利用可能です。
2. データベース用ロードバランサー(Load Balancer)
PgDogは、データベース層におけるALB(Application Load Balancer)のような役割を果たします。
- ヘルスチェック: 遅延が発生しているレプリカや故障したレプリカを自動的に検出し、クエリの送信を遮断します。
- フェイルオーバー検出: 新しいプライマリを自動検出し、設定変更なしで書き込みトラフィックを移動させます。
- 読み書きの分離: 内部のPostgreSQL SQLパーサーを使用し、
SELECTクエリをレプリカへ、それ以外をプライマリへ自動的にルーティングします。
3. 分散型データベース・シャーディング(Distributed Database)
PgDogを使用すれば、アプリケーションに手を加えることなくPostgreSQLをシャーディングできます。
- クエリベースのシャーディング: クエリから直接シャードキーを抽出し、適切なシャードへ送信します。キーがない場合は全データベースで並列実行されます。
- OLTP & OLAPの高速化: シャード化されたデータベースを通常のPostgreSQLと同様に扱えるほか、
GROUP BYやCOUNT()、ORDER BYなどの集計処理を「スキャッター/ギャザー」エンジンとして高速に実行します。 - 柔軟なシャード構成: 標準的なPostgreSQLデータ型に対応し、設定ベースでデータ分布を制御できます。
分散環境での一貫性と信頼性
PgDogはスケーラビリティのために一貫性を犠牲にしません。ACID準拠を維持したまま拡張可能です。
- クロスシャードトランザクション: 2フェーズコミット(2PC)を利用し、全シャードへのデータ書き込みを原子的に行います。
- レプリケートテーブル: すべてのシャードで同じデータを保持するテーブルを設定でき、シャードローカルなJOINを高速化します。
- ビッグインテジャー主キー: UUIDへの移行は不要です。PgDogがプロキシ内で自動的に単調増加するBigInt主キーを生成します。
- シャードキーの更新:
UPDATE文だけで、シャード間での行移動が可能です。 - スキーマの一貫性: DDL(データ定義言語)は自動的にクロスシャードで適用され、AlembicやActiveRecordなどの移行ツールもそのまま動作します。
PgDogの活用事例(Use Case)
多くの企業がPgDogを導入し、PostgreSQLの限界を突破しています。
- Ramp社: RDS ProxyからPgDogに切り替えることで、接続のスケーラビリティを大幅に向上させ、システムのボトルネックを解消しました。
- Earth Genome社: アプリケーション層にあった複雑な地理空間シャーディングロジックをPgDogの設定に移行。40億行のデータを運用しながら、クエリ速度の向上と100%の信頼性を実現しました。
- Modal社: 数千のPodを運用する環境において、PgDogの高い応答性とスケーラビリティを活用しています。
- Tripstack社: PgDogへの移行後、データ投入量が増加し続ける中で100%のアップタイムを維持しています。
インストール方法(How to Use)
PgDogはHelmを使用して簡単に導入できます。以下のコマンドでリポジトリを追加し、インストールを開始してください。
1 helm repo add pgdogdev https://helm.pgdog.dev
2 helm install pgdog pgdogdev/pgdog
設定ファイル(pgdog.toml)を編集することで、データベース接続、ロードバランシング設定、シャーディングテーブルの定義などを柔軟に管理できます。
よくある質問(FAQ)
Q: PgDogを導入するためにアプリケーションのコードを変更する必要はありますか? A: いいえ、必要ありません。PgDogはドロップイン・プロキシとして動作するため、既存のPostgreSQLドライバをそのまま使用して接続先をPgDogに向けるだけで機能します。
Q: トランザクションの一貫性は保たれますか? A: はい。PgDogはACID準拠を維持しており、2フェーズコミットを使用したクロスシャードトランザクションをサポートしています。エラー発生時には自動的にロールバックが行われます。
Q: どのような種類のクエリがサポートされていますか?
A: 通常のOLTPクエリに加え、GROUP BY、COUNT()、AVG()、ORDER BY、MIN/MAX、COPYなどのOLAP操作もサポートしています。
Q: セッション状態(SETコマンドなど)は保持されますか?
A: はい。PgDogは接続固定(connection pinning)を発生させることなく、SETコマンドやアドバイザリロック、LISTEN/NOTIFYなどのセッション状態を管理できます。
PgDogは、PostgreSQLを運用する全てのエンジニアにとって、スケーラビリティの不安を解消する強力なパートナーです。接続プーラー、ロードバランサー、そしてシャーディング機能を一つのパッケージで手に入れ、データベースのパフォーマンスを次のレベルへ引き上げましょう。








