SQL Academy · Lektion

Citus och distribuerade Postgres

Använd Citus för att omvandla Postgres till en distribuerad databas med samlokaliserade tabeller och referenstabeller.

Lektion 3 av 415 steg

Citus och distribuerade Postgres är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad är Citus?

Citus är ett PostgreSQL-tillägg som omvandlar ett kluster av PG-servrar till en distribuerad databas. Du kör SELECT/INSERT mot koordinatorn; Citus dirigerar transparent till rätt worker-shards.

Arkitektur

Två roller:

  • Koordinator — tar emot frågor, lagrar klustrets metadata samt dirigerar och aggregerar
  • Worker-noder — lagrar sharddata och kör de faktiska frågorna

Konfigurera

Installera tillägget på koordinatorn och worker-noderna och registrera sedan worker-noderna:

CREATE EXTENSION citus;

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

Distribuerade tabeller

Markera en tabell som distribuerad utifrån en kolumn:

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

Referenstabeller

Små tabeller som replikeras till varje worker-nod – JOIN:ar kan köras lokalt:

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

Samlokalisering

Tabeller med samma distributionskolumn är samlokaliserade: rader för ett visst user_id finns alltid på samma worker-nod. JOIN:ar på user_id körs lokalt:

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

Frågor för en enda tenant

Citus dirigerar frågor som filtrerar på user_id till rätt worker-nod – snabbt:

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

Distribuerade aggregeringar

Citus parallelliserar COUNT/SUM över worker-noderna:

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

Ombalansering

Lägg till en worker-nod och balansera om shards:

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

Begränsningar

  • Transaktioner över icke-samlokaliserade tabeller är begränsade
  • Vissa PostgreSQL-funktioner gäller inte för distribuerade tabeller
  • Schemaändringar sprids vidare men kräver samordning

Citus Cloud / Azure

Citus förvärvades av Microsoft och ingår nu i Azure Database for PostgreSQL – Hyperscale (Citus). Det finns fortfarande också som open source.

Alternativ

  • YugabyteDB — distribuerad och PG-kompatibel
  • CockroachDB — distribuerad och kompatibel med Postgres wire-protokoll
  • Pgvector / TimescaleDB — specialiseringar för en enda nod

När Citus passar bäst

SaaS med flera tenants där varje tenants frågor är isolerade. Tidsserier som partitioneras efter tenant och tid. Analys med parallell aggregering.

Sammanfattning

Citus gör PostgreSQL distribuerat.

  • Koordinator och worker-noder
  • Distribuering efter kolumn; samlokalisering för lokala JOIN:ar
  • Referenstabeller för gemensamma dimensioner
  • Bäst lämpat för SaaS med flera tenants

Snabb kontroll

Vilken är fördelen med att ”samlokalisera” två distribuerade tabeller på samma nyckel i Citus?

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
46
Lektioner
183

Vanliga frågor

Är lektionen ”Citus och distribuerade Postgres” gratis?

Ja – hela texten till ”Citus och distribuerade Postgres” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Citus och distribuerade Postgres”?

Använd Citus för att omvandla Postgres till en distribuerad databas med samlokaliserade tabeller och referenstabeller. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig SQL Academy?

Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Citus och distribuerade Postgres”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här SQL Academy-lektionen?

Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Strategier för sharding: intervall, hash och katalog
  2. Frågor över shards: det svåra problemet
  3. Citus och distribuerade Postgres
  4. När Ni INTE bör använda sharding
← Tillbaka till SQL Academy