Das ACID-Modell des Datenbankentwurfs ist eines der ältesten und wichtigsten Konzepte der Datenbanktheorie. Sie legt vier Ziele vor, die jedes Datenbankverwaltungssystem anstreben muss: Atomizität, Konsistenz, Isolation und Haltbarkeit. Eine relationale Datenbank, die eines dieser vier Ziele nicht erfüllt, kann nicht als zuverlässig angesehen werden. Eine Datenbank, die diese Eigenschaften besitzt, gilt als ACID-konform.
ACID definiert
Nehmen wir uns einen Moment Zeit, um alle diese Merkmale im Detail zu untersuchen:
- Atomizität besagt, dass Datenbankänderungen einer "Alles oder Nichts" -Regel folgen müssen. Jede Transaktion wird als "atomar" bezeichnet. Wenn ein Teil der Transaktion fehlschlägt, schlägt die gesamte Transaktion fehl. Es ist wichtig, dass das Datenbankverwaltungssystem die atomare Natur der Transaktionen trotz DBMS-, Betriebssystem- oder Hardwarefehlern aufrechterhält.
- Konsistenz besagt, dass nur gültige Daten in die Datenbank geschrieben werden. Wenn aus irgendeinem Grund eine Transaktion ausgeführt wird, die gegen die Konsistenzregeln der Datenbank verstößt, wird die gesamte Transaktion rückgängig gemacht, und die Datenbank wird in einem Zustand wiederhergestellt, der mit diesen Regeln übereinstimmt. Wenn eine Transaktion jedoch erfolgreich ausgeführt wird, wechselt die Datenbank von einem Zustand, der den Regeln entspricht, in einen anderen Zustand, der ebenfalls mit den Regeln übereinstimmt.
- Isolierung setzt voraus, dass mehrere gleichzeitig stattfindende Transaktionen die Ausführung des jeweils anderen nicht beeinträchtigen. Wenn zum Beispiel Joe eine Transaktion gegen eine Datenbank ausgibt, während Mary eine andere Transaktion ausgibt, sollten beide Transaktionen isoliert auf der Datenbank ausgeführt werden. Die Datenbank sollte entweder die gesamte Transaktion von Joe ausführen, bevor Mary ausgeführt wird, oder umgekehrt. Dies verhindert, dass Joes Transaktion Zwischendaten liest, die als Nebeneffekt eines Teils von Marys Transaktion erzeugt wurden und nicht endgültig an die Datenbank übergeben werden. Beachten Sie, dass die Isolationseigenschaft nicht sicherstellt, welche Transaktion zuerst ausgeführt wird - lediglich dass Transaktionen sich nicht gegenseitig beeinflussen
- Haltbarkeit stellt sicher, dass keine für die Datenbank festgeschriebene Transaktion nicht verloren geht. Die Haltbarkeit wird durch die Verwendung von Datenbanksicherungen und Transaktionsprotokollen sichergestellt, die die Wiederherstellung festgeschriebener Transaktionen trotz nachfolgender Software- oder Hardwarefehler erleichtern.
Wie funktioniert ACID in der Praxis?
Datenbankadministratoren verwenden verschiedene Strategien zur Durchsetzung von ACID.
Eine, die verwendet wird, um Atomizität und Haltbarkeit durchzusetzen, ist Write-Ahead-Protokollierung (WAL), in dem alle Transaktionsdetails zuerst in ein Protokoll geschrieben werden, das sowohl Wiederholungs- als auch Rückgängig-Informationen enthält. Dadurch wird sichergestellt, dass die Datenbank bei einem Datenbankfehler jeglicher Art das Protokoll prüfen und seinen Inhalt mit dem Status der Datenbank vergleichen kann.
Eine andere Methode, um Atomizität und Dauerhaftigkeit anzusprechen, ist Schatten-Paging, in der eine Schattenseite erstellt wird, wenn Daten geändert werden sollen. Die Aktualisierungen der Abfrage werden auf die Schattenseite geschrieben und nicht auf die tatsächlichen Daten in der Datenbank. Die Datenbank selbst wird nur geändert, wenn die Bearbeitung abgeschlossen ist.
Eine andere Strategie heißt Zwei-Phasen-Commit Protokoll, besonders nützlich in verteilten Datenbanksystemen. Dieses Protokoll teilt eine Anforderung zum Ändern von Daten in zwei Phasen auf: eine Festschreibungsanforderungsphase und eine Festschreibungsphase. In der Anforderungsphase müssen alle DBMSs in einem Netzwerk, die von der Transaktion betroffen sind, bestätigen, dass sie diese erhalten haben, und die Kapazität haben, die Transaktion auszuführen. Sobald die Bestätigung von allen relevanten DBMSs empfangen wurde, ist die Festschreibungsphase abgeschlossen, in der die Daten tatsächlich geändert werden.