Berlin Buzzwords – Day 1 – Eventually Consistent Data Structures

Eventually-consistent Datenbanken, wie z.B. Riak, Voldemort, or Cassandra haben viele Vorteile erfordern aber auch ein Umdenken bei den Client-Applikationen. Das ist auch der letzte Talk für heute.

  • In einem Eventually-consistent system existieren mehrere verteilte Kopien der Daten und beinhalten Mechanismen wir z.B. Replikation
  • Vorteile sind Hochverfügbarkeit, niedrige Latenzen und Fehlertoleranz
  • Es gibt keine Transaktionen und nicht klar wer „gewinnt“, wenn zwei Schreibvorgänge auf zwei Nodes gleichzeitig statt finden. Beide Behalten (Riak & Voldemort) oder den letzten weg werfen (Cassandra)
  • Welche Komponente soll entscheiden, welches der richtige Zustand eines Datensatzes ist? Eigentlich kann das nur die Domain / Business-Logik der Applikation entscheiden.
  • Bei Replikation muss man entscheiden ob man den Status einer Entität (Convergent CRDTs) oder die Operation (Commutative CRSTs) an dieser übermitteln möchte.
  • Es gibt verscheidene Datentypen: Register, Counter, Sets, …
  • G-Counter (können nur inkrementiert werden)
  • PN-Counter beschreiben sich als 2 G-Counter und der Wert entspricht der Differenz der beiden
  • Sets sind Basis von vielen nested Strukturen
  • Zu G-Sets können nur Elemente hinzugefügt werden
  • 2P-Sets funktionieren analo zum PN-Counter und bestehen aus zwei G-Sets, eins für Elemente, die hinzugefügt wurden und eins für entfernte
  • LWW-Element-Set welches zu jeder Operation (Hinzufügen, Entfernen) noch einen Timestamp hat. Es gewinnt die Aktion mit dem höchsten Timestamp gewinnt und so können Element, die gelöscht wurden, wieder hinzugefügt werden.
  • OR-Sets (Observe-Remove-Sets) beinhalten unique id’s und damit können dedizierte Element aus dem Set gelöscht werden. Ähnlich einer Hash-Map
  • Graphs sind Vektoren
  • Use-Cases für die Datentypen sind z.B. Social-Graph (Graph), Visits (G-Counter), Shopping-Cart (OR-Set)
  • Synchronisation muss normalerweise auf Client-Seite erfolgen, z.B. in Erlang via mochi/statebox
GD Star Rating
loading...

Kommentar verfassen