GaussDB(DWS)-Kerntechnologien

GaussDB(DWS) verwendet eine verteilte Shared-Nothing-Architektur, unterstützt hybride Zeilen-Spalten-Speicherung und ist hochverfügbar, zuverlässig, sicher und intelligent.

Shared-Nothing-Architektur

      Jede GaussDB(DWS)-Datenbankinstanz (Datenknoten oder DN) verfügt über eine eigene CPU, einen eigenen Arbeitsspeicher und einen eigenen Speicher. Keine dieser Ressourcen wird gemeinsam genutzt.

      Die Shared-Nothing-MPP-Architektur stellt den uneingeschränkten Zugriff auf CPU-, E/A- sowie Speicherressourcen sicher und die Leistung verbessert sich linear, wenn der Cluster horizontal skaliert wird, wodurch Daten bis zu Petabytes unterstützt werden.

Verteilte Speicherung

      GaussDB(DWS) teilt Tabellen horizontal in Shards auf und verteilt Tupel auf Knoten basierend auf einer konfigurierten Verteilungsrichtlinie. In einer Abfrage können Sie unnötige Daten herausfiltern und die benötigten Daten schnell finden.

      GaussDB(DWS) partitioniert auch Tabellendaten in nichtüberlappende Bereiche.

      Die Partitionierung bietet Ihnen die in der folgenden Tabelle beschriebenen Vorteile.

Tabelle 2-1 Vorteile der Partitionierung

Szenario
Leistung

Zeilen, auf die häufig zugegriffen wird, befinden sich entweder nur in einer oder in mehreren Partitionen.

Der Suchbereich wird erheblich reduziert und die Zugriffsleistung verbessert.

Die meisten Datensätze einer Partition müssen abgefragt oder aktualisiert werden.

Die Leistung wird erheblich verbessert, da nur die spezifischen Partitionen gescannt werden und nicht die gesamte Tabelle.

Datensätze, die in Batches geladen oder gelöscht werden müssen, befinden sich entweder nur in einer oder in mehreren Partitionen.

Die Verarbeitungsleistung wird verbessert, da der Zugriff bzw. das Löschen nur auf wenigen Partitionen erfolgt. Sie können verstreute Vorgänge vermeiden.

Die Datenpartitionierung bietet folgende Vorteile:

  • Bessere Verwaltbarkeit

      Tabellen und Indizes sind in kleinere und besser verwaltbare Einheiten unterteilt. Dadurch können Datenbankadministratoren Daten basierend auf Partitionen verwalten. Die Wartung kann nur für bestimmte Teile einer Tabelle durchgeführt werden.

  • Schnelleres Löschen

      Das Löschen einer Partition ist schneller und effizienter als das Löschen von Zeilen.

  • Schnellere Abfrage

      Sie können den Umfang der zu prüfenden oder zu bearbeitenden Daten mit den folgenden Methoden eingrenzen:

      - ­Partitionsbereinigung:

      Durch Bereinigung oder Eliminierung von Partitionen müssen weniger Partitionen von Coordinator Nodes (CNs) gescannt werden. Diese Funktion verbessert die Abfrageleistung erheblich.

      - Partitionsweise Verbindung:

      Partitionsweise Verbindungen können die Performance verbessern, wenn zwei Tabellen verknüpft werden und mindestens eine von ihnen auf dem Verbindungs-Schlüssel partitioniert ist. Partitionsweise Verbindungen teilen eine große Verbindung in kleinere Verbindungen von „identischen“ Datensätzen auf. „Identisch“ gibt an, dass die Gruppe der Partitionierungs-Schlüsselwerte auf beiden Seiten der Verbindung identisch ist. Nur diese Datensätze werden für die Verbindung verwendet.

Vollständig paralleles Computing

      GaussDB(DWS) verwendet eine Reihe von verteilten Ausführungs-Engines, um die Ressourcen vollständig zu nutzen und die Leistung zu maximieren.

Abbildung 2-1 GaussDB(DWS) vollständig paralleles Computing

Die Kerntechnologien des vollständig parallelen Computing von GaussDB(DWS), wie in der Abbildung oben dargestellt, sind:

  • MPP: Knotenparallelität

      Das verteilte Ausführungs-Framework mit VPP-User-Space-TCP-Protokoll ermöglicht es über 1.000 Servern, parallel mit Zehntausenden von CPUs zu arbeiten.

  • Symmetrisches Multi-Processing (SMP): Parallelität des Operators

      Eine SQL-Anweisung kann in viele Threads aufgeteilt werden, die parallel ausgeführt werden. Multikern-Prozessoren und Non-Uniform Memory Access (NUMA) können eingesetzt werden, um die Vorgänge zu beschleunigen.

  • Single Instruction Multiple Data (SIMD): Parallelität der Anweisungen

      Eine x86- oder Arm-Anweisung kann für Datensätze in Batches ausgeführt werden.

  • Dynamische Kompilierung von Low Level Virtual Machine (LLVM)

      Sie können LLVM verwenden, um Maschinencode anhand von Schlüsselfunktionen zu generieren, wodurch die für die SQL-Ausführung erforderlichen Anweisungen reduziert werden und die Verarbeitung beschleunigt wird.

