PgQue – une file d’attente Postgres sans bloat
(github.com/NikolayS)- Installation avec un seul fichier SQL, et fonctionnement (tick) uniquement avec pg_cron
- File de messages intégrée à Postgres qui réimplémente l’architecture PgQ de l’ère Skype en pur PL/pgSQL, utilisable directement sur un Postgres managé sans extension C ni démon externe
- Élimine à la source les problèmes chroniques des files SKIP LOCKED — accumulation de dead tuples et charge VACUUM — grâce à un traitement par lots basé sur des snapshots et à une rotation de tables par TRUNCATE, sans dégradation des performances même après plusieurs mois d’exploitation
- Structure de journal d’événements partagé + curseurs indépendants par consumer, similaire à un topic Kafka, avec prise en charge native du fan-out — plusieurs abonnés peuvent recevoir tous les événements indépendamment, sans duplication des données
- Latence de livraison de bout en bout de ~1 à 2 secondes avec les paramètres par défaut (intervalle de tick + intervalle de polling), et appels
send/receive/ackindividuels au niveau de la microseconde - Selon des benchmarks préliminaires : insertions PL/pgSQL à ~86k événements/s, lecture côté consumer à ~2,4 M événements/s, et zéro augmentation des dead tuples lors d’un test continu de 30 minutes
- API SQL avec
pgque.send(),pgque.receive(),pgque.ack(), etc. : fonctionne avec tous les drivers Postgres, quel que soit le langage, comme Python, Go ou TypeScript - Compatible avec les principaux fournisseurs de Postgres managé : RDS, Aurora, Cloud SQL, AlloyDB, Supabase, Neon, etc., sans build séparé ni validation du fournisseur
- Séparation des droits intégrée avec 3 rôles (
pgque_reader,pgque_writer,pgque_admin), sans besoin de superuser pour l’utilisateur applicatif - Si PgQ lui-même a été validé en production pendant plus de 10 ans à l’échelle de centaines de millions d’utilisateurs chez Skype, PgQue reste encore un produit en phase initiale (v0.1)
- Licence Apache-2.0
1 commentaires
Une vraie base de données tout-en-un