Was ist eine verteilte Datenbank?
Eine verteilte Datenbank verteilt Daten auf mehrere Server (Knoten) an verschiedenen Standorten. Das CAP-Theorem besagt, dass Sie nur zwei von drei Eigenschaften garantieren können: Konsistenz (jeder Lesevorgang sieht den letzten Schreibvorgang), Verfügbarkeit (jede Anfrage erhält eine Antwort) und Partitionstoleranz (das System funktioniert trotz Netzwerkaufteilungen).
Warum ist das wichtig? Jeder große Internetdienst von Google bis Netflix basiert auf verteilten Datenbanken. Das Verständnis der Kompromisse zwischen Konsistenz und Verfügbarkeit ist entscheidend für den Aufbau zuverlässiger, skalierbarer Systeme, die Milliarden von Nutzern bedienen.
📖 Vertiefung
Analogie 1
Stellen Sie sich ein Bibliothekssystem mit Zweigstellen in fünf Städten vor, die alle denselben Katalog nutzen. Wenn jemand in Filiale A ein Buch ausleiht, müssen alle anderen Filialen ihre Unterlagen aktualisieren. Wenn die Telefonleitung zu Zweigstelle C ausfällt (eine Netzwerkpartition), zeigt Zweigstelle C das Buch möglicherweise immer noch als verfügbar an – das ist ein Konsistenzproblem. Sie könnten die gesamte Kreditvergabe sperren, bis Filiale C wieder eine Verbindung herstellt (durch Auswahl der Konsistenz), oder jede Filiale die Kreditvergabe unabhängig weiterführen lassen und später abgleichen (durch Auswahl der Verfügbarkeit).
Analogie 2
Stellen Sie sich einen Gruppenchat mit Freunden aus verschiedenen Ländern vor. Wenn Sie eine Nachricht senden, sollte sie für alle in der gleichen Reihenfolge sichtbar sein. Wenn jedoch die Internetverbindung einer Person unterbrochen wird, verpasst sie Nachrichten und antwortet möglicherweise auf veraltete Informationen – was zu widersprüchlichen Konversationsthreads führt. Verteilte Datenbanken stehen genau diesem Problem in großem Umfang gegenüber und nutzen Techniken wie Vektoruhren und CRDTs, um das Chaos zu beseitigen, wenn sich alle wieder verbinden.
🎯 Simulator-Tipps
Anfänger
Beginnen Sie mit 5 Knoten und Replikationsfaktor 3 – das bedeutet, dass jedes Datenelement auf 3 der 5 Knoten gespeichert wird
Mittelstufe
Vergleichen Sie die Schreibkonsistenz ALL mit ONE – ALL ist langsamer, garantiert aber, dass jedes Replikat über die neuesten Daten verfügt
Experte
Deaktivieren Sie Vector Clocks und lösen Sie gleichzeitige Schreibvorgänge während einer Partition aus, um ungelöste Konflikte zu beobachten
📚 Glossar
🏆 Schlüsselpersonen
Eric Brewer (2000)
Formulierte das CAP-Theorem an der UC Berkeley und prägte das verteilte Datenbankdesign grundlegend, indem es die Unmöglichkeit bewies, gleichzeitig Konsistenz, Verfügbarkeit und Partitionstoleranz zu gewährleisten
Leslie Lamport (1998)
Erstellte den Paxos-Konsensalgorithmus und leistete Pionierarbeit in der Theorie verteilter Systeme mit Konzepten wie logischen Uhren, Lamport-Zeitstempeln und dem Problem der byzantinischen Generäle
Diego Ongaro (2014)
Entwickelte den Raft-Konsensalgorithmus in Stanford, um verteilten Konsens für reale Systeme wie etcd und CockroachDB verständlich und praktisch zu machen
Werner Vogels (2007)
Leitete das Design von Amazons Dynamo, das konsistentes Hashing, Vektoruhren und schlampige Quoren einführte – und Cassandra, Riak und die gesamte NoSQL-Bewegung inspirierte
Jeff Dean & Wilson Hsieh (2012)
Mitentwickelter von Google Spanner, der ersten weltweit verteilten Datenbank mit extern konsistenten Transaktionen unter Verwendung der TrueTime API und GPS/Atomuhr-Synchronisierung
Marc Shapiro (2011)
Pionierarbeit bei konfliktfreien replizierten Datentypen (CRDTs) am INRIA, Bereitstellung mathematischer Grundlagen für koordinationsfreie letztendliche Konsistenz
🎓 Lernressourcen
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services [paper]
Der formale Beweis des CAP-Theorems, der das grundlegende Unmöglichkeitsresultat für verteilte Systeme festlegt (ACM SIGACT News, 2002) - Dynamo: Amazon's Highly Available Key-value Store [paper]
Amazons einflussreiches Papier zu „Eventually Consistent Distributed Storage“ mit konsistentem Hashing, Vektoruhren und schlampigem Quorum (SOSP 2007) - Spanner: Google's Globally Distributed Database [paper]
Googles TrueTime-basierte global konsistente Datenbank erreicht externe Konsistenz durch GPS und Atomuhrsynchronisation (OSDI 2012) - In Search of an Understandable Consensus Algorithm (Raft) [paper]
Der auf Verständlichkeit ausgelegte Raft-Konsensalgorithmus, der jetzt in etcd, CockroachDB und TiKV verwendet wird (USENIX ATC 2014) - Designing Data-Intensive Applications [article]
Martin Kleppmanns umfassender Leitfaden zu den Grundlagen verteilter Systeme, Replikation, Partitionierung und Konsistenzmodellen - Jepsen.io [article]
Kyle Kingsburys strenge Tests und Analysen der Richtigkeitsansprüche verteilter Datenbanken unter realen Fehlerbedingungen - The Raft Consensus Algorithm Visualization [article]
Interaktive Visualisierung des Raft-Konsensalgorithmus mit schrittweiser Wahl des Leiters und Protokollreplikation