Was ist Datenbank-Sharding?

Datenbank-Sharding ist der Prozess, bei dem eine große Datenbank über mehrere Computer hinweg gespeichert wird. Ein einzelner Computer oder Datenbankserver kann nur eine begrenzte Datenmenge speichern und verarbeiten. Datenbank-Sharding überwindet diese Einschränkung, indem Daten in kleinere Chunks, sogenannte Shards, aufgeteilt und auf mehreren Datenbankservern gespeichert werden. Alle Datenbankserver verfügen in der Regel über dieselben zugrunde liegenden Technologien und arbeiten zusammen, um große Datenmengen zu speichern und zu verarbeiten.

Warum ist Datenbank-Sharding wichtig?

Wenn eine Anwendung wächst, nehmen die Anzahl der Anwendungsbenutzer und die darin gespeicherte Datenmenge im Laufe der Zeit zu. Die Datenbank wird zu einem Engpass, wenn das Datenvolumen zu groß wird und zu viele Benutzer versuchen, die Anwendung gleichzeitig zum Lesen oder Speichern von Informationen zu verwenden. Die Anwendung wird langsamer und beeinträchtigt das Kundenerlebnis. Datenbank-Sharding ist eine der Methoden, um dieses Problem zu lösen, da es die parallele Verarbeitung kleinerer Datensätze über Shards hinweg ermöglicht.

Was sind die Vorteile von Datenbank-Sharding?

Unternehmen nutzen Datenbank-Sharding, um die folgenden Vorteile zu nutzen:

Verbessern der Reaktionszeit

Das Abrufen von Daten dauert bei einer einzigen großen Datenbank länger. Das Datenbankmanagementsystem muss viele Zeilen durchsuchen, um die richtigen Daten abzurufen. Im Gegensatz dazu haben Daten-Shards weniger Zeilen als die gesamte Datenbank. Daher braucht es weniger Zeit, bestimmte Informationen aus einer gemeinsam genutzten Datenbank abzurufen oder eine Abfrage auszuführen. 

Vermeiden Sie einen vollständigen Serviceausfall

Wenn der Computer, der die Datenbank hostet, ausfällt, schlägt auch die von der Datenbank abhängige Anwendung fehl. Datenbank-Sharding verhindert dies, indem Teile der Datenbank auf verschiedene Computer verteilt werden. Durch den Ausfall eines der Computer wird die Anwendung nicht heruntergefahren, da sie mit anderen funktionalen Shards arbeiten kann. Sharding wird häufig auch in Kombination mit der Datenreplikation über Shards hinweg durchgeführt. Wenn also ein Shard nicht mehr verfügbar ist, kann auf die Daten von einem alternativen Shard zugegriffen und diese wiederhergestellt werden.

Skalieren Sie effizient

Eine wachsende Datenbank verbraucht mehr Rechenressourcen und erreicht schließlich die Speicherkapazität. Unternehmen können Datenbank-Sharding verwenden, um mehr Rechenressourcen zur Unterstützung der Datenbankskalierung hinzuzufügen. Sie können zur Laufzeit neue Shards hinzufügen, ohne die Anwendung zur Wartung herunterfahren zu müssen.

Wie funktioniert Datenbank-Sharding?

Eine Datenbank speichert Informationen in mehreren Datensätzen, die aus Spalten und Zeilen bestehen. Beim Datenbank-Sharding wird ein einzelner Datensatz in Partitionen oder Shards aufgeteilt. Jeder Shard enthält eindeutige Informationszeilen, die Sie getrennt auf mehreren Computern speichern können, sogenannte Knoten. Alle Shards werden auf separaten Knoten ausgeführt, teilen sich jedoch das Schema oder Design der ursprünglichen Datenbank. 

Eine nicht gemeinsam genutzte Datenbank, die einen Datensatz für Kundendatensätze enthält, könnte beispielsweise so aussehen.

Kunden-ID

Name

Bundesstaat

1

John

Kalifornien

2

Jane

Washington

3

Paulo

Arizona

4

Wang

Georgia

Beim Sharding werden verschiedene Informationszeilen aus der Tabelle getrennt und auf verschiedenen Computern gespeichert, wie im Folgenden gezeigt.

Computer A

Kunden-ID

Name

Bundesstaat

1

John

Kalifornien

2

Jane

Washington

Computer B

Kunden-ID

Name

Bundesstaat

3

Paulo

Arizona

4

Wang

Georgia

Shards

Die partitionierten Datenblöcke werden als logische Shards bezeichnet. Der Computer, der den logischen Shard speichert, wird als physischer Shard oder Datenbankknoten bezeichnet. Ein physischer Shard kann mehrere logische Shards enthalten. 

Shard-Schlüssel

Softwareentwickler verwenden einen Shard-Schlüssel, um zu bestimmen, wie der Datensatz partitioniert werden soll. Eine Spalte im Datensatz bestimmt, welche Zeilen der Datengruppe zusammen einen Shard bilden. Datenbankdesigner wählen einen Shard-Schlüssel aus einer vorhandenen Spalte aus oder erstellen einen neuen.

Shared-Nothing-Architektur

Datenbank-Sharding arbeitet auf einer Shared-Nothing-Architektur. Jeder physische Shard arbeitet unabhängig und kennt keine anderen Shards. Nur die physischen Shards, die die von Ihnen angeforderten Daten enthalten, verarbeiten die Daten parallel für Sie. 

Ein Softwarelayer koordiniert die Datenspeicherung und den Zugriff von diesen verschiedenen Shards. Beispielsweise verfügen einige Arten von Datenbanktechnologien über integrierte automatische Sharding-Funktionen. Softwareentwickler können auch Sharding-Code in ihre Anwendung schreiben, um Informationen aus dem richtigen Shard oder den richtigen Shards zu speichern oder abzurufen. 

Was sind die Methoden des Datenbank-Sharding?

Datenbank-Sharding-Methoden wenden unterschiedliche Regeln auf den Shard-Schlüssel an, um den richtigen Knoten für eine bestimmte Datenzeile zu ermitteln. Im Folgenden sind gängige Sharding-Architekturen aufgeführt.

Bereichsbasiertes Sharding

Bereichsbasiertes Sharding oder dynamisches Sharding teilt Datenbankzeilen basierend auf einem Wertebereich auf. Anschließend weist der Datenbankdesigner dem jeweiligen Bereich einen Shard-Schlüssel zu. Beispielsweise partitioniert der Datenbankdesigner die Daten gemäß dem ersten Buchstaben im Namen des Kunden wie folgt. 

 

Name

Shard-Schlüssel

Beginnt mit A bis I

A

Beginnt mit J bis S

B

Beginnt mit T bis Z

C

 

Beim Schreiben eines Kundendatensatzes in die Datenbank ermittelt die Anwendung den richtigen Shard-Schlüssel, indem sie den Namen des Kunden überprüft. Dann ordnet die Anwendung den Schlüssel ihrem physischen Knoten zu und speichert die Zeile auf diesem Computer. In ähnlicher Weise führt die Anwendung bei der Suche nach einem bestimmten Datensatz eine umgekehrte Übereinstimmung durch.

Vor- und Nachteile

Abhängig von den Datenwerten kann bereichsbasiertes Sharding zur Überlastung von Daten auf einem einzelnen physischen Knoten führen. In unserem Beispiel könnte Shard A (der Namen mit Anfangsbuchstaben A bis I enthält) eine viel größere Anzahl von Datenzeilen enthalten als Shard C (der Namen mit Anfangsbuchstaben T bis I enthält). Es ist jedoch einfacher, zu implementieren.

Gehashtes Sharding

Gehashtes Sharding weist den Shard-Schlüssel jeder Zeile der Datenbank zu, indem eine mathematische Formel verwendet wird, die als Hash-Funktion bezeichnet wird. Die Hash-Funktion nimmt die Informationen aus der Zeile und erzeugt einen Hashwert. Die Anwendung verwendet den Hashwert als Shard-Schlüssel und speichert die Informationen im entsprechenden physischen Shard.

Softwareentwickler verwenden gehashtes Sharding, um Informationen in einer Datenbank gleichmäßig auf mehrere Shards zu verteilen. Beispielsweise teilt die Software Kundendatensätze in zwei Shards mit alternativen Hash-Werten von 1 und 2 auf. 

Name

Hash-Wert

John

1

Jane

2

Paulo

1

Wang

2

Vor- und Nachteile

Obwohl gehashtes Sharding zu einer gleichmäßigen Datenverteilung zwischen physischen Shards führt, teilt es die Datenbank nicht basierend auf der Bedeutung der Informationen auf. Daher könnten Softwareentwickler Schwierigkeiten haben, den Hashwert neu zuzuweisen, wenn sie der Computerumgebung weitere physische Shards hinzufügen. 

Verzeichnis-Sharding

Beim Verzeichnis-Sharding wird eine Nachschlagetabelle verwendet, um Datenbankinformationen mit dem entsprechenden physischen Shard abzugleichen. Eine Nachschlagetabelle ist wie eine Tabelle in einer Kalkulationstabelle, die eine Datenbankspalte mit einem Shard-Schlüssel verknüpft. Das folgende Diagramm zeigt beispielsweise eine Nachschlagetabelle für Kleidungsfarben an.

Farbe

Shard-Schlüssel

Blau

A

Rot

B

Gelb 

C

Schwarz

D

Wenn eine Anwendung Bekleidungsinformationen in der Datenbank speichert, bezieht sie sich auf die Nachschlagetabelle. Wenn ein Kleid blau ist, speichert die Anwendung die Informationen im entsprechenden Shard. 

Vor- und Nachteile

Softwareentwickler verwenden Verzeichnis-Sharding, weil es flexibel ist. Jeder Shard ist eine aussagekräftige Darstellung der Datenbank und ist nicht durch Bereiche begrenzt. Die Verzeichnis-Sharding schlägt jedoch fehl, wenn die Nachschlagetabelle die falschen Informationen enthält. 

Geo-Sharding

Geo-Sharding teilt und speichert Datenbankinformationen nach geografischem Standort. Beispielsweise verwendet eine Website zur Partnervermittlung eine Datenbank, um Kundeninformationen aus verschiedenen Städten wie folgt zu speichern. 

Name

Shard-Schlüssel

John

Kalifornien

Jane

Washington

Paulo

Arizona

Softwareentwickler verwenden Städte als Shard-Schlüssel. Sie speichern die Informationen jedes Kunden in physischen Shards, die sich geografisch in den jeweiligen Städten befinden. 

Vor- und Nachteile

Geo-Sharding ermöglicht es Anwendungen, Informationen schneller abzurufen, da die Entfernung zwischen dem Shard und dem Kunden, der die Anfrage stellt, kürzer ist. Wenn Datenzugriffsmuster überwiegend auf Geografie basieren, funktioniert das gut. Geo-Sharding kann jedoch auch zu einer ungleichmäßigen Datenverteilung führen. 

So optimieren Sie das Datenbank-Sharding für eine gleichmäßige Datenverteilung

Wenn bei bestimmten physischen Shards eine Datenüberlastung auftritt, während andere unterlastet bleiben, führt dies zu Datenbank-Hotspots. Hotspots verlangsamen den Abrufvorgang auf der Datenbank und vereiteln so den Zweck des Daten-Sharding. 

Eine gute Shard-Schlüssel-Auswahl kann Daten gleichmäßig auf mehrere Shards verteilen. Bei der Auswahl eines Shard-Schlüssels sollten Datenbankdesigner die folgenden Faktoren berücksichtigen. 

Kardinalität

Kardinalität beschreibt die möglichen Werte des Shard-Schlüssels. Sie bestimmt die maximale Anzahl möglicher Shards in separaten spaltenorientierten Datenbanken. Wenn der Datenbankdesigner beispielsweise ein Ja/Nein-Datenfeld als Shard-Schlüssel auswählt, ist die Anzahl der Shards auf zwei beschränkt.

Frequenz

Die Frequenz ist die Wahrscheinlichkeit, dass bestimmte Informationen in einem bestimmten Shard gespeichert werden. Beispielsweise wählt ein Datenbankdesigner das Alter als Shard-Schlüssel für eine Fitness-Website. Die meisten Datensätze werden möglicherweise in Knoten für Abonnenten im Alter von 30 bis 45 Jahren aufgenommen und führen zu Datenbank-Hotspots. 

