PgQue – eine Postgres-Queue ohne Bloat
(github.com/NikolayS)- Mit nur einer SQL-Datei installierbar und allein mit
pg_cronbetreibbar (Tick) - Eine in Postgres eingebettete Message-Queue, die die PgQ-Architektur aus der Skype-Ära in reinem PL/pgSQL nachbildet und sich direkt in managed Postgres nutzen lässt – ohne C-Erweiterungen oder externe Daemons
- Beseitigt die chronischen Probleme klassischer SKIP-LOCKED-Queues – angesammelte dead tuples und VACUUM-Last – grundlegend durch snapshot-basierte Batches plus TRUNCATE-Tabellenrotation, sodass es auch nach monatelangem Betrieb keine Performance-Einbußen gibt
- Eine Kafka-Topic-ähnliche Struktur aus gemeinsamem Event-Log und unabhängigen Cursorn pro Consumer unterstützt nativ Fan-out — mehrere Abonnenten können alle Events unabhängig empfangen, ohne Datenreplikation
- Die End-to-End-Übertragungslatenz liegt in der Standardkonfiguration bei ca. 1–2 Sekunden (Tick-Intervall + Poll-Intervall), einzelne
send-/receive-/ack-Aufrufe liegen im Mikrosekundenbereich - Vorläufige Benchmarks: PL/pgSQL-Insert mit etwa 86k ev/s, Consumer-Leseleistung bei ~2.4M ev/s, und in einem 30-minütigen Dauertest keinerlei Zunahme von dead tuples
- Dank SQL-API mit
pgque.send(),pgque.receive(),pgque.ack()usw. funktioniert es sprachunabhängig mit jedem Postgres-Treiber, etwa für Python, Go oder TypeScript - Kompatibel mit allen wichtigen managed-Postgres-Providern wie RDS, Aurora, Cloud SQL, AlloyDB, Supabase und Neon, ohne separaten Build oder Freigabe durch den Provider
- Integrierte Trennung von Berechtigungen über drei Rollen (
pgque_reader,pgque_writer,pgque_admin), sodass für Anwendungsnutzer kein Superuser erforderlich ist - Während PgQ selbst bei Skype im Maßstab von Hunderten Millionen Nutzern über mehr als zehn Jahre produktiv erprobt wurde, befindet sich PgQue als Produkt noch in einer frühen Phase (v0.1)
- Apache-2.0-Lizenz
Noch keine Kommentare.