ACID

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Atomarität)
Wechseln zu: Navigation, Suche

ACID, deutsch auch AKID, ist eine Abkürzung in der Informatik. Es beschreibt häufig erwünschte Eigenschaften von Transaktionen in Datenbankmanagementsystemen (DBMS) und verteilten Systemen. Es steht für englisch atomicity, consistency, isolation und durability. Man spricht im Deutschen auch von AKID-Eigenschaften (Atomarität, Konsistenz, Isolation und Dauerhaftigkeit). Sie gelten als Voraussetzung für die Verlässlichkeit von Systemen. Das Akronym ACID zur Charakterisierung von Transaktionen wurde 1983 von den Informatikern Theo Härder und Andreas Reuter geprägt.[1]

Eigenschaften[Bearbeiten | Quelltext bearbeiten]

Atomarität (Abgeschlossenheit)[Bearbeiten | Quelltext bearbeiten]

Eine Transaktion ist eine Folge von Datenbank-Operationen, die entweder ganz oder gar nicht ausgeführt wird (Alles-oder-nichts-Eigenschaft).[2]. Praktisch werden die einzelnen Datenbankanweisungen, aus denen sich die Transaktion zusammensetzt, natürlich nacheinander ausgeführt, aber global erst dann „für gültig erklärt und in Kraft gesetzt“, wenn sie erfolgreich vollständig abgeschlossen sind. Sollte sich jedoch während der Transaktion herausstellen, dass diese nicht vollständig abgeschlossen werden kann, wird der ursprüngliche Bereich als gültig erklärt und ein Rollback durchgeführt, d. h., alle bisherig ausgeführten Anweisungen wieder rückgängig gemacht, sofern notwendig – oder einfach der zwischenzeitlich für die Änderungen genutzte Speicherbereich wieder freigegeben und die Gültigkeit beim bisherigen belassen.

Konsistenzerhaltung[Bearbeiten | Quelltext bearbeiten]

Konsistenz heißt, dass eine Transaktion nach Beendigung einen konsistenten Datenbankzustand hinterlässt, falls die Datenbank davor auch konsistent war. Dies beinhaltet, dass alle im Datenbankschema definierten Integritätsbedingungen vor dem Abschluss der Transaktion überprüft werden.

Isolation (Abgrenzung)[Bearbeiten | Quelltext bearbeiten]

Durch das Prinzip der Isolation wird verhindert/eingeschränkt, dass sich nebenläufig in Ausführung befindliche Transaktionen gegenseitig beeinflussen. Realisiert wird dies üblicherweise durch Sperrverfahren, die vor einem Datenzugriff die benötigten Daten für andere Transaktionen sperren. Sperrverfahren schränken die Nebenläufigkeit ein und können zu Blockierungen führen. In vielen Datenbanksystemen kann das verwendete Isolationsverfahren daher so konfiguriert werden, dass bestimmte eigentlich unerwünschte Effekte zugelassen werden um eine höhere Nebenläufigkeit zu erreichen. Der transaktionale Isolationsgrad definiert dabei die erlaubte Art der Beeinflussung, verbreitete Einstellungen sind dabei READ COMMITTED, REPEATABLE READ sowie SERIALIZABLE.

Dauerhaftigkeit[Bearbeiten | Quelltext bearbeiten]

Der Begriff Dauerhaftigkeit sagt aus, dass Daten nach dem erfolgreichen Abschluss einer Transaktion garantiert dauerhaft in der Datenbank gespeichert sind. Die dauerhafte Speicherung der Daten muss auch nach einem Systemfehler (Software-Fehler oder Hardware-Ausfall) garantiert sein. Insbesondere darf es nach einem Ausfall des Hauptspeichers nicht zu Datenverlusten kommen. Dauerhaftigkeit kann durch das Schreiben eines Transaktionslogs sichergestellt werden. Ein Transaktionslog erlaubt es, nach einem Systemausfall alle in der Datenbank fehlenden Schreib-Operationen zu reproduzieren.

Probleme und Einschränkungen[Bearbeiten | Quelltext bearbeiten]

In verteilten Datenbanken kommt es zu Problemen, wenn alle ACID-Eigenschaften erfüllt werden sollen und gleichzeitig eine hohe Verfügbarkeit erreicht werden soll. Diese Probleme wurden in dem CAP-Theorem von Brewer formuliert. Im Umfeld der NoSQL-Datenbanken wird daher häufig das BASE-Prinzip (Basically Available, Soft state, Eventual consistency) verfolgt.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Alfons Kemper, André Eickler: Datenbanksysteme. 5. Auflage. Oldenbourg, ISBN 3-486-27392-2, S. 272. (Erstmals erwähnt wurde ACID im Paper Theo Haerder, Andreas Reuter: Principles of Transaction-oriented Database Recovery. In: ACM Comput. Surv. Band 15, Nr. 4, 1983, S. 287–317, doi:10.1145/289.291 (uni-jena.de [PDF; 2,6 MB]).)
  2. Erhard Rahm: Mehrrechner-Datenbanksysteme. Oldenbourg, 1994, ISBN 978-3-486-24363-5, Kapitel 1.1.2 (Onlineausgabe [abgerufen am 2. August 2010]).