CAP Theorem
Das CAP-Theorem beschreibt die grundlegenden Einschränkungen von verteilten Datenbanken in Bezug auf Konsistenz, Verfügbarkeit und Partitionstoleranz.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Mögliche Dateninkonsistenzen.
- Überlastung des Systems bei hoher Verfügbarkeit.
- Schwierigkeiten bei der Fehlersuche.
- Regelmäßige Überprüfung der Systemarchitektur.
- Einsatz von Monitoring-Tools.
- Dokumentation aller Entscheidungen.
I/O & Ressourcen
- Anforderungen an das System
- Architekturentscheidungen
- Datenmanagement-Strategien
- Entscheidungen über Konsistenz und Verfügbarkeit
- Implementierungsrichtlinien
- Optimierte Systemarchitektur
Beschreibung
Das CAP-Theorem, formuliert von Eric Brewer, besagt, dass in einem verteilten Datensystem nicht alle drei Eigenschaften – Konsistenz, Verfügbarkeit und Partitionstoleranz – gleichzeitig garantiert werden können. Bei einem Netzwerkpartitionierungsereignis muss ein System entweder auf Konsistenz oder auf Verfügbarkeit verzichten. Dies hat weitreichende Auswirkungen auf das Design und die Implementierung von verteilten Systemen.
✔Vorteile
- Verbesserte Systemverfügbarkeit.
- Flexibilität bei der Datenarchitektur.
- Bessere Fehlertoleranz.
✖Limitationen
- Konsistenz kann in bestimmten Szenarien beeinträchtigt werden.
- Erfordert sorgfältige Planung und Design.
- Kann zu Komplexität in der Implementierung führen.
Trade-offs
Metriken
- Systemverfügbarkeit
Messung der Verfügbarkeit des Systems unter verschiedenen Bedingungen.
- Datenkonsistenzrate
Prozentsatz der konsistenten Datenabfragen.
- Reaktionszeit
Zeit, die das System benötigt, um auf Anfragen zu reagieren.
Beispiele & Implementierungen
Cassandra Datenbank
Cassandra ist eine verteilte NoSQL-Datenbank, die hohe Verfügbarkeit und Partitionstoleranz bietet, jedoch auf Konsistenz verzichtet.
Amazon DynamoDB
DynamoDB ist ein verwalteter NoSQL-Datenbankdienst, der auf hohe Verfügbarkeit und Partitionstoleranz ausgelegt ist.
Google Cloud Spanner
Cloud Spanner bietet globale Konsistenz und hohe Verfügbarkeit, indem es eine Kombination aus verteilten und relationalen Datenbanktechnologien verwendet.
Implementierungsschritte
Bewertung der Systemanforderungen.
Entwicklung einer Architekturstrategie.
Implementierung und Test der Lösung.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Veraltete Datenbanktechnologien.
- Mangelnde Dokumentation von Entscheidungen.
- Unzureichende Tests und Validierungen.
Bekannte Engpässe
Beispiele für Missbrauch
- Verwendung eines Systems ohne Berücksichtigung der Partitionstoleranz.
- Fokussierung auf Konsistenz auf Kosten der Verfügbarkeit.
- Vernachlässigung der Benutzeranforderungen.
Typische Fallen
- Annahme, dass Konsistenz immer notwendig ist.
- Glaube, dass Partitionen nie auftreten.
- Unterschätzung der Systemkomplexität.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Einhaltung von Datenschutzbestimmungen.
- • Technische Infrastruktur muss vorhanden sein.
- • Ressourcenkapazitäten müssen berücksichtigt werden.