Datenbanken versuchen, auch bei Fehlern und bei vielen gleichzeitigen Anfragen korrekt zu funktionieren, und selbst bei Stromausfällen keine Daten zu verlieren. Dazu halten sich die meisten Datenbanken an die ACID-Eigenschaften.

Beispiel

Betrachten wir eine Überweisung von 50 Euro von einem Bankkonto auf ein anderes. Die Überweisung besteht aus zwei Schritten:
  1. Vom ersten Konto werden 50 Euro abgezogen
  2. Zum anderen Konto werden 50 Euro hinzugefügt
Wenn bei Schritt 2 ein Fehler auftritt oder der Strom ausfällt, dann sind die 50 Euro verschwunden; sie wurden vom einen Konto abgezogen, aber nicht zum anderen Konto hinzugefügt.
Wenn unsere Datenbank ACID-konform ist, dann können wir das Problem lösen, indem wir die beiden Schritte zu einer Transaktion zusammenzufassen.

Eigenschaften

Atomarität (atomicity)

Atomarität bedeutet, dass eine Transaktion als Einheit betrachtet wird, die entweder komplett durchgeführt wird, oder komplett fehlschlägt. Wenn irgendwo in der Transaktion ein Fehler auftritt, müssen bereits durchgeführte Änderungen wieder rückgängig gemacht werden.
Für die Geldüberweisung heißt das: Wenn bei Schritt 2 ein Fehler auftritt, wird das Geld nicht vom ersten Konto abgezogen.

Konsistenz (consistency)

In Datenbanken werden Regeln festgelegt, wie die Daten strukturiert sein müssen. Damit die Datenbank konsistent ist, müssen diese Regeln sowohl vor, als auch nach jeder Transaktion erfüllt sein. So wird gewährleistet, dass die Datenbank niemals in einen ungültigen (inkonsistenten) Zustand gelangt.
Ein Beispiel dafür sind Schlüssel: Damit die Datenbank konsistent ist, müssen die Schlüssel eindeutig sein, und Fremdschlüssel müssen auf gültige Datensätze verweisen.

Isolation

Oft werden viele Transaktionen gleichzeitig durchgeführt; Datenbanken müssen jedoch gewährleisten, dass die Transaktionen voneinander isoliert sind; das heißt, das Endergebnis muss das gleiche sein, als ob die Transaktionen hintereinander durchgeführt würden.
Für die Geldüberweisung heißt das: Auch wenn während der Transaktion (zwischen Schritt 1 und 2) scheinbar Geld fehlt, darf keine andere Transaktion diesen ungültigen Zustand beobachten.

Dauerhaftigkeit (durability)

Datenbanken sollten vor Stromausfällen sicher sein. Das heißt, sie sind zwar während eines Stromausfalls nicht erreichbar, aber es gehen keine gespeicherten Daten verloren; dazu müssen die Daten auf einer Festplatte gespeichert werden, und diese Daten müssen immer konsistent sein.
Für die Geldüberweisung heißt das: Wenn während der Überweisung der Strom ausfällt, geht kein Geld verloren; die Transaktion wird entweder verworfen oder nach dem Neustart der Datenbank fortgesetzt.
Kommentieren Kommentare