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 PgQ da era do Skype em PL/pgSQL puro, podendo ser usada diretamente em Postgres gerenciado sem extensão em C nem daemon externo
- Elimina pela raiz os problemas crônicos das filas com SKIP LOCKED — acúmulo de dead tuples e carga de VACUUM — com loteamento baseado em snapshot + rotação de tabelas com TRUNCATE, sem perda 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
- A latência de entrega de ponta a ponta fica em torno de ~1-2 segundos na configuração padrão (intervalo do tick + intervalo de polling), enquanto chamadas individuais de send/receive/ack ficam em nível de microssegundos
- Em benchmark preliminar, 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
- Como é baseado em API SQL com
pgque.send(),pgque.receive(),pgque.ack()etc., funciona em qualquer driver de Postgres, independentemente da linguagem, como Python, Go e TypeScript - Compatível com os principais provedores de Postgres gerenciado, como RDS, Aurora, Cloud SQL, AlloyDB, Supabase e Neon, sem necessidade de build separado ou aprovação do provedor
- Separação de permissões embutida com 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
1 comentários
Um banco de dados realmente tudo em um