0Pricing
SQL Academy · Lekcja

Citus i rozproszony Postgres

Używać Citus do przekształcania Postgresa w rozproszoną bazę danych, z tabelami współlokowanymi i tabelami referencyjnymi

Citus i rozproszony Postgres to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Czym jest Citus

Citus to rozszerzenie PostgreSQL, które przekształca klaster serwerów PG w rozproszoną bazę danych. Zapytania SELECT/INSERT są wykonywane względem koordynatora, a Citus w sposób transparentny kieruje je do właściwych shardów workerów.

Architektura

Dwie role:

  • Koordynator — odbiera zapytania, przechowuje metadane klastra oraz kieruje zapytaniami i agreguje wyniki
  • Workery — przechowują dane shardów i wykonują właściwe zapytania

Konfiguracja

Należy zainstalować rozszerzenie na koordynatorze i workerach, a następnie zarejestrować workery:

CREATE EXTENSION citus;

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

Tabele rozproszone

Tabelę można oznaczyć jako rozproszoną według kolumny:

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

Tabele referencyjne

Małe tabele replikowane na każdym workerze — JOIN pozostaje lokalny:

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

Współlokacja

Tabele z tą samą kolumną dystrybucji są współlokowane: wiersze dla danego user_id zawsze znajdują się na tym samym workerze. JOIN-y według user_id pozostają lokalne:

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

Zapytania dotyczące jednego tenanta

Citus kieruje zapytania z filtrem user_id do właściwego workera — szybko:

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

Agregacje rozproszone

Citus wykonuje COUNT/SUM równolegle na workerach:

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

Równoważenie

Należy dodać workera i zrównoważyć shardy:

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

Ograniczenia

  • Transakcje między tabelami, które nie są współlokowane, są ograniczone
  • Niektóre funkcje PostgreSQL nie dotyczą tabel rozproszonych
  • Zmiany schematu są propagowane, ale wymagają koordynacji

Citus Cloud / Azure

Citus został przejęty przez Microsoft — obecnie jest częścią Azure Database for PostgreSQL — Hyperscale (Citus). Nadal jest także dostępny jako oprogramowanie open source.

Alternatywy

  • YugabyteDB — rozproszona baza kompatybilna z PG
  • CockroachDB — rozproszona baza kompatybilna z protokołem sieciowym Postgresa
  • Pgvector / TimescaleDB — specjalizacje dla pojedynczego węzła

Kiedy Citus się sprawdza

Wielodostępne SaaS, w którym zapytania każdego tenanta są od siebie odizolowane. Szeregi czasowe partycjonowane według tenanta i czasu. Analityka z równoległymi agregacjami.

Podsumowanie

Citus rozprasza PostgreSQL.

  • Koordynator i workery
  • Dystrybucja według kolumny; współlokacja na potrzeby lokalnych JOIN-ów
  • Tabele referencyjne dla współdzielonych wymiarów
  • Najlepsze zastosowanie: wielodostępne SaaS

Szybkie sprawdzenie

Jaka jest korzyść ze „współlokowania” dwóch tabel rozproszonych według tego samego klucza w Citus?

Często zadawane pytania

Czy lekcja „Citus i rozproszony Postgres” jest bezpłatna?

Tak — pełny tekst „Citus i rozproszony Postgres” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Citus i rozproszony Postgres”?

Używać Citus do przekształcania Postgresa w rozproszoną bazę danych, z tabelami współlokowanymi i tabelami referencyjnymi Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Citus i rozproszony Postgres”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Strategie shardingu: zakres, hash, katalog
  2. Zapytania między shardami: trudny problem
  3. Citus i rozproszony Postgres
  4. Kiedy NIE stosować shardingu
← Powrót do SQL Academy