0Pricing
SQL Academy · Aula

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

  1. Estratégias de fragmentação: intervalo, hash e diretório
  2. Consultas entre fragmentos: o problema difícil
  3. Citus e PostgreSQL distribuído
  4. Quando NÃO fragmentar
← Voltar para SQL Academy