Datenbanken können riesig sein. Das Suchen in einer Datenbank dauert viel zu lange, daher wird sie aufgeteilt. Wir erklären euch, wie die Methode Sharding hierfür funktioniert.
Der Begriff „shard“ leitet sich aus dem Englischen ab und bedeutet „Scherbe“ oder, in der IT-Welt passender ausgedrückt, „Fragment“. Aus Fragmenten besteht somit die Datenbank, welche eine Tabelle aus horizontalen beziehungsweise waagerechten Zeilen und vertikalen beziehungsweise senkrechten Spalten beinhaltet. Die Datensätze in der Tabelle sind kategorisiert: Pro Spalte gibt es Einträge, die zu einer bestimmten Kategorie und gegebenenfalls dessen Unterkategorie gehören.
In Excel könnt ihr durch ein paar einfache Tricks eure Tabellen ebenfalls übersichtlicher gestalten. Mehr dazu verraten wir euch im Video.
Warum muss die Datenbank aufgeteilt werden?
Datenbanken können groß werden, zu groß für den nahtlosen Arbeitsprozess. Um Ausbremsungen entgegenzuwirken, besteht die Möglichkeit den Prozessor, Arbeitsspeicher und die Festplatten auf schnellere und leistungsvollere Modelle aufzustocken – genannt: Skalierung. Doch auch diese Hardware stößt an ihre Grenzen. Nicht nur aus Speicherplatzmangel oder weil die Lesegeschwindigkeit von Tabellen ein bestimmtes Limit hat, sondern vor Allem, weil es nicht sinnvoll ist bei neuen Suchvorgängen die gesamte Tabelle im Ganzen zu scannen. Aus diesem Grund teilt man diese in Kategorien mithilfe von sogenannten Shard-Schlüsseln auf, vergleichbar mit Tags oder Schlüsselwörtern, um die Datensätze zu filtern. Die mit Shard-Schlüsseln „gefilterten“ Datensätze werden dann in separate Tabellen aufgeteilt, um diese parallel anstatt nacheinander zu durchsuchen. Ab hier beginnt der Zauber.
Wie funktioniert Sharding?
Einzelne mit Shard-Schlüsseln gekennzeichnete Tabellen werden nun voneinander unabhängig gemacht, also partitioniert. Partitionen sind auf Festplatten für das Betriebssystem wie Windows oder Linux gedacht, aber es gibt auch logische Partitionen, die von Software-Anwendungen erstellt und verwaltet werden, hier zum Beispiel explizit für Datenbanken beziehungsweise deren Shards. Diese Shards sind logische Shards, welche größtenteils auf weitere Festplatten innerhalb eines Servers, auf andere Server oder Computer verlagert werden. Diese Server und PCs, auf die die logischen Shards verlagert werden, bezeichnet man als physische Shards oder Datenbankknoten. Diese bleiben in Betrieb und erreichbar, sodass das Programm mit jeden logischen Shard auf jedem physischen Shard in Verbindung bleibt. Es können mehrere logische Shards auf einem physischen Shard vorhanden sein. Genauso können mehrere Suchvorgänge gleichzeitig stattfinden und durch Filterung viele unnötige Tabellen ausgelassen werden, um gezielt nach einem bestimmten Datensatz zu suchen, während bei den restlichen Datenbankknoten Ressourcen gespart werden.
Sharding in der Praxis: Methoden
Zur Veranschaulichung nutzen wir eine Excel-Tabelle mit sensiblen Daten und zeigen euch die vier Methoden zum effektiven Sharding. Für jeden Anwendungsfall gibt es eine eigene Methode. Die Shard-Schlüssel werden entsprechenden Methoden zugewiesen. Die Datensätze innerhalb eines Shard-Schlüssels werden partitioniert und als lokale Shards zu den entsprechenden physischen Shards zugeordnet. Jeweils pro Methode wird beispielhaft anhand der Farben kenntlich gemacht nach welchen Kriterien die Shards aus der zentralen Tabelle ausgelagert werden. Die ursprüngliche Tabelle behält, je nach Methode, die Verknüpfungen zu den Shards, also die Datenbank-Anwendung kümmert sich darum.
Bereichbasiertes Sharding
Auch „Dynamisches Sharding“ genannt“: hier wird ein Wertebereich zugewiesen. Zum Beispiel der erste Buchstabe eines Namens wird in alphabetische Reihenfolge gebracht. Diese wird manuell festgelegt.
Gehashtes Sharding
„Hashen“ bedeutet so viel wie mittels einer mathematischen Formel „codieren“. Die Formel wandelt in jeder Zeile den Inhalt in einen individuellen Hash-Wert und sortiert diesen einem logischen Shard zu, der wiederum zu einem physischen Shard beziehungsweise Datenknoten gelangt.
Verzeichnis-Sharding
Hier werden vereinfacht gesagt (Teil-)Einträge einer Kategorie als Shard-Schlüssel in eine Nachschlagtabelle übertragen. Anhand dieser Tabelle wird der entsprechende Datensatz gesucht. Diese Methode erfordert eine stets aktuell gehaltene Nachschlagtabelle.
Geo-Sharding
Bei dieser Methode wird nach dem geografischen Standort selektiert. Der am nächsten gelegene Server für die kürzeste Wartezeit wird gewählt. Auch für Lieferdienste ist dieses Feature ganz praktisch. Shard-Schlüssel werden nach Wohnorten gruppiert und so die Suche eingeschränkt. Die restlichen Wohnorte sind demnach irrelevant und dessen logische Shards können währenddessen ruhen.
Sharding-Methoden: Vorteile und Nachteile
Bereichbasiertes Sharding
- Vorteil: Einfach zu implementieren
- Nachteil: Überlastung eines einzelnen Datenknotens
Gehashtes Sharding
- Vorteil: Gleichmäßige Datenverteilung
- Nachteile: Zuordnung nicht nach Inhalten und Bedeutung; Kommen weitere Computer hinzu, besteht Schwierigkeit bei Neuzuweisung von Hashes
Verzeichnis-Sharding
- Vorteile: Flexibel erweiterbar; Aussagekräftige Darstellung der Datenbank
- Nachteil: Fehler bei fehlenden Informationen in Nachschlagtabelle
Geo-Sharding
- Vorteil: Kurze Wege und Zeiten für Anfragen von Anwendungen und Informationen
- Nachteil: Ungleichmäßige Auslastung möglich