ACID-Prinzip

ACID ist ein Prinzip für transaktionsorientierte Informationssysteme um Transaktionssicherheit sicherzustellen. ACID (deutsch: AKID) steht für:
  • Atomicity (Atomarität)
  • Consistency (Konsistenz)
  • Isolation (Isoliertheit)
  • Durability (Dauerhaftigkeit bzw. Persistenz)

Atomicity / Atomarität
bedeutet, dass ein Vorgang wie eine einzelne Transaktion durchgeführt werden muss. D.h. es gibt nur den Zustand durchgeführt oder nicht durchgeführt. Besteht ein Vorgang aus mehreren einzelnen Transaktionen (z.B. Speicherung von Daten in mehreren Tabellen) muss sichergestellt werden, dass das OLTP entweder alle Daten in alle Tabellen oder keine Daten speichert. Die Speicherung eines Subset von Daten in nicht allen Tabellen ist kein gültiger Zustand für OLTP-Systeme. Passiert dies in der Realität doch einmal (z.B. Systemabsturz), dann müssen die schon ausgeführten Teil-Transaktionen wieder rückgängig gemacht werden (Rollback).

Consistency / Konsistenz: Bei der Verarbeitung von Transaktionen mittels OLTP muss sichergestellt werden, dass sowohl vor als auch nach der Verarbeitung die Konsistenz in der Datenbank sichergestellt ist. Unter Konsistenz wird hauptsächlich die referenzielle Integrität verstanden. Zu allen Referenzen (Beziehungen) muss ein gültiger Datensatz existieren. Die referentielle Integrität ist dann sichergestellt, wenn zu jedem Fremdschlüssel der gleichzeitig  Bestandteil eines Primärschlüssels (Primary Key) ist, ein Datensatz im referenzierten Objekt (Tabelle) mit dem Fremdschlüssel als Primärschlüssel existiert.
Andersherum sollte auch sichergestellt werden, dass in einer normalisierten Form zu jedem Datensatz auch mind. eine Referenz existieren sollte. Referenzen (Schlüssel, Fremdschlüssel) müssen eindeutig sein. Technische Mittel hierfür sind u.a. Primary Keys und Constrains. Dadurch können  u.a. auch Duplikate verhindert werden.
Zusätzlich zur referenziellen Integrität muss mit den OLTP die Vollständigkeit der Daten sichergestellt werden.

Isolation / Isoliertheit: Bei mehreren parallelen Transaktionen (z.B. Multiusersystemen) muss sichergestellt werden, dass sich diese nicht gegenseitig beeinflussen/manipulieren. Dies kann durch die Isolation von Transaktionen sichergestellt werden. Die einfachste Weise ist die serielle Abarbeitung von Transaktionen.

Durability / Dauerhaftigkeit / Persistenz: Die dauerhafte Speicherung der Ergebnisse einer Transaktion muss bei OLTP-Systemen sichergestellt werden. Sowohl Teilausfälle wie auch ein Komplettausfall dürfen keine Auswirkungen auf die Ergebnisse der Transaktion haben. Nur so ist die Dauerhaftigkeit bzw. Persistenz sichergestellt. Hierfür gibt es unterschiedliche Mechanismen, wie z.B. das Commit einer jeder einzelnen Transaktion oder aber das Logging von Einzeltransaktionen und ein gesammlter Commit mehrere Transaktionen nach einer bestimmten Zeitspanne. Je nach Performance-Anforderungen an das System aber auch die fachlichen Anforderungen sollte man sich für eines der möglichen Mechanismen entscheiden.



Comments