Sharding
Sharding ist eine Art der Datenbankpartitionierung, bei der sehr große Datenbanken in kleinere, schnellere und leichter zu verwaltende Teile, so genannte Data Shards, aufgeteilt werden. Das Wort „Shard“ bedeutet „kleiner Teil eines Ganzen“ oder auch Splitter.
So erklärt Jason Tee auf The Server Side das Sharding: „Im einfachsten Sinne bedeutet Sharding, dass man seine große Datenbank in viele, viel kleinere Datenbanken aufteilt, die sich nichts teilen und auf mehrere Server verteilt werden können.“
Technisch gesehen ist Sharding ein Synonym für horizontale Partitionierung. In der Praxis wird der Begriff oft verwendet, um jede Datenbankpartitionierung zu bezeichnen, die eine sehr große Datenbank überschaubarer machen soll.
Das maßgebliche Konzept hinter Sharding basiert auf der Idee, dass mit der Größe einer Datenbank und der Anzahl der Transaktionen pro Zeiteinheit, die auf der Datenbank durchgeführt werden, die Antwortzeit für die Abfrage der Datenbank exponentiell ansteigt.
Außerdem können die Kosten für die Erstellung und Pflege einer sehr großen Datenbank an einem Ort exponentiell ansteigen, da die Datenbank Highend-Rechner benötigt. Im Gegensatz dazu können Daten-Shards über eine Reihe von viel weniger teuren Commodity-Servern verteilt werden. Daten-Shards haben vergleichsweise wenig Einschränkungen, was die Hardware- und Software-Anforderungen betrifft.
In einigen Fällen kann das Sharding von Datenbanken recht einfach durchgeführt werden. Ein gängiges Beispiel ist die geografische Aufteilung einer Kundendatenbank. Kunden, die sich an der Ostküste der USA befinden, können auf einem Server platziert werden, während Kunden an der Westküste der USA auf einem zweiten Server platziert werden können. Unter der Annahme, dass es keine Kunden mit mehreren Standorten gibt, ist die Aufteilung einfach zu pflegen und Regeln zu erstellen.
Das Sharding von Daten kann jedoch in einigen Szenarien ein komplexerer Prozess sein. Das Sharding einer Datenbank, die weniger strukturierte Daten enthält, kann beispielsweise sehr kompliziert sein, und die resultierenden Shards können schwer zu pflegen sein.