Grundlagen
Das CAP-Theorem
In einem verteilten System (z.B. NoSQL-Datenbank) können nur zwei der drei folgenden Ziele erreicht werden:
- C - Consistency - Konsistenz
- alle Benutzer erhalten dieselben Daten zur selben Zeit
- erfüllt, wenn alle Daten auf allen Knoten synchron existieren
- A - Availability - Verfügbarkeit
- jede Anfrage erhält Antwort
- auch, wenn mehrere Knoten ausgefallen sind
- P - Partition tolerance - Partitionstoleranz
- funktionstüchtig, auch wenn die Kommunikation mit einem Teil der Knoten unterbrochen ist
Eine Dienstleistung kann zum Beispiel auch nicht gleichzeitig günstig, gut und schnell sein:
CP - Consistency und Partition tolerance
- Bankautomaten
- Konsistenz ist wichtiger als Verfügbarkeit
→ keine Availability
AP - Availability und Partition tolerance
- Domain Name System (DNS)
- Auflösung von Hostnamen zur zugehörigen IP-Adresse
- es kann Tage dauern, bis ein geänderter DNS-Eintrag an die gesamte DNS-Hierarchie verteilt ist
- (viele) Cloud-Anwendungen
- z.B. Social-Media-Seiten wie Twitter oder Facebook
- Nachrichten müssen nicht gleichzeitig bei allen Nutzern eintreffen
→ keine Consistency
CA - Consistency und Availability
- nur in nicht-verteilten Systemen
- dort hat Netzwerkpartitionierung keine Bedeutung
- relationale Datenbanksysteme
→ keine Partition tolerance
ACID
- häufig erwünschte Eigenschaften von Transaktionen in Datenbanken
- Eigenschaften von relationalen Datenbanken
Atomicity / Atomität
All or nothing - commit all or nothing
- fähig, Transaktionen durchzuführen
- Transaktion
- Folge von Datenbank-Operationen
- Alles-oder-nichts-Eigenschaft
- alle Aktionen werden entweder ganz oder gar nicht ausgeführt
Consistency / Konsistenz
Preserving database invariants
- am Ende einer Transaktion sind alle Daten wieder konsistent, d.h. die Integritätsbedingungen sind eingehalten
- jede Transaktion hinterlässt konsistenten Datenbankzustand
Isolation
Concurrent transactions are isolated from each other
- nebenläufige Transaktion beeinflussen sich nicht gegenseitig
- Realisierung: üblicherweise durch Sperrverfahren, die vor einem Datenzugriff die benötigten Daten für andere Transaktionen sperren
Durability
Data is persisted after transaction is committed even in a system failure
- nach Abschluss der Transaktion sind die Daten dauerhaft gespeichert
BASE
- Gegenstück der strengen ACID Kriterien
- vor allem für NoSQL Systeme
Basically Available
- eine hohe Verfügbarkeit steht im Vordergrund
- der Preis dafür sind Abstriche in der Konsistenz
- Erreichung durch verteilte Systeme
Soft State
- auch wenn noch nicht alle Änderungen an das gesamte System propagiert wurden, werden Anfragen beantwortet
- Zustand der Daten kann sich ändern, ohne dass eine Applikation Einfluss darauf nimmt
Eventuelly Consistent
- Konsistenz wird nicht sofort, aber garantiert irgendwann erreicht