Eigenschaften
:Involvierte Definitionen
:Veranstaltung
: DEDSReferenz
: @storl2024 (KE6, NoSQL: Datenmodelle und Techniken; Teil 2.5)
⠀
Definition: Vector Clock
Als Vector Clock (auch Lamport Vector Clock) bezeichnen wir einen Mechanismus zur Verfolgung der Kausalität und der Reihenfolge von Ereignissen in verteilten Systemen.
Jeder Knoten in einem verteilten System führt einen Vektor von logischen Zeitstempeln (auch Lamport Clock), der die letzte bekannte logische Zeit jedes anderen Knotens im System speichert. Dadurch kann man feststellen, ob Ereignisse gleichzeitig aufgetreten sind, voneinander abhängen oder in welcher Reihenfolge sie passiert sind.
Die logische Zeit eines Knotens wird dabei nicht bspw. als Unix-Zeitstempel repräsentiert, sondern als Integer, das bei jedem Update um
hochgezählt wird: Enthält der
-te Node eine Transaktion von dem Knoten und gilt für die logischen Uhren (LC) , so setzen wir .
Anmerkungen
Anmerkung
Link to originalBeispiel: Vector Clock
Seien die Vector-Clocks der Knoten
gegeben durch Wir sprechen nun das folgende Beispiel durch:
Erste Transaktion
Wir starten mit einer Transaktion an dem Knoten
und setzen Dieses Update wird nun an die Knoten
propagiert und wir setzen nun auch Zweite Transaktion
Nun erhält der Knoten
eine Transaktion. Wir setzen daher Das Update wird nun an
und propagiert: Dritte Transaktion
Nun erhält der Knoten
eine Transaktion. Wir setzen daher und propagieren das Update wieder
Vierte Transaktion
Der Knoten
erhält eine Transaktion. Wir setzen daher und propagieren das Update weiter
Fünfte Transaktion und
read
Der Knoten
erhält eine Transaktion. Wir setzen daher Bevor wir das Update jedoch propagieren können, erhalten Knoten
und Knoten jeweils eine read
-Anfrage.Das System kann nun durch einen Abgleich der Vector Clocks
und erkennen, dass der Knoten einen aktuelleren Stand als der Knoten hat.