Database Reference
In-Depth Information
Cluster von Servern. Wenn mit mehreren Knoten gearbeitet wird, kann es zu
Datenkonflikten kommen und manchmal müssen wir sie auflösen. Riak stellt
Mechanismen bereit, mit denen sich herausfinden lässt, welche Schreibope-
rationen zuletzt erfolgt sind. Es verwendet dazu Vektoruhren (vector clocks)
und die sog. Sibling Resolution.
Wir sehen uns auch an, wie man eingehende Daten über Pre- und Post-
Commit-Hooks validieren kann. Und wir werden Riak in unsere persönli-
che Suchmaschine verwandeln. Dazu verwenden wir Riak-Search (mit dem
SOLR-Interface) und sorgen mit Sekundärindizes für schnellere Queries.
Konlikte aulösen mit Vektoruhren
Eine Vektoruhr 11 ist ein Token, das verteilte Systeme wie Riak nutzen, um
die richtige Reihenfolge kollidierender Schlüssel/Wert-Updates zu erhalten.
Es ist wichtig nachzuhalten, in welcher Reihenfolge Updates auftreten, weil
mehrere Clients sich mit verschiedenen Servern verbinden können, und wäh-
rend ein Client den einen Server aktualisiert, kommen von einem anderen
Client Updates bei einem anderen Server an (man kann nicht kontrollieren,
an welchen Server was geschrieben wird).
Nun könnten Sie denken: „Gib allen Werten einen Zeitstempel mit und der
höchste Wert macht das Rennen“, doch bei einem Server-Cluster funktio-
niert das nur, wenn alle Server-Uhren perfekt synchron laufen. Riak stellt
keine solchen Anforderungen, da die Synchronisation der Uhren bestenfalls
schwierig und in vielen Fällen sogar unmöglich ist. Die Verwendung eines
zentralisierten Uhrensystems wäre der Riak-Philosophie ein Gräuel, da es
einen Single Point of Failure darstellt.
Mit Vektoruhren können Sie markieren, welches Schlüssel/Wert-Event (Er-
zeugen, Aktualisieren, Löschen) mit welchem Client in welcher Reihenfolge
aufgetreten ist. Auf diese Weise können Clients - oder der Applikationsent-
wickler - entscheiden, wer im Falle eines Konflikts gewinnt. Wenn Sie mit
Versionskontrollsystemen wie Git oder Subversion vertraut sind, dann ist
das der Auflösung von Versionskonflikten (wenn zwei Leute die gleiche Datei
ändern) nicht unähnlich.
Vektoruhren in der Theorie
Nehmen wir an, unsere Hundepension läuft so gut, dass wir im Bezug auf
die Klientel etwas wählerischer sein müssen. Sie haben dazu drei Hundeex-
perten engagiert, die Ihnen dabei helfen zu entscheiden, welcher neue Hund
11. http://en.wikipedia.org/wiki/Vector_clock
Search WWH ::




Custom Search