Voltar
Egres: um banco de dados compatível com Postgres para cargas pesadas e multi-tenant

Egres, banco de dados open-source compatível com o protocolo do Postgres, mira cargas pesadas e multi-tenant

Aprofundamento CEVIU

Aprofundamento

O Egres não é fork nem port do Postgres. Segundo o autor, Manish Jain (fundador da Dgraph Labs, autor do Badger e ex-Uber e Google), o projeto só reaproveita a libpg_query. Ele fala o protocolo do Postgres, então psql, drivers e ORMs conectam sem mudança. O código é aberto sob Apache 2.0 e escrito em Zig, escolha ligada à medição por consulta: o controle explícito de cada alocação permite rejeitar um pedido de memória com erro, em vez de derrubar o processo.

A base técnica é um processo único com o sistema de corrotinas zfiber, que cria uma thread por core lógico e mede ticks de CPU por fiber. O armazenamento usa o zdb, uma floresta de LSM trees com compressão de blocos, checksums, MVCC e coleta de lixo. O I/O é direto, com cache S3-FIFO e prioridades de disco (P0 para consultas, P1 e P2 para compactações). A memória passa por um governor que redimensiona o cache a cada 100 ms. No benchmark de 600 milhões de linhas (580 GiB) contra o Postgres 18, numa máquina Ryzen 5950X de 16 cores com 64 GiB por servidor, o Egres teve p50 menor nas quatro consultas, de 2,9x a 226x. As caudas ficaram mistas: na consulta customer, o Postgres foi 33% mais rápido no p95 e p99.

Há limites claros. Esta versão roda em nó único, o código multi-nó ainda não está habilitado, as consultas são só de igualdade e sem joins, e a memória é rastreada apenas no total do processo. A imposição de limites no meio da consulta fica para versões futuras.

Por que isso importa

Para quem opera Postgres com muitos índices, terabytes em disco ou milhares de tenants num nó, a proposta mira dores reais: VACUUM, bloat e falta de contabilidade de custo por consulta. Leitura editorial: sem joins e com nó único, o Egres ainda é um projeto para acompanhar, não para migrar. Os números também vêm do próprio autor, então vale reproduzir o benchmark com a sua carga antes de tirar conclusões.

Linha do tempo

  1. Egres é anunciado como banco open-source com protocolo do Postgres, voltado a cargas pesadas e multi-tenant.

Perguntas frequentes

O Egres é um fork do Postgres?

Não. É um banco novo, escrito em Zig, que só usa a libpg_query do código do Postgres. Ele implementa o protocolo e o SQL do Postgres para que ferramentas existentes continuem funcionando.

O Egres já está pronto para produção com joins e multi-nó?

Ainda não. A versão atual roda em nó único, e o código multi-nó está incluído mas desabilitado. As consultas são básicas, só de igualdade e sem joins, e devem crescer a cada release.

Como o Egres lida com multi-tenancy?

Roda milhares de tenants em um único processo, com CPU, memória e IOPS de disco medidos por consulta e por tenant. Os mecanismos já existem, mas a imposição de limites no meio da consulta fica para versões futuras.

O que o benchmark mostrou contra o Postgres 18?

Em 600 milhões de linhas, o Egres teve p50 menor em todas as consultas, de 2,9x a 226x, e usou 46% menos disco. O Postgres foi melhor com dados cabendo na RAM e 33% mais rápido na cauda da consulta customer. Os números são do autor, e ele publica a metodologia para reprodução.

Fontes

Avalie este artigo:
Categoria
CEVIU Dados
Publicado
29 de outubro de 2026
Editoria
CEVIU Dados

Quer receber mais sobre CEVIU Dados?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser