Datenkonsistenz bedeutet, dass dieselben Daten überall einheitlich dargestellt werden. Die Adresse eines Kunden im Abrechnungssystem muss mit der Adresse im Liefersystem übereinstimmen. Der Lagerbestand im Lager muss mit dem Bestand auf der Website übereinstimmen. Wenn Systeme voneinander abweichen, werden Fehlentscheidungen getroffen. Bestellungen werden an alte Adressen versandt. Kunden kaufen Produkte, die nicht vorrätig sind. Konsistenz ist für voneinander abhängige Systeme unerlässlich.
Verteilte Systeme erschweren die Datenkonsistenz. Daten, die auf mehreren Servern repliziert werden, können inkonsistent werden. Eine Netzwerkpartition isoliert eine Region von einer anderen. Beide Regionen akzeptieren Schreibvorgänge. Nach der Wiederherstellung der Partition kommt es zu Datenkonflikten. Das CAP-Theorem besagt, dass Konsistenz, Verfügbarkeit und Partitionstoleranz möglich sind, jedoch nicht alle drei gleichzeitig. Die meisten verteilten Datenbanken setzen auf Verfügbarkeit und letztendliche Konsistenz. Das bedeutet, dass die Daten mit der Zeit konvergieren, es aber ein Zeitfenster gibt, in dem verschiedene Knoten unterschiedliche Werte sehen. Starke Konsistenz erfordert Koordination, was zu Latenz führt. Die Wahl hängt von der Anwendung ab. Ein Bankbuch benötigt starke Konsistenz. Ein Social-Media-Feed kann letztendliche Konsistenz tolerieren. Die richtige Lösung ist nicht universell. Sie hängt davon ab, welche Probleme auftreten, wenn die Daten nicht übereinstimmen.
Konsistenzmodelle
- Stark – alle Knoten sehen sofort dieselben Daten.
- Schließlich konvergieren die Knoten im Laufe der Zeit
- Kausalzusammenhänge werden der Reihe nach betrachtet.
- Lies deine Beiträge – du siehst deine eigenen Aktualisierungen sofort
Konsistenz ist ein Spektrum. Die Frage ist, wie viel Inkonsistenz die Anwendung tolerieren kann, bevor sie kaputt geht.
Comments
No comments yet. Be the first to share a thought.
Leave a comment