DB-EnginesInfluxDB download bannerEnglish
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

Neo4j logo

Get your free copy of the new O'Reilly book Graph Algorithms with 20+ examples for
machine learning, graph analytics and more.

RavenDB logo

Runs on Windows, Linux, Raspberry Pi. Easy to Operate, Fast Performance.
APIs for JS, .NET, Python.
Take a Free Download

Couchbase logo

SQL + JSON + NoSQL.
Power, flexibility & scale.
All open source.
Get started now.

Redis logo

Start now with Redis Cloud
Secure, highly available Redis as a serverless, hosted, fully managed cloud service.
Sign up here.

Präsentieren Sie hier Ihr Produkt