PgQue – fila para Postgres sem bloat
(github.com/NikolayS)- Instala com um único arquivo SQL e roda (tick) apenas com
pg_cron - Fila de mensagens embutida no Postgres que reimplementa a arquitetura do PgQ da era do Skype em PL/pgSQL puro, podendo ser usada diretamente em Postgres gerenciado sem extensões em C nem daemons externos
- Elimina pela raiz os problemas crônicos das filas baseadas em
SKIP LOCKED— acúmulo de dead tuples e carga de VACUUM — usando lote baseado em snapshot + rotação de tabelas comTRUNCATE, sem degradação de desempenho mesmo após meses de operação - Estrutura de log de eventos compartilhado + cursor independente por consumidor, semelhante a um tópico do Kafka, com suporte nativo a fan-out — vários assinantes recebem todos os eventos de forma independente sem duplicação de dados
- Latência de entrega fim a fim de ~1–2 segundos na configuração padrão (intervalo de tick + intervalo de polling), com chamadas individuais de
send/receive/ackem nível de microssegundos - Segundo benchmarks preliminares, insert em PL/pgSQL de ~86k ev/s, leitura pelo consumidor de ~2.4M ev/s, e zero aumento de dead tuples em teste contínuo de 30 minutos
- Baseado em API SQL como
pgque.send(),pgque.receive(),pgque.ack()etc., funcionando em qualquer driver de Postgres independentemente da linguagem, como Python, Go e TypeScript - Compatível com os principais provedores de Postgres gerenciado, incluindo RDS, Aurora, Cloud SQL, AlloyDB, Supabase e Neon, sem necessidade de build separado nem aprovação do provedor
- Separação de permissões embutida com base em 3 papéis (
pgque_reader,pgque_writer,pgque_admin), sem exigir superuser para o usuário da aplicação - O próprio PgQ já foi validado em produção por mais de 10 anos na escala de centenas de milhões de usuários do Skype, mas o PgQue ainda está em estágio inicial como produto (v0.1)
- Licença Apache-2.0
Ainda não há comentários.