© Excellent backgrounds/Shutterstock.com
Java Magazin
Der NoSQL-Key-Value-Store

Riak - Einfache Skalierbarkeit

NoSQL-Datenbanken sind ursprünglich angetreten, um große Datenmengen kostengünstig und performant zu verwalten. Genau in dem Bereich punktet Riak, denn die Datenbank ist sowohl einfach skalierbar als auch ausfallsicher.

Eberhard Wolff


Riak ist im Kern eine verteilte Datenbank. Daher steht der Betrieb im Cluster im Mittelpunkt, und Riak ist beispielsweise gegen Netzausfälle gut abgesichert. Für verteilte, hoch verfügbare Systeme hat sich die Programmiersprache Erlang mit den dazugehörigen Werkzeugen und Bibliotheken etabliert – genau deswegen ist Riak auch in Erlang implementiert.

Während andere NoSQL-Datenbanken zwar durchaus gute Skalierbarkeit und Ausfallsicherheit anbieten, geht Riak hier noch viel weiter. Die Basis ist das Dynamo-Paper [1], in dem Amazon seine Implementierung eines hoch verfügbaren, skalierbaren Speichersystems beschrieben hat. Wesentliche Eigenschaften von Dynamo sind:

Einfach Daten zu replizieren, ist problematisch. Ein üblicher Ansatz ist es, die Daten in mehrere Shards aufzuteilen und von jedem Shard dann mehrere Replikate vorzuhalten. Nehmen wir an, dass es drei Shards mit je drei Replikaten geben soll. Das sind insgesamt neun Server. Wenn das System skalieren soll, muss ein neuer Shard eingerichtet werden – und der muss dreimal repliziert werden. Also müssen drei Server bestellt werden. Und außerdem muss ein Viertel der Daten bewegt werden – wahrscheinlich von genau einem anderen Shard. Das führt zu hoher Last auf den betroffenen Servern. Dynamo nutzt daher ein ganz anderes Modell: Die Server werden in einem Ring organisiert. Auf jeden Server folgt also ein anderer Server – in Abbildung 1 ist die Reihenfolge A, B, C, D und dann schließt sich wieder A an. Daten werden dann auf einen Server und eine konfigurierbare Anzahl der direkt folgenden Server gespeichert – im Beispiel auf zwei nachfolgende Server. Der Ring kann ohne Weiteres um einen einzigen Server erweitert werden: Er kann dann von benachbarten Servern mit Daten versorgt werden (Abb. 1). Dabei kann die Arbeit mit den anderen Servern fortgeführt werden. Als Daumenregel gilt, dass es sogar keinen nach außen wahrnehmbaren Performanceeinbruch gibt, wenn die Server untereinander mit 10 Gb und nach außen mit 1 Gb verbunden sind. Ein Hinweis noch: In Wirklichkeit sind die Algorithmen für den Aufbau des Rings noch etwas komplexer, um beispielsweise die Gleichverteilung der Daten sicherzustellen.Um die benötigte Konsistenz der Daten zu erreichen, können von jedem Datensatz N Kopien gehalten werden. Durch die Replikation können diese Kopien natürlich unterschiedliche Stände haben. Daher kann für jede Schreiboperation die Anzahl der Kopien, die erfolgreich geschrieben sein müssen, als W festgelegt werden – analog...

Java Magazin
Der NoSQL-Key-Value-Store

Riak - Einfache Skalierbarkeit

NoSQL-Datenbanken sind ursprünglich angetreten, um große Datenmengen kostengünstig und performant zu verwalten. Genau in dem Bereich punktet Riak, denn die Datenbank ist sowohl einfach skalierbar als auch ausfallsicher.

Eberhard Wolff


Riak ist im Kern eine verteilte Datenbank. Daher steht der Betrieb im Cluster im Mittelpunkt, und Riak ist beispielsweise gegen Netzausfälle gut abgesichert. Für verteilte, hoch verfügbare Systeme hat sich die Programmiersprache Erlang mit den dazugehörigen Werkzeugen und Bibliotheken etabliert – genau deswegen ist Riak auch in Erlang implementiert.

Während andere NoSQL-Datenbanken zwar durchaus gute Skalierbarkeit und Ausfallsicherheit anbieten, geht Riak hier noch viel weiter. Die Basis ist das Dynamo-Paper [1], in dem Amazon seine Implementierung eines hoch verfügbaren, skalierbaren Speichersystems beschrieben hat. Wesentliche Eigenschaften von Dynamo sind:

Einfach Daten zu replizieren, ist problematisch. Ein üblicher Ansatz ist es, die Daten in mehrere Shards aufzuteilen und von jedem Shard dann mehrere Replikate vorzuhalten. Nehmen wir an, dass es drei Shards mit je drei Replikaten geben soll. Das sind insgesamt neun Server. Wenn das System skalieren soll, muss ein neuer Shard eingerichtet werden – und der muss dreimal repliziert werden. Also müssen drei Server bestellt werden. Und außerdem muss ein Viertel der Daten bewegt werden – wahrscheinlich von genau einem anderen Shard. Das führt zu hoher Last auf den betroffenen Servern. Dynamo nutzt daher ein ganz anderes Modell: Die Server werden in einem Ring organisiert. Auf jeden Server folgt also ein anderer Server – in Abbildung 1 ist die Reihenfolge A, B, C, D und dann schließt sich wieder A an. Daten werden dann auf einen Server und eine konfigurierbare Anzahl der direkt folgenden Server gespeichert – im Beispiel auf zwei nachfolgende Server. Der Ring kann ohne Weiteres um einen einzigen Server erweitert werden: Er kann dann von benachbarten Servern mit Daten versorgt werden (Abb. 1). Dabei kann die Arbeit mit den anderen Servern fortgeführt werden. Als Daumenregel gilt, dass es sogar keinen nach außen wahrnehmbaren Performanceeinbruch gibt, wenn die Server untereinander mit 10 Gb und nach außen mit 1 Gb verbunden sind. Ein Hinweis noch: In Wirklichkeit sind die Algorithmen für den Aufbau des Rings noch etwas komplexer, um beispielsweise die Gleichverteilung der Daten sicherzustellen.Um die benötigte Konsistenz der Daten zu erreichen, können von jedem Datensatz N Kopien gehalten werden. Durch die Replikation können diese Kopien natürlich unterschiedliche Stände haben. Daher kann für jede Schreiboperation die Anzahl der Kopien, die erfolgreich geschrieben sein müssen, als W festgelegt werden – analog...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang