17 ポイント 投稿者 xguru 2025-05-08 | 1件のコメント | WhatsAppで共有
  • Rust + Tokioで書かれた PostgreSQLトランザクションプーリング + シャーディング + ロードバランシング ツールで、数百のデータベースと数十万の接続を効率的に管理
  • PgBouncerのように動作しつつ、クエリ解析とレプリケーションまでサポートするPostgreSQL専用のアプリケーション層(OSI L7)プロキシ
  • KubernetesおよびDockerで簡単にデプロイでき、クラスタ構成、ロードバランシング、レプリケーション、マルチシャード管理まで 単一構成で処理可能
  • 独自の論理レプリケーション管理機能により、既存のPostgreSQLクラスタを停止なしでシャーディング拡張できる

主な機能

  • ロードバランシング

    • OSI Layer 7でPostgreSQLクエリベースのトラフィック分散
    • SELECTはレプリカへ、INSERT/UPDATE などはプライマリノードへ自動ルーティング
    • 戦略: round robin, random, least active connections などをサポート
    • 障害発生時はリアルタイムヘルスチェックと自動フェイルオーバー
  • トランザクションプーリング

    • PgBouncerと同様に、セッション/トランザクション単位のプーリングをサポート
    • 数十万のクライアントを少数のPostgreSQL接続で処理可能
  • シャーディングおよびレプリケーション

    • SQL解析によって shard keyを抽出し、該当シャードへクエリを自動転送
    • クロスシャードクエリは 結果をメモリ上で結合し、ユーザーに単一の応答を提供
    • COPY コマンドもシャード単位に分割処理
    • 論理レプリケーションをサポート: 無停止で既存DBをシャーディング拡張可能
  • リアルタイム構成変更

    • PgBouncerスタイルの .toml 設定を使用し、再起動なしで設定変更可能
    • ユーザー別認証、データベース別接続、シャード情報まで設定可能
  • モニタリング

    • 標準PgBouncer管理ポート + OpenMetricsをサポート
    • Datadog連携例とダッシュボードを含む

1件のコメント

 
kaydash 2025-05-08

マルチマスター構成にpatroniを使っていますが、
読み取りリクエストが多い構成であれば、maxscaleのように試してみる価値はありそうです