Begriff
BASE
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Wer ACID will, muss warten (Locks, Quorum). Das Internet (Amazon, Google) kann nicht warten. "Der Warenkorb muss immer funktionieren." Ergebnis: BASE. Das Gegenstück zu ACID ("Base" vs "Acid" - Chemie-Witz).
- Basically Available: Das System funktioniert immer. Auch wenn Teile kaputt sind. (Lieber "falsche" Daten als "Keine Antwort").
- Soft State: Der Zustand ist "weich", er kann sich ändern, auch ohne Eingabe (durch Hintergrund-Sync).
- Eventual Consistency: Irgendwann (eventuell) sind alle Daten gleich. Aber jetzt gerade vielleicht nicht. Das ist die Philosophie von DynamoDB, Cassandra, Riak.
Merksatz: Ein Konsistenzmodell für verteilte Systeme (NoSQL), das Hochverfügbarkeit (Availability) über sofortige Konsistenz stellt und garantiert, dass das System "irgendwann" einen konsistenten Zustand erreicht (Eventual Consistency).
Wenn du eine "Like"-Zahl auf Facebook baust. Ist es schlimm, wenn ich "100 Likes" sehe und du "101"? Nein. Hauptsache, die Seite lädt schnell. Hier nimmst du BASE. Wenn du Geld überweist, nimmst du ACID. BASE erfordert intelligenteren Code im Client (Umgang mit Konflikten, Versionen).
1. CAP-Theorem
BASE wählt AP (Availability + Partition Tolerance) im CAP-Dreieck. ACID wählt meist CP (Consistency + Partition Tolerance). Man kann nicht alles haben.
2. Reconciliation
Wie wird es "Eventually Consistent"?
- Read Repair: Beim Lesen Unterschiede fixen.
- Anti-Entropy: Hintergrund-Prozesse (Merkle Trees), die Daten vergleichen.
- Last Writer Wins (LWW): Die Uhrzeit entscheidet (simpel, aber Datenverlust möglich).
1. Vektorableitung und CRDTs
Das E in BASE steht für Eventual Consistency. Wie verhindert Cassandra, dass Knoten A und Knoten B sich widersprechen? Der klassische Weg von LWW (Last Writer Wins) per simplen Timestamps zerstört im Zweifel wertvolle Updates bei Netzwerkausfällen. Moderne BASE-Ableger verlagern das Konflikt-Management strukturell nach oben über CRDTs (Conflict-free Replicated Data Types). Ein CRDT ist mathematisch deterministisch. Wenn User A und B gleichzeitig Items in einen CRDT-Warenkorb legen, können die Datenbankknoten in völlig zufälliger Reihenfolge und über Monate hinweg abgekoppelt aktualisiert werden; eine simple kommutative Operation am Ende garantiert für eine perfekte Replikation (Strong Eventual Consistency) ganz ohne Locks.
2. Lese- und Schreib-Quoren (Tunable Consistency)
Ist BASE wirklich immer nur "irgendwann"? Nein, die meisten verteilten NoSQL-Stores (Cassandra, Riak) haben Tunable Consistency Parameter für Write (W) und Read (R).
Bei 5 Replikaten im Cluster: Liest du mit R=1 und schreibst mit W=1, bist du hoch performant, aber Daten springen (BASE-Style).
Setzt du den Code auf das Quorum W=3 und R=3, bist du mathematisch gezwungen, dass $R + W > N$ (3+3 > 5). Damit erhältst du in einem BASE-System plötzlich strenge Quorum-Konsistenz (vergleichbar mit ACID-Eigenschaften), opferst dafür aber Verfügbarkeit und Performance. Es liegt im puren Ermessen des Application-Engineers, den Hebel fallweise zu stellen.
3. Read Repair und Merkle Trees (Anti-Entropy)
Die harte Frage in Masterless BASE Setups: Wie heilen sich Cluster von selbst? Zwei Säulen sind kritisch: Read Repair: Fragt ein Client mit Abstimmungs-Quorum drei Knoten nach einem Account-State, und der dritte liefert eine veraltete Version zurück, schickt der Koordinator dem Client das neue Ergebnis. Im selben Sekundenbruchteil feuert er asynchron ein Repair-Kommando ab, welche die Datenbank des lahmen Knotens heilt. Anti-Entropy via Merkle Trees: Die Knoten haschen Millionen Datensätze zu binären Hashes (Merkle Trees) und tauschen im Hintergrund nur diese winzigen 5-Byte Fingerabdrücke aus. Tritt ein Diff-Error auf, wird granular im Baum abgestiegen, bis das fehlerhafte Byte identifiziert und korrigiert wurde, ohne dass massive Datenmengen als Reparatur schwappen.
Quick-Check
Chemie?
Ja. Acid = Säure. Base = Lauge. Eric Brewer hat den Begriff humorvoll als Gegensatz gewählt.Amazon?
Amazon verliert Geld, wenn der "Kaufen"-Button nicht geht. Sie haben errechnet: 0.1s Latenz = 1% weniger Umsatz. Deshalb BASE.Kann man mischen?
Ja. Moderne Systeme (CockroachDB, Spanner) versuchen, ACID und Skalierbarkeit zu bieten ("NewSQL"). Sie nutzen extrem genaue Uhren (TrueTime), um die Wartezeit zu minimieren.