Warum benötigen wir ACID und Transaktionen?¶
Stell dir folgendes Szenario vor: Ein Banksystem führt eine Überweisung zwischen zwei Konten durch. Dabei muss zunächst ein Betrag vom Senderkonto abgezogen und anschliessend dem Empfängerkonto gutgeschrieben werden. Was passiert, wenn zwischen diesen beiden Schritten ein Systemabsturz auftritt? Oder wenn gleichzeitig mehrere Überweisungen vom selben Konto stattfinden und der Kontostand plötzlich inkonsistent wird?
Solche Probleme können schwerwiegende Folgen haben:
- Finanzverluste durch verlorene oder doppelt ausgeführte Transaktionen
- Rechtliche Konsequenzen durch fehlerhafte Datenzustände
- Verlust des Kundenvertrauens durch unzuverlässige Systeme
Genau diese Probleme adressieren das ACID-Paradigma und das Konzept der Transaktionen in Datenbanksystemen. Sie sind entscheidend für:
- Die Zuverlässigkeit von geschäftskritischen Anwendungen
- Die Datenkonsistenz bei Mehrbenutzerzugriff
- Die Wiederherstellbarkeit bei Systemfehlern
Die historische Entwicklung¶
Die Notwendigkeit für ein zuverlässiges Transaktionsmodell wurde bereits in den frühen 1970er Jahren erkannt, als Datenbanksysteme zunehmend in geschäftskritischen Anwendungen eingesetzt wurden Elmasri & Navathe (2016).
In den 1960er und frühen 1970er Jahren beherrschten hierarchische Datenbanksysteme wie IBM’s IMS den Markt. Diese frühen Systeme boten jedoch nur rudimentäre Mechanismen zur Wahrung der Datenintegrität. Mit dem Aufkommen relationaler Datenbanken, angestossen durch Edgar F. Codds bahnbrechendes Paper von 1970 Codd (1970), wurde der Grundstein für ausgereiftere Konzepte gelegt.
Die Notwendigkeit für konsistente Datenbankoperationen, selbst bei Systemausfällen, wurde besonders in Banken, Flugbuchungssystemen und anderen kritischen Anwendungen deutlich, wo inkonsistente Daten katastrophale Folgen haben konnten. Die ersten formalen Konzepte zu Transaktionen entstanden bei IBM im System R Projekt, einem der ersten relationalen Datenbanksysteme Bernstein & Newcomer (2009).
Der Begriff “ACID” selbst wurde erst 1983 von Theo Härder und Andreas Reuter in ihrem einflussreichen Paper “Principles of Transaction-Oriented Database Recovery” Härder & Reuter (1983) geprägt. Sie fassten damit die wesentlichen Eigenschaften zusammen, die ein zuverlässiges Datenbanksystem benötigt. ACID steht für Atomarität (Atomicity), Konsistenz (Consistency), Isolation (Isolation) und Dauerhaftigkeit (Durability).
Fundamentale Probleme bei gleichzeitigem Datenbankzugriff¶
In einer Multi-User-Umgebung treten ohne geeignete Mechanismen typischerweise drei Hauptprobleme auf:
Dirty Read (Unreine Lesevorgänge)¶
Wenn ein Benutzer Daten liest, die ein anderer Benutzer gerade ändert, aber noch nicht festgeschrieben hat.
Lost Update (Verlorene Aktualisierungen)¶
Wenn zwei Benutzer dieselben Daten gleichzeitig aktualisieren und eine Änderung die andere überschreibt.
Phantom Read (Phantomlesevorgänge)¶
Wenn ein Benutzer eine Abfrage mehrmals ausführt und verschiedene Ergebnisse erhält, weil ein anderer Benutzer Datensätze hinzugefügt oder entfernt hat.
Notwendigkeit einer Lösung¶
Diese Probleme führten zur Entwicklung des Transaktionskonzepts und der ACID-Eigenschaften als Lösung. Es wurde klar, dass Datenbanksysteme Mechanismen benötigen, die:
- Operationen als unteilbare Einheiten behandeln (Atomarität)
- Die Datenbank von einem konsistenten Zustand in einen anderen überführen (Konsistenz)
- Gleichzeitige Transaktionen voneinander isolieren (Isolation)
- Einmal festgeschriebene Änderungen dauerhaft speichern (Dauerhaftigkeit)
Das ACID-Paradigma hat sich seither als Goldstandard für transaktionale Systeme etabliert und ist besonders in relationalen Datenbanksystemen wie PostgreSQL, Oracle, MySQL und SQL Server fest verankert. Es bildet die Grundlage für zuverlässige Datenverarbeitung in kritischen Anwendungen und ist ein wesentlicher Grund für den anhaltenden Erfolg relationaler Datenbanken in Unternehmensumgebungen Metis (2025).
Im nächsten Abschnitt werden wir die vier ACID-Eigenschaften im Detail betrachten und verstehen, wie sie zusammenwirken, um die Datenintegrität zu gewährleisten.
- Codd, E. F. (1970). A Relational Model of Data for Large Shared Data Banks. Communications of the ACM, 13(6).
- Bernstein, P. A., & Newcomer, E. (2009). Principles of Transaction Processing (2nd ed.). Morgan Kaufmann.
- Härder, T., & Reuter, A. (1983). Principles of Transaction-Oriented Database Recovery. ACM Computing Surveys, 15(4), 287–317.
- Metis. (n.d.). ACID (atomicity, consistency, isolation, durability). Metis Data. Retrieved March 9, 2025, from https://www.metisdata.io/glossary/acid-atomicity-consistency-isolation-durability