Das Wort "sharding" bedeutet im Englischen "aufspalten". In der Data Science ist Sharding eine Methode, um einen Datensatz aus einer Datenbank zu partitionieren. Man teilt die Datenbank in mehrere Datensätze auf, die auch als "Datasets" bezeichnet werden.
Was genau ist Sharding?
Es gibt zwei Hauptmethoden des Sharding oder der Partitionierung: die horizontale und die vertikale Partitionierung. Bei der horizontalen Partitionierung werden die Leitungen getrennt und auf verschiedenen Servern gespeichert.
Betrachte das Beispiel einer Ladenkette, die eine Datenbank mit ihren Kunden und den von ihnen gekauften Produkten hat. Das folgende Schema stellt eine horizontale Partitionierung dar. Im ersten Fragment haben wir alle Informationen über Produkte, die weniger als 100€ kosten, während wir im zweiten Fragment die Informationen über Produkte haben, die mehr als 100€ kosten.
Bei der vertikalen Partitionierung hingegen werden die Spalten getrennt und auf verschiedenen Servern gespeichert.
Wenn wir auf das vorherige Beispiel zurückgreifen, können wir auch eine vertikale Partitionierung vornehmen. Das erste Fragment wird die persönlichen Informationen eines Users enthalten, während das zweite Fragment die Informationen über die gekauften Produkte enthält.
Während vertikales Sharding die Trennung mehrerer Kategorien ermöglicht, werden die Daten beim horizontalen Sharding auf mehrere Server verteilt.
So werden z. B. große Webunternehmen eher auf horizontales Sharding zurückgreifen.
Das Prinzip des Sharding ermöglicht eine bessere Datenbankverwaltung. Daten, die partitioniert werden (sog. logische Fragmente), werden so auf separate Datenbankknoten (sog. physische Fragmente) verteilt.
Was sind die Vorteile des Sharding?
Sharding ermöglicht es, die Kapazität eines einzelnen Rechners zu übersteigen, indem die Daten auf verschiedenen Servern untergebracht werden. Dieses System der Dezentralisierung hat viele Vorteile.
Der Hauptvorteil ist zunächst einmal die Geschwindigkeit: Es können viel mehr Informationen pro Sekunde verarbeitet werden.
Dieses System wird auch sicherer sein (es ist sicherer, seine Daten auf mehrere Server zu verteilen) und billiger (es kostet weniger, einen großen Server zu kaufen und sichern).
Was sind die Nachteile des Sharding?
Sharding hat jedoch einige Nachteile.
Zunächst einmal kann eine schlechte Implementierung zu einem mehr oder weniger großen Datenverlust führen, der nicht mehr wiederhergestellt werden kann. Außerdem kann es ein Problem mit dem Ungleichgewicht zwischen den Fragmenten geben.
Angenommen, wir haben einen Datensatz mit den Eigenschaften von mehreren Autos, die verschiedenen Usern gehören. Wir möchten die Daten in zwei verschiedene Fragmente aufteilen (hell- und dunkelfarbige Autos).
Nehmen wir den Fall an, dass fast alle User dunkle Autos besitzen. In diesem Fall werden die Fragmente unausgewogen sein und die Verarbeitung von Informationen verlangsamen. Außerdem kann der Besitz mehrerer Server auch ein Problem für die Cybersicherheit darstellen, da eine Person einen Server leichter angreifen kann. Außerdem sind Expertenprofile im Bereich Cybersicherheit auf dem Arbeitsmarkt sehr begehrt, weshalb sich die Öffentlichkeit für spezielle Ausbildungen im Bereich Cybersicherheit interessiert.
Sharding in Kryptowährungen
Skalierbarkeit (d. h. die Fähigkeit zu skalieren) ist bei Kryptowährungen ein sehr begehrtes Element. Viele Kryptowährungen wie der 2009 von Satoshi Nakomoto geschaffene Bitcoin oder das 2015 von Vitalik Buterin geschaffene Ethereum haben oft überlastete Netzwerke, die sich durch lange Bearbeitungszeiten oder recht hohe Transaktionskosten bemerkbar machen. Vitalik Buterin und sein Team kamen dann auf die Idee, Sharding zu verwenden, um dieses Problem zu lösen und die Datenspeicherung zu verteilen.
Während Bitcoin ein knappes Dutzend Transaktionen pro Sekunde verarbeitet, will sich Ethereum durch Sharding mehrere Tausend Transaktionen pro Sekunde verarbeiten lassen.
Sharding in Kryptowährungen
Skalierbarkeit (d. h. die Fähigkeit zu skalieren) ist bei Kryptowährungen ein sehr begehrtes Element. Viele Kryptowährungen wie der 2009 von Satoshi Nakomoto geschaffene Bitcoin oder das 2015 von Vitalik Buterin geschaffene Ethereum haben oft überlastete Netzwerke, die sich durch lange Bearbeitungszeiten oder recht hohe Transaktionskosten bemerkbar machen. Vitalik Buterin und sein Team kamen dann auf die Idee, Sharding zu verwenden, um dieses Problem zu lösen und die Datenspeicherung zu verteilen.
Während Bitcoin ein knappes Dutzend Transaktionen pro Sekunde verarbeitet, will sich Ethereum durch Sharding mehrere Tausend Transaktionen pro Sekunde verarbeiten lassen.
Voraussetzungen für Sharding
Eine der ersten Voraussetzungen für Sharding ist der Zugriff auf alle unsere Daten. Alle Zugriffe auf unsere Daten erfolgen über einen Partitionsschlüssel (den sogenannten Shard Key).
So muss während des Vorbereitungsprozesses einer Partitur eine Reihe von Transformationen des Untermodells unserer Daten durchgeführt werden.
Jede Tabelle in einer partitionierten Datenbank muss eine Spalte haben, die dem Shard Key entspricht. Alle Partitionen müssen eindeutig sein. Außerdem muss der Join zwischen den Tabellen über denselben Partitionsschlüssel erfolgen.
Schlussfolgerung
Sharding ist ein echter Vorteil. Durch die Partitionierung der Daten werden die Geschwindigkeiten erhöht, die Sicherheit verbessert und die Kosten gesenkt. Die Implementierung erfolgt nach einem strengen Verfahren. Diese Technik wird häufig bei Kryptowährungen eingesetzt. Sie ist auch für Internetgiganten wie Google, Wikipedia, Amazon, Facebook, LinkedIn usw. sehr nützlich.