PgQue – Bloat のない Postgres キュー
(github.com/NikolayS)- SQL ファイル1つでインストールでき、
pg_cronだけで駆動(tick) - Skype 時代の PgQ アーキテクチャ を純粋な PL/pgSQL で再実装した Postgres 内蔵メッセージキュー で、C 拡張や外部デーモンなしに managed Postgres ですぐに利用可能
- 従来の SKIP LOCKED キューの慢性的な問題である dead tuple の蓄積と VACUUM 負荷 を、snapshot ベースのバッチ +
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 ライセンス
1件のコメント
まさにオールインワンDB