0Pricing
SQL Academy · Lektion

Citus und verteiltes Postgres

Verwenden Sie Citus, um Postgres in eine verteilte Datenbank umzuwandeln, mit gemeinsam platzierten Tabellen und Referenztabellen.

Citus und verteiltes Postgres ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist Citus?

Citus ist eine PostgreSQL-Erweiterung, die einen Cluster aus PG-Servern in eine verteilte Datenbank verwandelt. Sie führen SELECT/INSERT auf dem Coordinator aus; Citus leitet die Abfragen transparent an die richtigen Worker-Shards weiter.

Architektur

Zwei Rollen:

  • Coordinator – empfängt Abfragen, verwaltet die Metadaten des Clusters und übernimmt Routing sowie Aggregation
  • Workers – enthalten die Shard-Daten und führen die eigentlichen Abfragen aus

Einrichtung

Installieren Sie die Erweiterung auf dem Coordinator und den Workern und registrieren Sie anschließend die Worker:

CREATE EXTENSION citus;

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

Verteilte Tabellen

Markieren Sie eine Tabelle anhand einer Spalte als verteilt:

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

Referenztabellen

Kleine Tabellen, die auf jeden Worker repliziert werden – JOINs bleiben lokal:

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

Gemeinsame Platzierung

Tabellen mit derselben Verteilungsspalte werden gemeinsam platziert: Zeilen für eine bestimmte user_id liegen immer auf demselben Worker. JOINs über user_id bleiben lokal:

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

Abfragen für einzelne Mandanten

Citus leitet Abfragen mit einem Filter auf user_id an den richtigen Worker weiter – schnell:

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

Verteilte Aggregationen

Citus führt COUNT/SUM parallel auf den Workern aus:

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

Neuverteilung

Fügen Sie einen Worker hinzu und verteilen Sie die Shards neu:

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

Einschränkungen

  • Transaktionen über nicht gemeinsam platzierte Tabellen sind eingeschränkt
  • Einige PostgreSQL-Funktionen gelten nicht für verteilte Tabellen
  • Schemaänderungen werden weitergegeben, erfordern aber Koordination

Citus Cloud / Azure

Citus wurde von Microsoft übernommen und ist nun Teil von Azure Database for PostgreSQL – Hyperscale (Citus). Die Software ist weiterhin Open Source.

Alternativen

  • YugabyteDB – verteilte, PG-kompatible Datenbank
  • CockroachDB – verteilte Datenbank mit Postgres-Wire-Kompatibilität
  • Pgvector / TimescaleDB – Spezialisierungen für einzelne Knoten

Wann Citus die richtige Wahl ist

Mandantenfähige SaaS-Anwendungen, bei denen die Abfragen der einzelnen Mandanten isoliert sind. Zeitreihendaten, die nach Mandant und Zeit partitioniert werden. Analysen mit paralleler Aggregation.

Zusammenfassung

Citus macht Postgres zu einer verteilten Datenbank.

  • Coordinator und Worker
  • Verteilung nach einer Spalte; gemeinsame Platzierung für lokale JOINs
  • Referenztabellen für gemeinsam genutzte Dimensionen
  • Am besten geeignet für mandantenfähige SaaS-Anwendungen

Kurze Überprüfung

Welchen Vorteil hat es in Citus, zwei verteilte Tabellen anhand desselben Schlüssels „gemeinsam zu platzieren“?

Häufig gestellte Fragen

Ist die Lektion „Citus und verteiltes Postgres“ kostenlos?

Ja — der vollständige Text von „Citus und verteiltes Postgres“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Citus und verteiltes Postgres“?

Verwenden Sie Citus, um Postgres in eine verteilte Datenbank umzuwandeln, mit gemeinsam platzierten Tabellen und Referenztabellen. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Citus und verteiltes Postgres“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Sharding-Strategien: Bereich, Hash, Verzeichnis
  2. Shard-übergreifende Abfragen: Das schwierige Problem
  3. Citus und verteiltes Postgres
  4. Wann Sie NICHT sharden sollten
← Zurück zu SQL Academy