Sharding
Sharding bedeutet, einen sehr großen Datenbestand oder ein sehr großes Programm in Stücke zu zerlegen und diese Stücke auf mehrere Computer zu verteilen. So lassen sich Aufgaben bewältigen, die für einen einzelnen Rechner zu groß wären.
Manche Datenmengen sind zu groß für einen einzigen Computer. Sharding ist die Lösung dafür: Man zerlegt den Bestand in Stücke und legt jedes Stück auf einen anderen Rechner. Ein solches Stück heißt Shard, englisch für Scherbe. Jeder Rechner kennt dann nur seinen eigenen Teil, nicht das Ganze. Zusammen ergeben die Teile wieder den vollständigen Bestand. Der Vergleich mit einer Bibliothek passt gut: Statt alle Bücher in einen Raum zu quetschen, verteilt man sie auf mehrere Gebäude, und ein Verzeichnis sagt, wo welches Buch steht.
Warum ein einzelner Rechner irgendwann nicht mehr reicht
Ein Computer hat feste Grenzen. Sein Arbeitsspeicher ist endlich, seine Festplatte auch, und er kann nur eine bestimmte Zahl von Anfragen pro Sekunde beantworten. Lange Zeit hat man diese Grenzen verschoben, indem man teurere Maschinen kaufte. Das nennt man vertikale Skalierung. Irgendwann gibt es aber keine größere Maschine mehr zu kaufen.
Sharding geht den anderen Weg: Man nimmt viele normale Rechner statt eines riesigen. Das ist meist billiger und nach oben kaum begrenzt. Wenn der Datenbestand wächst, stellt man einfach weitere Rechner dazu. Große Dienste wie soziale Netzwerke oder Onlineshops könnten ohne dieses Prinzip nicht existieren.
Ein zweiter Vorteil ist die Ausfallsicherheit. Fällt ein Rechner aus, sind nur die Daten auf diesem einen Shard betroffen. Der Rest des Systems läuft weiter. Vollständig verhindern lässt sich Datenverlust dadurch aber nicht, deshalb kombiniert man Sharding fast immer mit Kopien der einzelnen Shards.
Wie die Daten auf die Shards verteilt werden
Entscheidend ist die Frage, nach welcher Regel man aufteilt. Diese Regel nennt man Shard-Key. Man könnte Nutzerkonten zum Beispiel nach dem Anfangsbuchstaben des Namens verteilen: A bis F auf Rechner eins, G bis M auf Rechner zwei und so weiter. Häufiger rechnet man aus der Nutzernummer eine Art Prüfzahl aus und leitet daraus den Zielrechner ab. Das verteilt gleichmäßiger, weil es viel mehr Müllers als Xavers gibt.
Ein schlecht gewählter Shard-Key rächt sich schnell. Landen die aktivsten Nutzer alle auf demselben Rechner, ist dieser überlastet, während die anderen kaum etwas tun. Fachleute sprechen dann von einem Hotspot. Heikel wird es außerdem, wenn eine Anfrage Daten von mehreren Shards gleichzeitig braucht. Solche Abfragen sind deutlich langsamer, weil das System mehrere Rechner befragen und die Antworten zusammensetzen muss.
Bei künstlicher Intelligenz funktioniert das Prinzip ähnlich, betrifft aber nicht Daten, sondern das Modell selbst. Große Sprachmodelle haben hunderte Milliarden einstellbarer Zahlenwerte, sogenannte Parameter. Die passen in keinen einzelnen Grafikchip. Also verteilt man sie auf viele Chips, die während der Rechnung ständig Zwischenergebnisse austauschen. Man spricht dann von Model Sharding.
Sharding in Apps, Rechenzentren und Kryptowährungen
Im Alltag merkt man vom Sharding nichts, und genau das ist das Ziel. Wer auf Instagram scrollt oder eine Bestellung aufgibt, spricht in Wahrheit mit einem Rechner unter tausenden. Auch Onlinespiele nutzen das Prinzip. Dort heißen die Shards oft schlicht Server oder Welten, und Spieler auf verschiedenen Welten begegnen sich nie.
In Technik-Nachrichten taucht der Begriff besonders bei Kryptowährungen auf. Blockchains sind normalerweise langsam, weil jeder Teilnehmer jede Transaktion prüft. Sharding soll das ändern, indem Gruppen von Rechnern nur noch einen Teil der Transaktionen bearbeiten. Ethereum verfolgt diesen Ansatz seit Jahren, allerdings in stark veränderter Form.
Ein verbreiteter Irrtum ist, Sharding sei dasselbe wie ein Backup. Das stimmt nicht: Ein Backup ist eine Kopie derselben Daten, ein Shard ist ein anderer Ausschnitt. Sharding erhöht die Kapazität, Kopien erhöhen die Sicherheit. Ernsthafte Systeme brauchen beides.