0Pricing
SQL Academy · Lezione

Citus e Postgres distribuito

Utilizzi Citus per trasformare Postgres in un database distribuito, con tabelle colocate e tabelle di riferimento.

Citus e Postgres distribuito è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Che cos'è Citus?

Citus è un'estensione di PostgreSQL che trasforma un cluster di server PG in un database distribuito. Esegue SELECT/INSERT sul coordinator; Citus instrada le richieste agli shard corretti sui worker in modo trasparente.

Architettura

Due ruoli:

  • Coordinator — riceve le query, contiene i metadati del cluster, instrada e aggrega
  • Worker — contiene i dati degli shard ed esegue le query effettive

Configurazione

Installi l'estensione sul coordinator e sui worker, quindi registri i worker:

CREATE EXTENSION citus;

-- On the coordinator, add worker nodes:
SELECT * FROM master_add_node('worker1', 5432);
SELECT * FROM master_add_node('worker2', 5432);

Tabelle distribuite

Contrassegni una tabella come distribuita in base a una colonna:

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).

Tabelle di riferimento

Piccole tabelle replicate su ogni worker, così le JOIN rimangono locali:

CREATE TABLE countries (id INT, name TEXT);
SELECT create_reference_table('countries');
-- Every worker has a full copy of countries.

Co-localizzazione

Le tabelle con la stessa colonna di distribuzione sono co-localizzate: le righe di un determinato user_id risiedono sempre sullo stesso worker. Le JOIN su user_id rimangono locali:

SELECT create_distributed_table('orders', 'user_id');
SELECT create_distributed_table('events', 'user_id', colocate_with => 'orders');

Query per un singolo tenant

Citus instrada le query filtrate per user_id al worker corretto: sono veloci:

SELECT * FROM orders WHERE user_id = 42;
-- Goes to one worker shard, returns in milliseconds.

Aggregazioni distribuite

Citus esegue COUNT/SUM in parallelo sui worker:

SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Each worker computes locally; coordinator concatenates.

Ribilanciamento

Aggiunga un worker e ribilanci gli shard:

SELECT * FROM citus_add_node('worker3', 5432);
SELECT * FROM rebalance_table_shards('orders');
-- Citus moves some shards onto the new worker.

Limitazioni

  • Le transazioni tra tabelle non co-localizzate sono limitate
  • Alcune funzionalità di Postgres non si applicano alle tabelle distribuite
  • Le modifiche allo schema vengono propagate, ma richiedono coordinamento

Citus Cloud / Azure

Citus è stato acquisito da Microsoft e ora fa parte di Azure Database for PostgreSQL — Hyperscale (Citus). È ancora open source.

Alternative

  • YugabyteDB — distribuito e compatibile con PG
  • CockroachDB — distribuito e compatibile con il protocollo wire di Postgres
  • Pgvector / TimescaleDB — specializzazioni per il singolo nodo

Quando conviene Citus

SaaS multi-tenant in cui le query di ogni tenant sono isolate. Serie temporali partizionate per tenant e tempo. Analisi con aggregazioni parallele.

Riepilogo

Citus rende Postgres distribuito.

  • Coordinator e worker
  • Distribuzione per colonna, con co-localizzazione per JOIN locali
  • Tabelle di riferimento per le dimensioni condivise
  • Scenario ideale: SaaS multi-tenant

Verifica rapida

Qual è il vantaggio di «co-localizzare» due tabelle distribuite sulla stessa chiave in Citus?

Domande Frequenti

La lezione «Citus e Postgres distribuito» è gratuita?

Sì — il testo completo di «Citus e Postgres distribuito» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Citus e Postgres distribuito»?

Utilizzi Citus per trasformare Postgres in un database distribuito, con tabelle colocate e tabelle di riferimento. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Citus e Postgres distribuito»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Strategie di sharding: intervallo, hash, directory
  2. Query tra shard: il problema più complesso
  3. Citus e Postgres distribuito
  4. Quando NON usare lo sharding
← Torna a SQL Academy