PgDog
Ferramenta de escalabilidade horizontal do PostgreSQL que combina pool de conexões, balanceamento de carga e fragmentação distribuída em um único executável.
Sobre PgDog
O PgDog é uma ferramenta de escalabilidade horizontal para PostgreSQL que reúne pool de conexões, balanceamento de carga e recursos de banco de dados distribuído em um único executável. Como pool de conexões, permite que poucas conexões do Postgres atendam mais de 100.000 clientes sem prejudicar os recursos do Postgres; segundo o fornecedor, uma única thread pode processar mais de 50.000 transações por segundo. Como balanceador de carga, distribui consultas de leitura entre réplicas, detecta atraso de replicação e failover do primário, e a aplicação precisa de apenas um ponto de entrada. No modo distribuído, o PgDog extrai a chave de fragmentação das consultas e as encaminha ao fragmento correto; consultas sem chave de fragmentação são executadas em paralelo em todos os bancos de dados. As transações entre fragmentos fazem gravações atômicas com confirmação em duas fases e são revertidas automaticamente em caso de erro; segundo o fornecedor, a conformidade com ACID é mantida em grande escala.
Ideal para
Melhores casos de uso
Atender de forma estável 100.000 conexões de clientes com poucas conexões de banco de dados
Distribuir o tráfego de leitura entre várias réplicas somente leitura e detectar atraso de replicação e failover do primário
Encaminhar consultas ao fragmento correspondente pela chave de fragmentação e executar em paralelo as consultas sem essa chave
Executar transações entre fragmentos e fazer reversão automática em caso de erro para garantir atomicidade
Funcionalidades
Pool de conexões
Compartilha poucas conexões do Postgres entre mais de 100.000 clientes sem prejudicar os recursos do Postgres.
Balanceamento de carga de leitura
Distribui consultas de leitura entre réplicas, detecta atraso de replicação, falhas de hardware e failover do primário; todas as consultas usam um único endpoint.
Fragmentação inteligente
Obtém a chave de fragmentação diretamente da consulta e a envia ao fragmento correto; consultas sem chave de fragmentação são executadas em paralelo em todos os bancos de dados.
Transações entre fragmentos
Usa transações preparadas nativas do Postgres e confirmação em duas fases para gravar atomicamente em todos os fragmentos, com reversão automática em caso de erro.
Vantagens
- Segundo o fornecedor, uma única thread pode processar mais de 50.000 transações por segundo, usando uma arquitetura assíncrona multithread
- Poucas conexões bastam para atender mais de 100.000 clientes sem prejudicar os recursos do Postgres
- Todas as consultas precisam de apenas um endpoint, com detecção automática de atraso de replicação, falhas de hardware e failover do primário
- As transações entre fragmentos usam confirmação em duas fases, com reversão automática em caso de qualquer erro