Hybride Zeilen- und Spaltenspeicherung und vektorisierte Ausführung

      In GaussDB(DWS) können Sie die Zeilen- oder Spaltenspeicherung für Ihre Tabelle verwenden, wie in der folgenden Abbildung dargestellt.

Abbildung 2-2 Hybride GaussDB(DWS)-Speicher-Engine für Reihen-Spalten

      Mit der Spaltenspeicherung können Sie alte, inaktive Daten komprimieren, um Platz freizugeben und so die Kosten für Anschaffung und Betrieb und Wartung zu senken. Die Spaltenspeicher-Komprimierung von GaussDB(DWS) unterstützt Algorithmen wie Delta-Codierung, Dictionary-Komprimierung, RLE, LZ4 und ZLIB und kann automatisch Komprimierungsalgorithmen basierend auf Ihren Dateneigenschaften auswählen. Die durchschnittliche Komprimierungsrate erreicht 7:1. Komprimierte Daten können ohne Dekomprimierung abgerufen werden und sind für Services transparent. Dadurch wird die Wartezeit für den Zugriff auf historische Daten erheblich reduziert.

      Die vektorisierte Ausführung von GaussDB(DWS) kann mehrere Tupel gleichzeitig verarbeiten und so die Effizienz erheblich verbessern. Wenn Sie Zeilen- und Spaltenspeichertabellen gleichzeitig abfragen, kann GaussDB(DWS) automatisch zwischen Zeilen- und Spaltenspeicher-Engines wechseln, um eine optimale Leistung zu erzielen.

Hohe Primär-/Standby-/Sekundär-Verfügbarkeit

      In einem konventionellen System mit zwei Kopien, das aus einem Primär- und einem Standby-Server besteht, kann bei einem defekten Server der andere Server weiterhin Services bereitstellen, aber er kann nur eine Kopie der Daten behalten. Wenn der zweite Server ebenfalls ausfällt, geht diese Kopie dauerhaft verloren. Sie können ein System mit drei Kopien bauen, um dieses Problem zu vermeiden, aber es kostet Sie mehr Speicherkapazität. Zur Senkung der Speicherkosten verfügt GaussDB(DWS) über primäre, sekundäre und Standby-HA-Mechanismen. Selbst wenn ein Server defekt ist, sind noch zwei Datenkopien verfügbar. Dadurch wird im Grunde die gleiche Datenzuverlässigkeit wie beim Drei-Kopien-Mechanismus erreicht, aber mit nur 2/3 des benötigten Speichers.

Abbildung 2-3 Primär-/Standby-/Sekundär-Replikation

      Wie in dieser Abbildung dargestellt, stellt GaussDB(DWS) primäre, sekundäre und Standby-Server bereit. Wenn sie ordnungsgemäß ausgeführt werden, führen die Primär- und Standby-Server eine starke Synchronisierung durch Protokoll-Streams und Datenseiten-Streams durch. Der primäre Server stellt eine Verbindung zum sekundären Server her, sendet jedoch keine Protokolle oder Daten an diesen, sodass der sekundäre Server keine Speicherressourcen belegt. Wenn der Standby-Server ausfällt, sendet der primäre Server alle Protokolle und Daten, die nicht synchronisiert wurden, an den sekundären Server. Der primäre Server startet dann eine starke Synchronisierung mit dem sekundären Server. Dieses Switchover wird in Kernels durchgeführt und wirkt sich nicht auf Transaktionen aus. Es treten keine Fehler oder Inkonsistenzprobleme auf.

      Wenn der primäre Server ausfällt, stuft die Cluster-Verwaltungskomponente den Standby-Server auf den primären Server hoch. Der neue primäre Server startet eine starke Synchronisierung mit dem sekundären Server. Wenn einer der Datenknoten (DNs) in einer DN-Gruppe ausfällt, sind auf diese Weise weiterhin zwei Datenkopien verfügbar, um die Datenzuverlässigkeit zu gewährleisten.

Horizontale Online-Skalierung

      Ein GaussDB(DWS)-Cluster kann bis zu 2.048 Knoten enthalten. Seine Speicher- und Rechenkapazitäten können linear durch das Hinzufügen von Knoten verbessert werden.

      Die Node Group-Technologie von GaussDB(DWS) ermöglicht die parallele horizontale Skalierung mehrerer Tabellen mit einer Geschwindigkeit von bis zu 400 GB pro Stunde auf jedem neuen Knoten. Die folgende Abbildung zeigt den Prozess der horizontalen Skalierung.

