PgDog: Um Proxy Inteligente para o PostgreSQL com Sharding

2025-04-15
PgDog: Um Proxy Inteligente para o PostgreSQL com Sharding

O PgDog é um proxy de rede que intercepta toda a comunicação entre clientes e servidores do PostgreSQL, compreende SQL para inferir destinos de consultas e não requer alterações no código do aplicativo. Ele analisa consultas SQL, extrai chaves de particionamento, usa a função de hash de particionamento integrada do PostgreSQL e direciona consultas ao shard de banco de dados correto. O artigo detalha como o PgDog lida com protocolos simples e estendidos, consultas entre shards e operações de COPY distribuídas, permitindo, em última análise, o sharding do PostgreSQL e a velocidade de ingestão de dados em escala linear.

Leia mais
Desenvolvimento

Sharding Vertical: Um Pesadelo?

2025-04-13
Sharding Vertical: Um Pesadelo?

O autor relata sua experiência com sharding vertical (sharding funcional), destacando suas armadilhas. Embora alivie a carga do banco de dados, ele fragmenta o aplicativo, forçando a camada de aplicativo a lidar com junções e consultas que deveriam ser tratadas pelo banco de dados. Isso aumenta significativamente a complexidade do código e a sobrecarga de manutenção, e reduz a disponibilidade do sistema. Usando humor e uma fórmula de tempo de atividade, o autor mostra como o sharding vertical reduz a estabilidade do sistema, atrasando, em última análise, os roteiros de produtos e desmoralizando os engenheiros. O artigo termina introduzindo o PgDog, um projeto de código aberto que visa resolver o sharding do Postgres.

Leia mais
Desenvolvimento sharding vertical

PgDog: Projeto Open Source de Shard para pgvector

2025-03-26
PgDog: Projeto Open Source de Shard para pgvector

Escalar o pgvector além de um milhão de embeddings se torna desafiador devido à construção lenta do índice. Este post apresenta o PgDog, um projeto open source que particiona o índice pgvector. Aproveitando as características de agrupamento inerentes do IVFFlat, o PgDog distribui partições do espaço vetorial em várias máquinas. Vetores de consulta são roteados para shards apropriados com base na proximidade com os centroides, calculados usando scikit-learn, melhorando significativamente a velocidade de busca e o recall. Os detalhes da implementação cobrem o cálculo do centroide, uma função de particionamento personalizada e análise de SQL usando pg_query. Experimentos demonstram a eficácia do PgDog, oferecendo otimizações como consultas paralelas entre shards e alocação refinada de centroides. Trabalhos futuros incluem suporte a mais algoritmos de distância e instruções SIMD para cálculos mais rápidos.

Leia mais
Desenvolvimento shard

Sharding do PostgreSQL: Uma história emocionante de escalabilidade 6x

2025-03-14
Sharding do PostgreSQL: Uma história emocionante de escalabilidade 6x

Uma empresa enfrentou um desafio com a capacidade de escrita do PostgreSQL, lidando com 100.000 usuários por segundo. Em vez de migrar para NoSQL, a equipe de engenharia optou por fragmentar seu banco de dados. Eles dividiram o banco de dados em 6 instâncias, sincronizando dados com replicação lógica. Isso envolveu escrever código Ruby e Python para lidar com chaves de fragmentação e ferramentas personalizadas para resolver problemas de sequência. A expansão bem-sucedida de 6x resultou na criação do PgDog, um projeto de código aberto para fragmentação automatizada do PostgreSQL. Esta história destaca a engenhosidade e a determinação dos engenheiros e a escalabilidade do PostgreSQL.

Leia mais
Desenvolvimento sharding de banco de dados