Monotone Änderung

Monotone Änderung ist die Änderungsrate des Shard-Schlüssels. Ein monoton ansteigender oder abnehmender Shard-Schlüssel führt zu unausgeglichenen Shards. Beispielsweise wird eine Feedback-Datenbank wie folgt in drei verschiedene physische Shards aufgeteilt:

  • Shard A speichert Feedback von Kunden, die 0–10 Einkäufe getätigt haben.
  • Shard B speichert Feedback von Kunden, die 11–20 Einkäufe getätigt haben.
  • Shard C speichert Feedback von Kunden, die 21 oder mehr Einkäufe getätigt haben.

Wenn das Geschäft wächst, werden Kunden mehr als 21 oder mehr Einkäufe tätigen. Die Anwendung speichert ihr Feedback in Shard C. Dies führt zu einem unausgeglichenen Shard, da Shard C mehr Feedback-Datensätze als andere Shards enthält.

Was sind die Alternativen zum Datenbank-Sharding?

Datenbank-Sharding ist eine horizontale Skalierungsstrategie, bei der zusätzliche Knoten oder Computer zugewiesen werden, um die Workload einer Anwendung gemeinsam zu nutzen. Unternehmen profitieren aufgrund ihrer fehlertoleranten Architektur von horizontaler Skalierung. Wenn ein Computer ausfällt, arbeiten die anderen ohne Unterbrechung weiter. Datenbankdesigner reduzieren Ausfallzeiten, indem sie logische Shards auf mehrere Server verteilen. 

Sharding ist jedoch eine von mehreren anderen Strategien zur Datenbankskalierung. Entdecken Sie einige andere Techniken und verstehen Sie, wie sie sich vergleichen lassen.

Vertikale Skalierung

Vertikale Skalierung erhöht die Rechenleistung einer einzelnen Maschine. Beispielsweise fügt das IT-Team einem Datenbankserver eine CPU, RAM und eine Festplatte hinzu, um den zunehmenden Datenverkehr zu bewältigen. 

Vergleich von Datenbank-Sharding und vertikaler Skalierung

Vertikale Skalierung ist weniger kostspielig, aber die Rechenressourcen, die Sie vertikal skalieren können, sind begrenzt. In der Zwischenzeit ist Sharding, eine horizontale Skalierungsstrategie, einfacher implementierbar. Beispielsweise installiert das IT-Team mehrere Computer, anstatt alte Computerhardware zu aktualisieren.

Replikation

Die Replikation ist eine Technik, bei der exakte Kopien der Datenbank erstellt und auf verschiedenen Computern gespeichert werden. Datenbankdesigner verwenden Replikation, um ein fehlertolerantes relationales Datenbankmanagementsystem zu entwerfen. Wenn einer der Computer, die die Datenbank hosten, ausfällt, bleiben andere Replikate betriebsbereit. Replikation ist eine gängige Praxis bei verteilten Computersystemen.

Vergleich von Datenbank-Sharding und Replikation

Beim Datenbank-Sharding werden keine Kopien derselben Informationen erstellt. Stattdessen teilt es eine Datenbank in mehrere Teile auf und speichert sie auf verschiedenen Computern. Im Gegensatz zur Replikation führt das Sharding von Datenbanken nicht zu einer hohen Verfügbarkeit. Sharding kann zusammen mit Replikation verwendet werden, um sowohl Skalierung als auch Hochverfügbarkeit zu erreichen.

In einigen Fällen kann das Sharding von Datenbanken aus Replikationen bestimmter Datensätze bestehen. Beispielsweise kann ein Einzelhandelsgeschäft, das Produkte sowohl an Kunden in den USA als auch an europäische Kunden verkauft, Replikate von Größenumrechnungstabellen auf verschiedenen Shards für beide Regionen speichern. Die Anwendung kann die doppelten Kopien der Konvertierungstabelle verwenden, um die Messgröße zu konvertieren, ohne auf andere Datenbankserver zugreifen zu müssen. 

Partitioning

