Alibaba hat den Code für PolarDB geöffnet, ein verteiltes DBMS auf Basis von PostgreSQL.

Alibaba, eines der größten chinesischen IT-Unternehmen, hat den Quellcode des verteilten DBMS PolarDB, basierend auf PostgreSQL, veröffentlicht. PolarDB erweitert die Funktionen von PostgreSQL um Tools für die verteilte Datenspeicherung mit Integrität und Unterstützung für ACID-Transaktionen im Kontext der gesamten globalen Datenbank, die über verschiedene Clusterknoten verteilt ist. PolarDB unterstützt außerdem die verteilte SQL-Abfrageverarbeitung, Fehlertoleranz und redundante Datenspeicherung, um Informationen wiederherzustellen, nachdem ein oder mehrere Knoten ausgefallen sind. Wenn Sie Ihren Speicher erweitern müssen, können Sie dem Cluster einfach neue Knoten hinzufügen. Der Code ist unter der Apache 2.0-Lizenz geöffnet.

PolarDB besteht aus zwei Komponenten – Erweiterungen und einer Reihe von Patches für PostgreSQL. Patches erweitern die Fähigkeiten des PostgreSQL-Kerns, und Erweiterungen umfassen Komponenten, die separat von PostgreSQL implementiert werden, wie z. B. einen verteilten Transaktionsverwaltungsmechanismus, globale Dienste, einen verteilten SQL-Abfrageprozessor, zusätzliche Metadaten, Tools zum Verwalten des Clusters, zum Bereitstellen eines Clusters und zur Vereinfachung die Migration bestehender Systeme darauf.

Die Patches fügen dem PostgreSQL-Kern eine verteilte Version des Mechanismus zur Steuerung des parallelen Zugriffs auf Daten mithilfe von Multiversion (MVCC, Multiversion Concurrency Control) für verschiedene Isolationsstufen hinzu. Der Großteil der Funktionalität von PolarDB ist in Erweiterungen enthalten, was die Abhängigkeit von PostgreSQL verringert und die Aktualisierung und Implementierung von auf PolarDB basierenden Lösungen vereinfacht (es vereinfacht den Übergang zu neuen Versionen von PostgreSQL und sorgt für die vollständige Kompatibilität mit PostgreSQL). Zur Verwaltung des Clusters wird das pgxc_ctl-Toolkit verwendet, das auf einem ähnlichen Dienstprogramm von PostgreSQL-XC und PostgreSQL-XL basiert.

Ein Cluster besteht aus drei Grundkomponenten: Datenbankknoten (DN), Cluster-Manager (CM) und Transaktionsverwaltungsdienst (TM). Zusätzlich kann ein Proxy-Load-Balancer verwendet werden. Jede Komponente ist ein separater Prozess und kann auf einem anderen Server ausgeführt werden. Datenbankknoten bedienen SQL-Anfragen von Clients und fungieren gleichzeitig als Koordinatoren der verteilten Abfrageausführung unter Beteiligung anderer Datenbankknoten. Der Cluster-Manager überwacht den Status jedes Datenbankknotens, speichert die Clusterkonfiguration und stellt Tools zum Verwalten, Sichern, Lastausgleich, Aktualisieren, Starten und Stoppen von Knoten bereit. Der Transaktionsverwaltungsdienst ist für die Aufrechterhaltung der Gesamtintegrität im gesamten Cluster verantwortlich.

Alibaba hat den Code für PolarDB geöffnet, ein verteiltes DBMS auf Basis von PostgreSQL.

PolarDB basiert auf der verteilten Shared-Nothing-Computing-Architektur, nach der Daten verteilt werden, wenn sie auf verschiedenen Knoten gespeichert werden, ohne dass ein gemeinsamer Speicher für alle Knoten verwendet wird, und jeder Knoten für den mit ihm verbundenen Datenanteil verantwortlich ist und entsprechende Abfragen durchführt zu den Daten. Jede Tabelle wird mithilfe von Hashing basierend auf dem Primärschlüssel in Teile zerlegt (Sharding). Wenn die Anfrage Daten umfasst, die sich auf verschiedenen Knoten befinden, werden ein verteilter Transaktionsausführungsmechanismus und ein Transaktionskoordinator aktiviert, um Atomizität, Konsistenz, Isolation und Zuverlässigkeit (ACID) sicherzustellen.

Um Fehlertoleranz zu gewährleisten, wird jedes Segment auf mindestens drei Knoten repliziert. Um Ressourcen zu sparen, umfassen die vollständigen Daten nur zwei Replikate, und eines ist auf die Speicherung des Write-Back-Protokolls (WAL) beschränkt. Einer der beiden Knoten mit vollständigen Replikaten wird zum Leiter gewählt und nimmt an der Bearbeitung von Anfragen teil. Der zweite Knoten fungiert als Ersatz für das betreffende Datensegment, und der dritte nimmt an der Auswahl des führenden Knotens teil und kann zur Wiederherstellung von Informationen im Falle eines Ausfalls von zwei Knoten mit vollständigen Replikaten verwendet werden. Die Datenreplikation zwischen Clusterknoten wird mithilfe des Paxos-Algorithmus organisiert, der eine konsistente Definition des Konsenses in einem Netzwerk mit potenziell unzuverlässigen Knoten gewährleistet.

Es wird darauf hingewiesen, dass die volle Funktionalität des PolarDB-DBMS in drei Releases verfügbar gemacht werden soll: In der ersten Version werden Tools für Replikation, Hochverfügbarkeit und Cluster-Management veröffentlicht. Die zweite Version wird über ein verteiltes Transaktionsausführungssystem verfügen, das knotenübergreifende ACID- und verteilte SQL-Ausführung unterstützt. Die dritte Version wird ein Plugin für PostgreSQL und Tools für die flexible Datenverteilung über Knoten hinweg enthalten, einschließlich der adaptiven Platzierung von Segmenten zur Erzielung optimaler Leistung und der Möglichkeit, den Cluster durch das Hinzufügen neuer Knoten zu erweitern.

Source: opennet.ru

Kommentar hinzufügen