PgQue – BloatのないPostgresキュー
(github.com/NikolayS)- 単一のSQLファイルでインストールでき、
pg_cronだけで駆動(tick) - Skype時代のPgQアーキテクチャを純粋なPL/pgSQLで再実装したPostgres組み込みメッセージキューで、C拡張や外部デーモンなしに managed Postgres ですぐ利用可能
- 従来のSKIP LOCKEDキューに付きものだったdead tupleの蓄積とVACUUM負荷を、スナップショットベースのバッチ処理 +
TRUNCATEテーブルローテーションで根本的に排除し、数カ月運用しても性能劣化なし - Kafkaトピックに似た共有イベントログ + コンシューマごとの独立カーソル構造によりネイティブなfan-outをサポート — データ複製なしで複数のサブスクライバがすべてのイベントを独立して受信
- エンドツーエンドの配信レイテンシはデフォルト設定で約1〜2秒(tick間隔 + ポーリング間隔)、個別の
send/receive/ack呼び出しはマイクロ秒レベル - 予備ベンチマークでは PL/pgSQL の insert が約86k ev/s、コンシューマ読み取りは約2.4M ev/s、30分継続テストでも dead tuple の増加はゼロ
pgque.send(),pgque.receive(),pgque.ack()などのSQL APIベースなので、Python、Go、TypeScript など言語を問わずあらゆる Postgres ドライバで動作- RDS、Aurora、Cloud SQL、AlloyDB、Supabase、Neon など主要な managed Postgres プロバイダすべてに対応し、別途ビルドやプロバイダ承認は不要
- 3つのロール(pgque_reader、pgque_writer、pgque_admin)ベースの権限分離を内蔵し、アプリケーションユーザーに superuser は不要
- PgQ自体は Skype の数億人規模で10年以上プロダクション検証されているが、PgQue はプロダクトとしては初期段階(v0.1)
- Apache-2.0ライセンス
まだコメントはありません。