DB-EnginesExtremeDB: mitigate connectivity issues in a DBMSEnglish
Deutsch
Informationen zu relationalen und NoSQL DatenbankmanagementsystemenEin Service von solid IT

Enzyklopädie > Artikel

Sharding

Sharding ist eine Methode der Datenbankpartitionierung. Dabei wird ein Datenbestand in mehrere Teile aufgeteilt und jeweils von einer eigenen Serverinstanz verwaltet. Z.B. Personen werden je nach Anfangsbuchstaben auf drei Server aufgeteilt: A-F, G-O, P-Z. Wann immer eine Person gespeichert oder über den Namen abgefragt wird, wird zuerst der zuständige Server bestimmt, an den der Request weitergeleitet wird.

Vorteile

Mittels Sharding können umfangreiche Datenmengen verwaltet werden, welche die Kapazitäten eines einzelnen Servers sprengen würden. Da die einzelnen Teile von einer eigenen Serverinstanz verwaltet werden, werden nicht nur die Daten selbst, sondern auch die dafür benötige Rechenleistung aufgeteilt.

Partitionsstrategie

Die Methode der Aufteilung, die sog. Partitionsstrategie, spielt dabei eine entscheidende Rolle. Das obige Beispiel der Aufteilung nach Anfangsbuchstaben hat den Vorteil, dass auch Abfragen sortiert nach dem Aufteilungskriterium leicht möglich sind. Ein gravierender Nachteil ist allerdings, dass das Hinzufügen weiterer Server umfangreiches Umspeichern erfordert. Daher werden, vor allem in Szenarien mit Dutzenden oder Hunderten Server, eher Hash-basierte Verfahren verwendet. Dabei kommen sog. konsistente Hash-Funktionen zum Einsatz, welche die Anzahl der in diesen Fällen notwendigen Umspeicherungen minimieren.

Nachteile und Restriktionen

Der größte Nachteil des Shardings ist natürlich, dass ein Zugriff über andere Kriterien als das Aufteilungskriterium unverhältnismäßig aufwändig ist. Abfragen über andere Kriterien oder Joins müssen i.A. auf alle Server aufgeteilt werden. Das Datenmodell und die Zugriffspfade müssen so designed werden, dass derartige Zugriffe nur selten oder gar nicht vorkommen, sonst werden die Vorteile des Shardings zunichte gemacht.

Diese Notwendigkeit macht Sharding zu einer attraktiven Methode vor allem für NoSQL-Systeme, bei denen typischerweise Joins ohnehin nicht unterstützt werden, und auch Zugriffe über Sekundärschlüssel eher eine Ausnahme sind. Somit lässt sich Sharding für diese Systeme vergleichsweise einfach implementieren. Man kann sogar sagen, dass das relativ problemlose Sharding einer der Hauptgründe für den rasch steigenden Einsatz von NoSQL-Systemen ist.

Sharding und Replikation

Bei mehreren NoSQL-Systemen wird Sharding und Replikation auf elegante und effizient Weise verknüpft, etwa bei Cassandra und Riak. Dabei wird z.B. in einer ringförmigen Anordnung der Server jeder Shard auch gleichzeitig auf einen oder mehrere nachfolgende Server im Ring repliziert. Somit hält jeder Server jeweils eine Kopie mehrerer Shards. Durch diese Anordnung und die dazugehörigen komplexen Daten­abgleichs­mechanismen entstehen sehr flexible und fehlertolerante Systeme, welche auch mit sehr großen Datenmengen befüllt werden können.

Applikationsseitiges Sharding

Ein Sharding-Mechanismus kann natürlich auch in der Datenbankapplikation implementiert werden, indem über eine Partitionsstrategie auf unabhängig voneinander arbeitende Server zugegriffen wird. Eine derartige Nachimplentierung von Serverfunktionalität ist aber nicht nur aufwändig und fehleranfällig, sie stößt bei komplexeren Szenarien auch rasch an Grenzen. Im Zweifelsfall ist bei der Notwendigkeit von Sharding ein Umstieg auf ein Datenbank­management­system, welches von sich aus Sharding unterstützt, immer vorzuziehen.



Featured Products

Ontotext logo

GraphDB allows you to link diverse data, index it for semantic search and enrich it via text analysis to build big knowledge graphs. Get it free.

Datastax Astra logo

Bring all your data to Generative AI applications with vector search enabled by the most scalable
vector database available.
Try for Free

SingleStore logo

Build AI apps with Vectors on SQL and JSON with milliseconds response times.
Try it today.

Neo4j logo

See for yourself how a graph database can make your life easier.
Use Neo4j online for free.

Milvus logo

Vector database designed for GenAI, fully equipped for enterprise implementation.
Try Managed Milvus for Free

Präsentieren Sie hier Ihr Produkt