Citus e PostgreSQL distribuído
Use Citus para transformar o PostgreSQL em um banco de dados distribuído, com tabelas colocalizadas e tabelas de referência.
Citus e PostgreSQL distribuído é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
O que é Citus?
O Citus é uma extensão do PostgreSQL que transforma um conjunto de servidores PG em um banco de dados distribuído. Você executa SELECT/INSERT no coordenador; o Citus encaminha as operações aos fragmentos de trabalho corretos de forma transparente.
Arquitetura
Duas funções:
- Coordenador — recebe consultas, mantém os metadados do conjunto, encaminha e agrega
- Servidores de trabalho — armazenam os dados dos fragmentos e executam as consultas de fato
Configuração
Instale a extensão no coordenador e nos servidores de trabalho e depois registre os servidores de trabalho:
CREATE EXTENSION citus;
-- On the coordinator, add worker nodes:
SELECT * FROM master_add_node('worker1', 5432);
SELECT * FROM master_add_node('worker2', 5432);Tabelas distribuídas
Marque uma tabela como distribuída por uma coluna:
CREATE TABLE orders (
id BIGSERIAL,
user_id BIGINT NOT NULL,
total NUMERIC(10,2),
...
);
SELECT create_distributed_table('orders', 'user_id');
-- Citus splits orders into shards by hash(user_id).Tabelas de referência
Tabelas pequenas replicadas para todos os servidores de trabalho — JOIN local:
CREATE TABLE countries (id INT, name TEXT);
SELECT create_reference_table('countries');
-- Every worker has a full copy of countries.Co-localização
Tabelas com a mesma coluna de distribuição são co-localizadas: as linhas de um determinado user_id sempre ficam no mesmo servidor de trabalho. Os JOINs em user_id permanecem locais:
SELECT create_distributed_table('orders', 'user_id');
SELECT create_distributed_table('events', 'user_id', colocate_with => 'orders');Consultas de um único inquilino
O Citus encaminha consultas filtradas por user_id para o servidor de trabalho correto — com rapidez:
SELECT * FROM orders WHERE user_id = 42;
-- Goes to one worker shard, returns in milliseconds.Agregações distribuídas
O Citus paraleliza COUNT/SUM entre os servidores de trabalho:
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Each worker computes locally; coordinator concatenates.Rebalanceamento
Adicione um servidor de trabalho e rebalanceie os fragmentos:
SELECT * FROM citus_add_node('worker3', 5432);
SELECT * FROM rebalance_table_shards('orders');
-- Citus moves some shards onto the new worker.Limitações
- As transações entre tabelas não co-localizadas são limitadas
- Alguns recursos do PostgreSQL não se aplicam a tabelas distribuídas
- As alterações de esquema são propagadas, mas exigem coordenação
Citus Cloud / Azure
O Citus foi adquirido pela Microsoft — agora faz parte do Azure Database for PostgreSQL — Hyperscale (Citus). Ele também continua sendo de código aberto.
Alternativas
- YugabyteDB — distribuído e compatível com PG
- CockroachDB — distribuído e compatível com o protocolo do PostgreSQL
- Pgvector / TimescaleDB — especializações para um único nó
Quando o Citus é a melhor opção
SaaS multi-inquilino em que as consultas de cada inquilino são isoladas. Séries temporais particionadas por inquilino e tempo. Análises com agregação paralela.
Recapitulação
O Citus torna o PostgreSQL distribuído.
- Coordenador e servidores de trabalho
- Distribuição por coluna; co-localização para JOINs locais
- Tabelas de referência para dimensões compartilhadas
- Mais adequado para: SaaS multi-inquilino
Verificação rápida
Qual é o benefício de "co-localizar" duas tabelas distribuídas pela mesma chave no Citus?
Perguntas Frequentes
A aula “Citus e PostgreSQL distribuído” é grátis?
Sim — o texto completo de “Citus e PostgreSQL distribuído” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Citus e PostgreSQL distribuído”?
Use Citus para transformar o PostgreSQL em um banco de dados distribuído, com tabelas colocalizadas e tabelas de referência. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Citus e PostgreSQL distribuído”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estratégias de fragmentação: intervalo, hash e diretório
- Consultas entre fragmentos: o problema difícil
- Citus e PostgreSQL distribuído
- Quando NÃO fragmentar