Partitionierung ist der Prozess, bei dem eine Datenbanktabelle in mehrere Gruppen aufgeteilt wird. Die Partitionierung wird in zwei Typen unterteilt: 

  • Bei der horizontalen Partitionierung wird die Datenbank nach Zeilen aufgeteilt.
  • Durch die vertikale Partitionierung werden verschiedene Partitionen der Datenbankspalten erstellt. 

Vergleich von Datenbank-Sharding und Partitionierung

Datenbank-Sharding ist wie horizontale Partitionierung. Beide Prozesse teilen die Datenbank in mehrere Gruppen eindeutiger Zeilen auf. Bei der Partitionierung werden alle Datengruppen auf demselben Computer gespeichert, aber beim Datenbank-Sharding werden sie auf verschiedene Computer verteilt.

Was sind die Herausforderungen beim Datenbank-Sharding?

Unternehmen könnten bei der Implementierung von Datenbank-Sharding mit diesen Herausforderungen konfrontiert sein.

Daten-Hotspots

Einige der Shards werden aufgrund der ungleichmäßigen Verteilung der Daten aus dem Gleichgewicht geraten. Beispielsweise empfängt ein einzelner physischer Shard, der Kundennamen mit dem Anfangsbuchstaben A enthält, mehr Daten als andere. Dieser physische Shard benötigt mehr Rechenressourcen als andere.

Lösung

Sie können Daten gleichmäßig verteilen, indem Sie optimale Shard-Schlüssel verwenden. Einige Datensätze eignen sich besser zum Sharding als andere.

Operative Komplexität

Datenbank-Sharding führt zu betrieblicher Komplexität. Anstatt eine einzelne Datenbank zu verwalten, müssen Entwickler mehrere Datenbankknoten verwalten. Beim Abrufen von Informationen müssen Entwickler mehrere Shards abfragen und die Informationen miteinander kombinieren. Diese Abrufvorgänge können die Analyse erschweren.

Lösung

Im AWS-Datenbankportfolio wurden die Einrichtung und der Betrieb der Datenbank weitgehend automatisiert. Dies macht die Arbeit mit einer Sharded-Datenbankarchitektur zu einer optimierteren Aufgabe.

Infrastrukturkosten

Unternehmen zahlen mehr für Infrastrukturkosten, wenn sie mehr Computer als physische Shards hinzufügen. Die Wartungskosten können sich summieren, wenn Sie die Anzahl der Maschinen in Ihrem On-Premises-Rechenzentrum erhöhen.

Lösung

Entwickler verwenden Amazon Elastic Compute Cloud (Amazon EC2), um Shards in der Cloud zu hosten und zu skalieren. Sie können Geld sparen, indem Sie eine virtuelle Infrastruktur nutzen, die von AWS vollständig verwaltet wird.

Komplexität der Anwendung

Die meisten Datenbankverwaltungssysteme verfügen nicht über integrierte Sharding-Funktionen. Das bedeutet, dass Datenbankdesigner und Softwareentwickler die Datenbank manuell aufteilen, verteilen und verwalten müssen.

Lösung

Sie können Ihre Daten in die entsprechenden, speziell entwickelten AWS-Datenbanken migrieren, die über mehrere integrierte Funktionen verfügen, die die horizontale Skalierung unterstützen.

Wie kann AWS beim Datenbanken-Sharding helfen?

AWS ist eine globale Datenverwaltungsplattform, mit der Sie eine moderne Datenstrategie entwickeln können. Mit AWS können Sie die richtige, speziell entwickelte Datenbank auswählen, Leistung in großem Maßstab erzielen, vollständig verwaltete Datenbanken ausführen und sich auf hohe Verfügbarkeit und Sicherheit verlassen.

Beginnen Sie heute noch mit den ersten Schritten mit Datenmanagement in AWS, indem Sie ein AWS-Konto erstellen.

Nächste Schritte mit AWS

Zusätzliche produktbezogene Ressourcen ansehen
Weitere Informationen zu Datenbankservices 
Für ein kostenloses Konto registrieren

Kostenlose Datenbankservices anzeigen

Registrieren 
Mit der Entwicklung in der Konsole starten

Starten Sie mit der Entwicklung in der AWS-Managementkonsole.

Anmelden