Datenbanken in Rechnernetzen und Transaktionssysteme - Cheatsheet
Architekturen für verteilte Systeme
Definition:
Strukturierte Anordnung von Komponenten, um verteilte Aufgaben effizient zu erledigen; wichtig für Skalierbarkeit und Ausfallsicherheit.
Details:
- Client-Server: Aufteilung in Client und Server; Clients senden Anfragen, Server antworten
- Peer-to-Peer (P2P): Gleichberechtigte Knoten, die direkt miteinander kommunizieren
- Schichtenarchitektur: Mehrere Ebenen, z.B. Präsentation, Logik und Datenhaltung getrennt
- Microservices: Modularisierung in kleine, unabhängige Dienste, die über APIs kommunizieren
- \textbf{Wichtige Konzepte}: Skalierbarkeit, Lastverteilung, Fehlertoleranz
ACID-Eigenschaften (Atomicity, Consistency, Isolation, Durability)
Definition:
ACID-Eigenschaften sind grundlegende Prinzipien, die Transaktionen in Datenbanksystemen sicherstellen, um Datenintegrität und Zuverlässigkeit zu gewährleisten.
Details:
- Atomicity: Transaktionen sind unteilbar; entweder wird die gesamte Transaktion durchgeführt oder gar nicht. -> \textit{Ganz oder gar nicht Prinzip.}
- Consistency: Transaktionen führen das System von einem konsistenten Zustand in einen anderen. -> \textit{Datenintegrität wird erhalten.}
- Isolation: Gleichzeitige Transaktionen beeinflussen sich nicht gegenseitig. -> \textit{Erscheinungsbild von sequentieller Ausführung.}
- Durability: Nach Abschluss einer Transaktion bleiben die Änderungen dauerhaft bestehen, selbst bei Systemausfällen. -> \textit{Permanent gesicherte Daten.}
Synchrone vs. Asynchrone Replikation
Definition:
Synchrone Replikation: Änderungen an der Primärdatenbank werden auf allen Replikas sofort umgesetzt. Asynchrone Replikation: Änderungen werden später zu den Replikas propagiert.
Details:
- Synchrone Replikation: Niedrige Latenz, hohe Konsistenz, hohe Netzwerkbelastung
- Asynchrone Replikation: Höhere Latenz, mögliche Inkonsistenz, geringere Netzwerkbelastung
- Beispielformel für synchrone Replikation: \[ T_{rep} = T_{primär} + T_{netz} \]
- Beispielformel für asynchrone Replikation: \[ D_{latenz} = T_{primär} - T_{replik} \]
CAP-Theorem (Consistency, Availability, Partition Tolerance)
Definition:
Das CAP-Theorem beschreibt den Trade-off in verteilten Systemen zwischen Konsistenz, Verfügbarkeit und Partitionstoleranz.
Details:
- Konsistenz (Consistency, C): Alle Knoten sehen dieselben Daten zur gleichen Zeit.
- Verfügbarkeit (Availability, A): Jede Anfragen erhält eine Antwort (Erfolg oder Fehler).
- Partitionstoleranz (Partition Tolerance, P): Das System arbeitet trotz Netzwerkpartitionen weiter.
- Im Falle einer Netzwerkpartition musst Du Dich zwischen C und A entscheiden.
Log-basierte Wiederherstellung
Definition:
Methode zur Wiederherstellung von Datenbanken unter Benutzung von Protokollen, um den Zustand der Datenbank vor einem Fehler wiederherzustellen.
Details:
- ARD: Atomicity, Consistency, Isolation, Durability.
- WAL-Protokoll (Write Ahead Logging): Änderungen werden zuerst im Log und dann in der Datenbank geschrieben.
- REDO- und UNDO-Protokoll: Wiederholung (REDO) und Rückgängigmachung (UNDO) von Transaktionen.
- Checkpoint: Markiert sicheren Zustand, um Startpunkt zu reduzieren.
- Log enthält sowohl 'before' als auch 'after' Images bei Änderungen.
- Recovery-Prozesse: Normalerweise auf Basis der Analyse-, Redo-, und Undo-Phasen.
Konsistenzmodelle für replizierte Daten
Definition:
Modelle zur Gewährleistung der Konsistenz von Daten, die über mehrere Systeme verteilt sind.
Details:
- Starke Konsistenz: Alle Knoten sehen immer den selben Stand der Daten nach einer Transaktion.
- Eventuelle Konsistenz: Daten werden schließlich konsistent, keine sofortige Konsistenzgarantie.
- Monotone Konsistenz: Ein Knoten sieht keine ältere Version der Daten, nachdem er eine neuere gesehen hat.
- Kausale Konsistenz: Schreiboperationen, die kausal zusammenhängen, erscheinen in der gleichen Reihenfolge bei allen Knoten.
- Lesesichtkonsistenz: Konsistente Sicht auf Daten während einer Operation.
Partitionierung und Fragmentierung
Definition:
Partitionierung teilt Datenbank in mehrere unabhängige Teile. Fragmentierung zerlegt eine Relation in kleinere Teile.
Details:
- Partitionierungstypen: - Horizontale Partitionierung - Vertikale Partitionierung
- Fragmentierungstypen: - Horizontale Fragmentierung (\texttt{WHERE}-Klausel) - Vertikale Fragmentierung (Attribut-Untergruppen)
- Kombination beider möglich (Hybrid-Partionierung)
- Wichtig für Datenverteilung, Performance und Verfügbarkeit
Concurrency Control Mechanismen
Definition:
Concurrency Control Mechanismen sichern die Konsistenz von Datenbanken bei konkurrierendem Zugriff durch mehrere Transaktionen.
Details:
- Ziel: Vermeidung von Inkonsistenzen und Sicherstellung von Serialisierbarkeit
- Optimistische Kontrolle: Konfliktvermeidung durch Validierung am Ende
- Pessimistische Kontrolle: Vermeidung durch Sperren (Locks)
- Zwei-Phasen-Sperrprotokoll (2PL): Sperren in Wachstumsphase, Freigeben in Schrumpfphase
- Deadlocks: Vermeidung und Behandlung notwendig (z.B. durch Wait-Die oder Wound-Wait-Schema)
- Timestamp-basierte Steuerung: Jüngere Transaktionen blockieren ältere nur, falls Konflikte entstehen