LSD für Datenbankentwickler – Das ACID Prinzip

Softwareentwicklung

LSD für Datenbankentwickler – Das ACID Prinzip

LSD für Datenbankentwickler – Das ACID Prinzip

Bei ACID handelt es sich natürlich nicht um die umgangssprachliche bezeichnung von LSD. Es handelt sich hier um ein Akronym, welches erwünschte Eigenschaften von Transaktionen in einer Datenbank beschreibt. Eine Transaktion ist eine Sammlung mehrerer aufeinanderfolgender und zusammenhängender Datenbankoperationen.

Ein typisches Beispiel für eine Transaktion wäre die Überweisung innerhalb eines Kreditinstitutes. Gehen wir der Übersicht halber davon aus, dass für die Aktion, “Bernd überweist Sonja 100 Euro”, folgende Operationen erforderlich sind:

1. 100 Euro von Bernds Konto abziehen

2. 100 Euro auf Sonjas Konto gutschreiben

Das “A” in ACID

Nehmen wir an, dass Bernd die Überweisung in Auftrag gibt, das Geld von seinem Konto abgebucht, aber niemals Sonja gutgeschrieben wird. Das wäre ein verstoß gegen das Prinzip der Atomarität (atomacy). Entweder es wird alles ausgeführt, oder nichts. Stockt die Operation an irgendeiner Stelle, wird alles wieder rückgängig gemacht. Man kann sich das “A” auch ganz gut mit alles oder nichts merken.

Das “C” in ACID

Nehmen wir an Bernd gibt die Überweisung in Auftrag, er hat 100 Euro weniger auf dem Konto und Sonja 100 mehr. Plötzlich ist die Zahlung auf Sonjas Kontoauzug nicht mehr Bernd zugeordnet, sondern irgendeinem anderen Kunden der Bank. Dies wäre ein Verstoß gegen die Regel der Konsistenz (consistency). Nach Beendigung der Transaktion müssen die notwendigen und explizit definierten Integritätsbedingungen der Datenbank ihre Gültigkeit haben. Hierzu zählt insbesondere das definierte Verhalten von Fremdschlüsseln.

Das “I” in ACID

Transaktionen welche gerade ausgeführt werden, dürfen sich nicht gegenseitig beeinflussen. D.h. in dem Moment in dem Bernd die 100 Euro überweist, muss jemand der Geld von Bernds Konto abbuchen möchte entweder warten bis die Transaktion abgeschlossen ist, oder die Abbuchungstransaktion muss mit den gleichen Ausgangsdaten arbeiten, wie sie vor beginn der Überweisung gegeben waren. Sonst läge ein Verstoß gegen das Prinzip der Isolation (isolation) vor.

Das “D” in ACID

Bernd  überweist die 100 Euro, sie werden Sonja gutgeschrieben und plötzlich hat Bernd wieder 100 Euro mehr, aber Sonja nicht 100 Euro weniger. Das ist ein Verstoß gegen das Prinzip der Dauerhaftigkeit (durability). Nach Abschluss einer Transaktion müssen die Daten so gespeichert sein, dass sie auch einem Systemabsturz oder Stromausfall standhalten können. Die geschieht in der Regel durch Speicherung auf einem nicht flüchtigen Datenträger, wie einer Festplatte.

Das Bild welches diesen Post ziert ist übrigens eine Eigenekreation. Wenn man es lange genug anschaut bekommt man Sehstörungen und Kopfschmerzen. Aber ich fand es passt ganz gut zum Titel.

Diskussion

Ein Kommentar zu “LSD für Datenbankentwickler – Das ACID Prinzip”

  1. [...] ACID-Prinzip beschreibt einige Regeln zum sinnvollen Arbeiten mit Datenbanken. Es hat gewisse Konsequenzen, was [...]

    Posted by Was ein relationales Datenbankmodell mit Datenschutz zu tun hat | buildblog | April 10, 2010, 11:11

Post a comment