© golubovystock/Shutterstock.com
Datenkonsistenz bei NoSQL-Datenbank-Clustern

Wahrheit oder Pflicht


NoSQL-Datenbank-Cluster sind vor allem aufgrund guter Skalierbarkein, hoher Verfügbarkeit und schneller Antwortzeiten beliebt. Dafür schränken sie ihre Konsistenzgarantien ein. Was bedeutet das für den Entwickler? Dieser Artikel beschreibt wichtige clientzentrierte Konsistenzmodelle und zeigt am Beispiel von Cassandra, wie sie auf einfache Art überprüft werden können.

In vielen Architekturen wird die Datenbank bei konkurrierenden Zugriffen als Single Point of Truth definiert und gilt damit als Garant für Datenkonsistenz. Bei steigenden Datenmengen wird sie jedoch häufig zum Nadelöhr. NoSQL-Datenbanken versprechen eine bessere Performance durch eine auf den Anwendungsfall optimierte Ablage der Daten. Zur effizienteren Auslastung von Multicore-Prozessoren und um die steigende Datenflut zu beherrschen, werden Lese- und Schreibvorgänge i. d. R. nebenläufig ausgeführt. Das führt zu den aus der Welt der relationalen Datenbanken bekannten Anomalien (Tabelle 1).

Anomalie

Beschreibung

Dirty Read

Eine Transaktion T1 liest ein Datenelement, das von einer noch nicht abgeschlossenen Transaktion T2 geändert wurde. Wenn T2 danach ein ROLLBACK ausführt, hat T1 ein Datenelement gelesen, das nie committet wurde und somit eigentlich nie existiert hat.

Lost Update

Eine Transaktion T1 liest ein Datenelement. Eine andere Transaktion T2 ändert dieses. Anschließend ändert T1 dasselbe Datenelement, basierend auf dem vorherigen Lesezugriff. Die Änderungen von T2 werden somit von T1 überschrieben und gehen verloren.

Non-repeatable Read

Eine Transaktion T1 liest wiederholt ein Datenelement und erhält unterschiedliche Ergebnisse, da eine andere Transaktion T2 währenddessen dieses Datenelement geändert hat.

Phantom Read

Eine Transaktion T1 erhält bei wiederholtem Lesen mit Suchkriterium unterschiedliche Datensätze, da eine andere Transaktion T2 zwischenzeitlich Datensätze hinzugefügt, gelöscht oder verändert hat, die dieses Suchkriterium erfüllen.

Tabelle 1: Anomalien bei nebenläufigen Lese- und Schreibvorgängen

Außerdem setzen viele Datenbanksysteme auf horizontale Skalierung zur Lastverteilung und um eine höhere Verfügbarkeit beim Ausfall eines oder mehrerer Server zu erreichen. Das schwächt die Datenkonsistenz weiter (vgl. CAP-Theorem). Die Datenbank wird so nicht immer die korrekten Daten liefern, was zu Datenschiefständen führt, die sich im Nachhinein niemand erklären kann. Die Reproduktion der Reihenfolge der konkurrierenden Zugriffe ist unmöglich. Man muss eine gute Abwäg...

Neugierig geworden?

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