ACID, deutsch auchAKID, ist eine Abkürzung in derInformatik. Es beschreibt häufig erwünschte Eigenschaften vonTransaktionen inDatenbankmanagementsystemen (DBMS) undverteilten Systemen. Es steht fürenglischatomicity, consistency, isolation unddurability. Man spricht im Deutschen auch vonAKID-Eigenschaften (Atomarität, Konsistenz, Isolation undDauerhaftigkeit). Sie gelten als Voraussetzung für die Verlässlichkeit von Systemen. DasAkronym ACID zur Charakterisierung von Transaktionen wurde 1983 von den InformatikernTheo Härder undAndreas Reuter geprägt.[1]
Eine Transaktion ist eine Folge von Datenbank-Operationen. Atomarität stellt sicher, dass diese 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 einRollback durchgeführt, d. h., alle bis dahin 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.
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 definiertenIntegritätsbedingungen vor dem Abschluss der Transaktion überprüft werden. Ist das nicht möglich, oder tritt ein Fehler auf, wird die gesamte Transaktion rückgängig gemacht.
Durch das Prinzip derIsolation 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. Dertransaktionale Isolationsgrad definiert dabei die erlaubte Art der Beeinflussung, verbreitete Einstellungen sind dabeiREAD COMMITTED,REPEATABLE READ sowieSERIALIZABLE.
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 einesTransaktionslogs sichergestellt werden. Ein Transaktionslog erlaubt es, nach einem Systemausfall alle noch fehlenden Schreib-Operationen in der Datenbank auszuführen.
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 imCAP-Theorem von Brewer formuliert. Im Umfeld derNoSQL-Datenbanken wird daher häufig das BASE-Prinzip (BasicallyAvailable,Soft state,Eventual consistency) verfolgt.