Eventual consistency

Die neue „Buzz words“ in verteilten Datenbanken sind „CAP Theorem“ und „Eventual consistency„.
Fast in jedem Artikel zum NoSQL Produkt wie „Apache Cassandra“, „Amazon SimpleDB“, „CouchDB“ etc. findet man diese Begriffe in der Liste von wichtigsten Features.
Was die Wörter bedeuten, ist wahrscheinlich noch nicht jedem bekannt (es gibt ja noch kein Wikipedia Artikel auf Deutsch zu diesem Thema 😉 ).

CAP Theorem sagt, das in verteilten Systemen gibt es drei (unten angegebene) konkurrierende Ziele. Von den drei Zielen können nur zwei gleichzeitig in verteiltem System erreicht werden.

  • Strong Consistency: Alle Clients sehen selbe Daten.
  • High Availability: Hohe Verfügbarkeit und Ausfallsicherheit. Ausfall oder Trennung von Subsystemen kann nicht zum Ausfall von ganzem System führen. Die formale Definition von „Availability“ bedeutet, dass ALLE Operationen müssen nach dem Ausfall von Subsystem weiterhin erfolgreich ausgeführt werden können. Falls zum Beispiel nur Leseoperationen, aber keine Schreiboperationen möglich sind, dann ist das System nicht mehr „available“. Oder wenn das System Schreiboperationen erlaubt, aber die Daten dadurch inkonsistent werden, ist das System trotzdem „available“.
  • Partition tolerance: Ein verteiltes System kann trotz dem willkürlichem Verlust von Nachrichten zwischen den einzelnen Subsystemen funktionieren. Das heißt – Subsystemen können autonom arbeiten, dabei wird entweder die Konsistenz der Daten verloren (kann eventuell automatisch wiederherstellt werden), oder nicht alle Operationen werden erfolgreich ausgeführt (nur Leseoperationen, oder nur Operationen auf einem Teil der Daten)

Die Begriffe „Availability“ und „Partition tolearance“ sind sehr stark miteinander Verbunden, und werden oft missverstanden. Beide Begriffe haben etwas mit der Verfügbarkeit und verteilten Systemen zu tun, unterscheiden sich aber in den Zielen.

CAP explanations
Availability and Partition Tolerance
CAP Confusion: Problems with „partition tolerance“

NoSQL
A Brief History of NoSQL
List of NoSQL Databases
Amazon SimpleDB Consistency Enhancements

Eventual consistency
BASE: An Acid Alternative
Werner Vogels on ACM Queue
Eventually Consistent – Revisited
Wikipedia
CouchDB Book

Veröffentlicht in NoSQL