Das CAP-Theorem besagt: Ein verteiltes System kann nicht gleichzeitig alle drei folgenden Eigenschaften vollständig garantieren:
- Consistency (Konsistenz) – Jeder Knoten sieht zu jeder Zeit den gleichen Datenstand. Das heißt: Nach einer Datenänderung sind alle Kopien überall direkt aktualisiert.
- Availability (Verfügbarkeit) – Jede Anfrage an das System wird (auch bei Ausfällen einzelner Knoten) beantwortet, das System ist also stets funktionsfähig.
- Partition Tolerance (Partitionstoleranz) – Das System funktioniert auch dann weiter, wenn die Kommunikation zwischen Bestandteilen (also Knoten) gestört ist. Es „toleriert“ also Netzausfälle oder Partitionen.
Stellen wir uns vor, ein System ist partitioniert (Es gibt eine Netzwerkunterbrechung):
- Willst du Konsistenz? Dann musst du Anfragen möglicherweise ablehnen, solange du keinen synchronisierten Stand gewährleisten kannst (d.h. die Verfügbarkeit leidet).
- Willst du Verfügbarkeit? Dann akzeptierst du, dass in Partitionen die Daten temporär inkonsistent sein können.