Die Citus Data, die zu Microsoft gehört, hat die verteilte Datenbank Citus 13.0 veröffentlicht, die als Erweiterung für PostgreSQL 17 realisiert wurde. Citus ermöglicht horizontale Skalierung von PostgreSQL in einem Cluster auf Basis von Standard-Hardware und erlaubt die Verteilung von Daten auf Knoten durch Sharding mit der Konfiguration von Spalten-Partitionierung und Speicherplänen. Für Anwendungen sieht der Citus-Cluster aus wie ein großer PostgreSQL-Server, der die Ressourcen seiner Knoten bündelt. Der Code ist in C geschrieben und wird unter der Lizenz AGPLv3 verteilt.
Sharding ermöglicht die Organisation der Speicherung sehr großer Datenmengen, deren Gesamtgröße erheblich die lokalen Speichermedien jedes Knotens im Cluster übersteigt. Einzelne Tabellen können gezielt auf alle Knoten repliziert werden, um die Ausführung von Merge-Operationen und den Umgang mit Fremdschlüsseln zu beschleunigen. Zum Sparen von Speicherplatz können die über verschiedenen Knoten verteilten Daten komprimiert gespeichert werden.
Verteilte Abfragen können an jeden Knoten des Clusters gesendet werden, aber die Verwaltung und Änderung des Datenschemas muss nur über den Knoten erfolgen, der die Arbeit des Clusters koordiniert. Die von Clients eingehenden Anfragen werden auf die erforderlichen Knoten verteilt und, falls sie mehrere Knoten betreffen, wird ihre Verarbeitung parallelisiert. Der Cluster kann mit dem Wachstum der gespeicherten Daten durch Hinzufügen zusätzlicher Knoten und Initiierung einer Rebalancierung erweitert werden.
Typische Anwendungsbeispiele für Citus sind die Ausführung von Analyseabfragen und die Verarbeitung großer Datenmengen in Form von Zeitreihen (zum Beispiel Protokolle oder Statusabfragen von Sensoren). Citus eignet sich auch zur Modernisierung bestehender Infrastruktur auf Basis von Einzel- Server PostgreSQL, dessen Leistung und Speicher aufgrund zunehmender Last oder Datenmengen nicht mehr ausreicht. Mit dem Toolset Patroni können ausfallsichere Konfigurationen mit replizierten Standby-Knoten erstellt werden, die im Falle eines Ausfalls die Rolle der Hauptknoten übernehmen können.
Änderungen in der Veröffentlichung Citus 13.0:
- Übergang zur Nutzung von PostgreSQL 17.
- Die Möglichkeit, die Funktion JSON_TABLE() in verteilten Abfragen zu verwenden, um Daten aus dem JSON-Format in eine relationale Darstellung zu konvertieren, mit der wie mit herkömmlichen PostgreSQL-Tabellen gearbeitet werden kann.
- Unterstützung der Syntax „MERGE … WHEN NOT MATCHED BY SOURCE“.
- Die Möglichkeit, die Zugriffsstrategie für verteilte partitionierte Tabellen mithilfe des Ausdrucks „CREATE TABLE … USING“ zu definieren und die Zugriffsstrategie über „ALTER TABLE … SET ACCESS METHOD“ zu ändern.
- Unterstützung für die Angabe automatisch generierter Identifikationsspalten in verteilten partitionierten Tabellen hinzugefügt.
- Die Verwendung von Ausschlussbeschränkungen in verteilten partitionierten Tabellen ist erlaubt.
- Probleme mit der Synchronisation von Rollen zwischen den Knoten wurden behoben.
- Die Datenverteilung für Sharding wurde verbessert, wenn neue Knoten zum Cluster hinzugefügt werden.
- Die Befehlsoptionen „MEMORY“ und „SERIALIZE“ wurden zum Befehl „EXPLAIN“ hinzugefügt, mit denen die Größe des verwendeten Speichers und die Zeit bestimmt werden können, die für die Datenkonvertierung zum Netzwerkverkehr aufgewendet wurde.
Quelle: opennet.ru
