Zum Hauptinhalt springen

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