PgDog: Proxy経由でPostgresを水平スケーリングする
PgDogは、水平スケーリングを可能にすることでPostgreSQLのスケーリングの限界を解決するために設計された、高性能なプロキシです。データベースの前にプロキシを配置することで、PgDogは標準的なPostgreSQLインターフェースを維持しながら、100 TB以上のテーブルと毎秒100万クエリ(QPS)へのスケーリングを可能にします。
コア機能とデプロイメント
PgDogは、シャダー(sharder)、コネクションプーラー(connection pooler)、およびロードバランサー(load balancer)として機能します。パフォーマンスと信頼性のためにRustで記述されており、マルチスレッド実行を通じて利用可能なすべてのCPUコアを活用できます。
主なデプロイメントの特徴は以下の通りです:
- Infrastructure Agnostic: オンプレミス、プライベートクラウド、またはDockerイメージを使用したノートPC上にデプロイ可能です。
- Zero Application Changes: ユーザーはアプリケーション設定の
DATABASE_URLを変更するだけでPgDogを実装でき、アプリケーションロジックを書き換える必要はありません。 - Zero Dependencies: 設計により、隠れたサーバーレスコストや外部依存関係を回避します。
パフォーマンスと本番環境でのステータス
PgDogは現在、数十のデプロイメントにわたって本番環境で200万QPS以上を提供しており、20 TB以上のデータをシャードしています。このプロジェクトは、毎週木曜日に新しいバージョンがリリースされる迅速な開発サイクルを維持しています。
従来のPostgresスケーリングとの比較
従来のPostgreSQLスケーリングは、多くの場合、複雑なアプリケーションレイヤーのシャーディングやコア拡張機能の使用を必要とします。PgDogのプロキシベースのアプローチは、Citusのようなツールとは異なり、コア拡張機能としてではなくデータベースの前のレイヤーとして動作するため、デプロイメントを簡素化し、コアデータベースの変更のリスクを低減します。
ユーザー体験と技術的洞察
PgBouncerのようなツールから移行したユーザーからのコミュニティフィードバックでは、いくつかの技術的な利点が強調されています:
- LISTEN/NOTIFY Support: ユーザーは、PgDogがトランザクションプーラーに特有の
LISTEN/NOTIFY問題を正常に解決していると報告しています。 - Aurora Failover: 「auto mode」機能は、AWS Auroraのフェイルオーバーをシームレスにサポートするように設計されています。
- Aurora/RDS/EC2: 創設者たちのInstacartにおけるPostgresのスケーリング経験(RDS、Aurora、EC2にわたって毎分数十万件の食料品配送注文を処理)が、PgDogプロジェクトの技術的基盤を形成しています。
コミュニティの懸念事項と制限事項
多くのユーザーがプロキシの安定性と安定性を称賛する一方で、コミュニティの議論ではいくつかの技術的な懸念が提起されています:
- Configuration Management: 一部のユーザーは、データベースが頻繁に作成・破棄されるKubernetesのマルチテナンシー環境において、TOML設定ファイルのアプローチが扱いにくいと感じています。
- Authentication Caching: パススルー中の認証リクエストがキャッシュされ、ロールのパスワードが変更された際に問題が発生したという報告があります。
- Operational Overhead: 議論では、スケーリングは解決された問題である一方、高可用性(HA)とメジャーバージョンアップグレード(10-20分のダウンタイムが発生する可能性がある)が、セルフマネージドなPostgresユーザーにとって依然として大きな運用上の課題として残っていることが強調されています。
- Enterprise Edition: PgDogは、SLAに裏付けられたサポートを提供するAWSに特化して最適化されたEnterpriseエディションを提供しています。ただし、オープンソース版とEnterprise版の具体的な機能セットの違いについては、詳細は明かされていません。
資金調達とロードマップ
PgDogは、Basis Set、YC、およびPioneer Fundから550万ドルの資金提供を受けている3人体制のチームです。この資金提供により、オークション(runway)を数年分確保し、オープンソースのコアとEnterpriseエディションの開発を継続することが可能になります。