
In den letzten 16 Jahren hat Greenplum, ein offenes, massiv paralleles DBMS, einer Vielzahl von Unternehmen dabei geholfen, Entscheidungen auf der Grundlage von Datenanalysen zu treffen.
Während dieser Zeit drang Greenplum in verschiedene Geschäftsbereiche vor, darunter Einzelhandel, Fintech, Telekommunikation, Industrie und E-Commerce. Horizontale Skalierung auf Hunderte von Knoten, Fehlertoleranz, Open Source Code, vollständige Kompatibilität mit PostgreSQL, Transaktionsfähigkeit und ANSI SQL - eine bessere Kombination von Eigenschaften für ein analytisches DBMS ist kaum vorstellbar. Ausgehend von riesigen Clustern in globalen Riesenunternehmen wie Morgan Stanley (200 Knoten, 25 Pb Daten) oder Tinkoff (> 70 Knoten) und endend mit kleinen Installationen mit zwei Knoten in gemütlichen Startups entscheiden sich immer mehr Unternehmen für Greenplum. Es ist besonders erfreulich, diesen Trend in Russland zu beobachten - in den letzten zwei Jahren hat sich die Anzahl der großen inländischen Unternehmen, die Greenplum einsetzen, verdreifacht.
Im Herbst 2019 wurde eine weitere wichtige DBMS-Version veröffentlicht. In diesem Artikel werde ich kurz auf die wichtigsten neuen Funktionen von GP 6 eingehen.
Die vorherige Hauptversion von Greenplum Version 5 wurde im September 2017 veröffentlicht. Details finden Sie in
diesem Artikel . Wenn Sie immer noch nicht wissen, was Greenplum ist, finden Sie eine kurze Einführung in
diesem Artikel . Es ist alt, aber die DBMS-Architektur wird korrekt wiedergegeben.
Die aktuelle Version kann zu Recht als kollektive Idee bezeichnet werden: Mehrere Unternehmen aus der ganzen Welt waren an der Entwicklung beteiligt - darunter Pivotal, Arenadata (wo der Autor dieses Artikels arbeitet), Alibaba.
Was ist neu in Greenplum 6?
Replizierte Tabellen
Ich möchte Sie daran erinnern, dass es in Greenplum zwei Arten der Verteilung von Tabellen über einen Cluster gab:
- Zufällige Gleichverteilung
- Verteilung auf ein oder mehrere Felder
In den meisten Fällen wurde das Verknüpfen von zwei Tabellen (JOINs) mit Datenumverteilung zwischen Clustersegmenten während der Abfrageausführung durchgeführt, und nur wenn beide Tabellen ursprünglich über den JOIN-Verknüpfungsschlüssel verteilt wurden, erfolgte dies lokal auf Segmenten, ohne Daten zwischen Segmenten zu übertragen.
GP 6 bietet Architekten ein neues Tool zur Optimierung des Speicherschemas - replizierte Tabellen. Solche Tabellen werden in allen Segmenten des Clusters vollständig dupliziert. Jede Verbindung zu einer solchen Tabelle auf der rechten Seite wird lokal durchgeführt, ohne dass Daten neu verteilt werden. Grundsätzlich dient die Funktion zum Speichern umfangreicher Verzeichnisse.
Abfragebeispiel mit replizierter TabelleCREATE TABLE expand_replicated … DISTRIBUTED REPLICATED; CREATE TABLE expand_random … DISTRIBUTED RANDOMLY; explain select * from expand_rnd a2 left join expand_replicated a3 on a2.gen = a3.gen
Zstandard-Komprimierungsalgorithmus (ZSTD)
Der verlustfreie Komprimierungsalgorithmus, der 2016 von den Facebook-Entwicklern vorgestellt wurde, fiel fast sofort in die Seele unseres Arenadata-Teams, da er im Vergleich zu Zlib (standardmäßig in Greenplum verwendet) höhere Komprimierungsraten aufweist und weniger Zeit für die Komprimierung und Dekomprimierung benötigt wird:
Quelle: cnx-software.comDie Komprimierungseffizienz ist einer der wichtigsten Parameter des modernen analytischen DBMS. Tatsächlich können Sie die Belastung des relativ teuren Festplattensubsystems des Clusters reduzieren, indem Sie relativ billige CPUs laden. Wenn nacheinander große Datenmengen gelesen und geschrieben werden, führt dies zu einer signifikanten Verringerung der Gesamtbetriebskosten des Systems.
Im Jahr 2017 hat unser Team die ZSTD-Unterstützung für Spaltentabellen in Greenplum hinzugefügt. Gemäß der Veröffentlichungsrichtlinie wurde diese Überarbeitung jedoch nicht in die offiziellen Nebenversionen von Greenplum aufgenommen. Bis heute war es nur für gewerbliche Kunden von Arenadata verfügbar, und mit der Veröffentlichung von 6.0 kann es jeder verwenden.
Optimierung der Clustererweiterung (erweitern)
In früheren Versionen von GP hatte die horizontale Clustererweiterung (Hinzufügen neuer Knoten) einige Einschränkungen:
- Obwohl die Datenumverteilung ohne Ausfallzeit im Hintergrund erfolgte, war beim Hinzufügen neuer Knoten ein Neustart des Systems erforderlich
- Der Hashing- und Datenverteilungsalgorithmus erforderte eine vollständige Neuverteilung aller Tabellen während der Erweiterung - der Hintergrunddatenverteilungsprozess kann bei besonders großen Clustern Stunden oder sogar Tage dauern
- Während der Hintergrundverteilung von Tabellen wurde jeder Join nur verteilt
Greenplum 6 führte einen völlig neuen Cluster-Erweiterungsalgorithmus ein, aufgrund dessen:
- Die Erweiterung erfolgt jetzt ohne Neustart des Systems - Ausfallzeiten sind nicht erforderlich
- Mit dem konsistenten Hashing-Algorithmus können Sie beim Hinzufügen von Knoten nur einen Teil der Blöcke neu verteilen, dh die Hintergrundumverteilung von Tabellen funktioniert um ein Vielfaches schneller
- Die Logik zum Ändern von Systemverzeichnissen hat sich geändert - jetzt funktionieren auch während des Erweiterungsprozesses alle Verbindungen (JOINs) wie gewohnt - sowohl lokal als auch verteilt
Jetzt ist die Greenplum-Erweiterung nur noch eine Frage von Minuten und nicht von Stunden. Dadurch können Cluster dem stetig wachsenden Appetit der Geschäftsbereiche folgen.
Sicherheit auf Spaltenebene
Jetzt ist es möglich, Rechte auf bestimmte Spalten in den Tabellen zu verteilen (die Funktion stammt von PostgreSQL):
grant all (column_name) on public.table_name to gpadmin;
Jsonb
Im GP ist jetzt eine binäre, optimale Speicherung von Objekten vom Typ JSON verfügbar. Lesen Sie hier mehr über das Format.
Automatisch erklären
Eine weitere großartige Erweiterung, die von PostgreSQL zum GP kam. Es wurde vom Arenadata-Team so geändert, dass es im verteilten Modus auf dem Greenplum-Cluster funktioniert.
Ermöglicht automatisch das Speichern von Informationen für jede (oder separat genutzte) Anforderung im DBMS über:
- Plan anfordern;
- verbrauchte Ressourcen in jeder Phase der Abfrageausführung in jedem Segment (Knoten);
- Zeitaufwand;
- Die Anzahl der Zeilen, die in jeder Phase der Abfrage in jedem Segment (Knoten) verarbeitet wurden.
Diskquota
PostgreSQL-Erweiterung, mit der Sie den verfügbaren Speicherplatz für einzelne Benutzer und Schemata einschränken können:
select diskquota.set_schema_quota('schema_name', '1 MB'); select diskquota.set_role_quota('user_name', '1 MB');
Neue Arenadata DB-Verteilungsfunktionen
Haftungsausschluss - als nächstes wird es ein paar Werbezeilen geben :)
Ich möchte Sie daran erinnern, dass wir, Arenadata, unsere Datenspeicherplattform auf Basis von Open-Source-Technologien entwickeln, implementieren und unterstützen - Greenplum, Kafka, Hadoop, Clickhouse. Unsere Kunden sind die größten russischen Unternehmen in den Bereichen Einzelhandel, Telekommunikation, Fintech und andere. Einerseits sind wir selbst Mitwirkende an Open-Source-Projekten (Änderungen am Kernel), andererseits entwickeln wir zusätzliche Funktionen, die nur unseren gewerblichen Kunden zur Verfügung stehen. Weiter werden wir über die Hauptmerkmale sprechen.
Tkhemali Connector aka Connector Greenplum -> Clickhouse
In Projekten verwenden wir häufig das Greenplum + Clickhouse-Bündel. Auf der einen Seite können wir damit die besten klassischen Modelle für den Aufbau von Data Warehouses (von Quellen bis zu Data Marts) verwenden, die viele Verbindungen, entwickelte ANSI-SQL-Syntax, Transaktionsfähigkeit und andere Chips von Greenplum erfordern. Auf der anderen Seite, um einer beträchtlichen Anzahl von Benutzern den Zugang zu gebauten breiten Schaufenstern mit maximaler Geschwindigkeit zu ermöglichen - und Clickhouse hat hier keine Konkurrenten.
Um ein solches Bundle effektiv nutzen zu können, haben wir einen speziellen Parallelverbinder entwickelt, mit dem Sie transaktional (dh auch bei einer Rollback-Transaktion konsistent) Daten vom GP an KH übertragen können. Im Allgemeinen verdient die Architektur dieses Connectors einen separaten rein technischen Artikel - tatsächlich mussten wir im Inneren parallele asynchrone Warteschlangen mit einem System implementieren, um die Anzahl der Threads pro Einfügung und Datenfluss dynamisch auszuwählen.
Das Ergebnis ist eine fantastische Interaktionsgeschwindigkeit: In unseren Tests auf typischen SATA-Festplatten erreichen wir bis zu 1 Gbit / s pro Insert auf einem Paar Greenplum-Servern - Clickhouse. Da der durchschnittliche GP-Cluster unserer Kunden aus mehr als 20 Servern besteht, ist die Interaktionsgeschwindigkeit mehr als ausreichend.
Kafka-Stecker
Dasselbe haben wir bei der Integration mit dem Kafka-Nachrichtenbroker getan - wir haben häufig die Aufgabe, Daten von Kafka nach Greenplum im Echtzeitmodus (Sekunden oder Dutzende von Sekunden) zu überladen. Die Connector-Architektur für Kafka ist jedoch anders. Ein Connector ist ein Cluster separater synchronisierter Prozesse (in Docker gestartet) mit automatischer Erkennung, die einerseits Kafka-Konsumenten sind und andererseits Daten direkt in Greenplum-Segmente einfügen. Der Connector kann mit Kafka Registry zusammenarbeiten und stellt die vollständige Konsistenz der übertragenen Daten auch bei Hardwarefehlern sicher.
Management- und Überwachungssystem
Der Betrieb des Systems in der Produktion stellt hohe Anforderungen an die Bereitstellung, Aktualisierung und Überwachung des Clusters. Es ist wichtig, dass alles, was im DBMS geschieht, für den Betrieb und die DBA-Spezialisten transparent ist.
Unser Verwaltungs- und Überwachungssystem Arenadata Cluster Manager (ADCM) bietet Betriebsexperten alle Tools, die sie benötigen. Das Bereitstellen und Aktualisieren des Greenplum-Clusters erfolgt auf Knopfdruck in der grafischen Oberfläche (alle Betriebssysteme, Dienste, Festplattenmontage und Netzwerkeinstellungen werden automatisch vorgenommen). Außerdem erhalten Sie einen vollständig konfigurierten Überwachungsstapel, der zur Integration in Ihre Unternehmenssysteme bereit ist. Übrigens kann Arenadata Cluster Manager nicht nur Greenplum, sondern auch Hadoop, Kafka und Clickhouse verwalten (unsere Assemblys dieser Dienste sind erforderlich. Ihre kostenlosen Versionen wie ADCM selbst können auf unserer
Website absolut kostenlos
heruntergeladen werden , indem Sie einfach das Popup ausfüllen).
Fazit
Wenn Sie Greenplum 5.X verwenden, empfehle ich, in den nächsten 2-3 Monaten ein Upgrade Ihres Clusters auf die aktuelle Version 6.X in Betracht zu ziehen.
Wenn Sie Greenplum noch nicht verwenden, machen Sie mit! Wir, Arenadata, sind immer bereit, Ihnen dabei zu helfen.
Referenzen
Greenplum auf GithubGreenplum Russia Telegram Channel - Stellen Sie Ihre Fragen direkt an Greenplum-Benutzer
Greenplum 6 Dokumentation