Abbildung 2-4 Prozess der horizontalen Skalierung

Die horizontale Skalierung von GaussDB(DWS) hat die folgenden Vorteile:

  • Servicekontinuität

     Datenimport und Abfragen werden während der horizontalen Skalierung nicht unterbrochen.

  • Konsistentes Hashing und parallele horizontale Skalierung mit mehreren Tabellen

      Konsistentes Hashing minimiert die Datenmenge, die während der Neuverteilung migriert werden muss.

      Mehrere Tabellen können parallel verteilt werden. Sie können die Reihenfolge der Neuverteilung angeben.

      Sie können den Fortschritt der Skalierung überprüfen.

  • Lineare Steigerung der Leistung

      GaussDB(DWS) verfügt über eine vollständig parallel verteilte Architektur. Die Leistung beim Laden von Daten, die Verarbeitungsleistung des Service und die Speicherung eines Clusters nehmen linear zu, wenn Knoten hinzugefügt werden.

Transparente Sicherheit

      GaussDB(DWS) unterstützt transparente Datenverschlüsselung. Das Benutzererlebnis wird durch die Verschlüsselung oder Entschlüsselung nicht beeinträchtigt. Jedes Cluster verfügt über einen Cluster-Verschlüsselungsschlüssel (CEK). Jede Datenbank wird mit einem unabhängigen Datenbank-Verschlüsselungsschlüssel (DEK) verschlüsselt. Ein DEK wird mit einem CEK verschlüsselt, um die Sicherheit zu erhöhen. Sie können Kerberos verwenden, um Schlüssel zu beantragen, zu verschlüsseln und zu entschlüsseln und Verschlüsselungsalgorithmen über Konfigurationselemente auf einheitliche Weise zu konfigurieren. Derzeit werden AES- und SM4-Algorithmen unterstützt. Der SM4-Algorithmus unterstützt Hardwarebeschleunigung in Chips von Hi1620 und späteren Versionen.

      Wir helfen Ihnen dabei, mit Big-Data-Analysen Mehrwert zu schaffen und gleichzeitig den Datenschutz zu schützen. Sie können Richtlinien definieren, um bestimmte Spalten zu maskieren und sensible Daten zu schützen. Nachdem eine Datenmaskierungs-Richtlinie wirksam wird, können nur der Administrator und der Tabelleneigentümer auf die Originaldaten zugreifen. Die Maskierung wirkt sich nicht auf die Datenverarbeitung aus. Maskierte Daten können weiterhin für die Berechnung verwendet werden. Die Daten werden nur maskiert, wenn die Datenbank Ergebnisse zurückgibt.

     Die nachfolgende Abbildung zeigt ein Beispiel hierfür. Gehalt, E-Mail-Adresse und Mobiltelefonnummer der Mitarbeiter sind vertrauliche Daten. Diese Daten werden zum Schutz der Privatsphäre in x-Markierungen konvertiert.

Abbildung 2-5 Ergebnisse der Datenmaskierung

Für die Datenmaskierung werden folgende Schlüsseltechnologien verwendet:

  • Benutzerdefinierter Geltungsbereich

      Sie können DDL-Anweisungen ausführen, um Datenmaskierungs-Richtlinien auf bestimmte Spalten anzuwenden.

  • Benutzerdefinierte Richtlinien

      Sie können Datenmaskierungs-Funktionen basierend auf integrierten numerischen, Zeichen- und Zeittyp-Maskierungsfunktionen anpassen.

  • Zugriffssteuerung

      Nachdem die Daten maskiert wurden, können nur der Administrator und der Tabelleneigentümer die Daten sehen.

  • Datenverfügbarkeit

      Maskierte Daten können für die Berechnung verwendet werden, werden jedoch maskiert, wenn die Datenbank Ergebnisse zurückgibt.

SQL-Selbstdiagnose

      Die konventionelle SQL-Leistungsoptimierung, insbesondere in verteilten Datenbanken, ist kompliziert und schwierig. Eine effektive Fehlersuche erfordert umfangreiche Fachkenntnisse und Erfahrung. GaussDB(DWS) analysiert Leistungsprobleme während der SQL-Ausführung intelligent und zeichnet diese auf leicht verständliche Weise auf und präsentiert sie. Sie können ganz einfach lernen, wie Sie Ihre SQL-Anweisungen optimieren sollten, um die Leistung zu verbessern.

Abbildung 2-6 Funktionsweise der SQL-Selbstdiagnose