Was ist eine Transaktion?

Eine Transaktion ist eine Gruppe von Vorgängen mit den folgenden Eigenschaften: atomar, konsistent, isoliert und dauerhaft (ACID). Die Unterstützung von Transaktionen ermöglicht die Entwicklung neuer Anwendungstypen und vereinfacht gleichzeitig den Entwicklungsprozess und macht die Anwendung stabiler. Der Rest dieses Themas enthält Szenarien, die die Notwendigkeit dieser Eigenschaften veranschaulichen, und dann eine Tabelle, die jede Eigenschaft definiert.

In einer atomaren Gruppe von Vorgängen muss entweder jeder Vorgang in der Gruppe erfolgreich sein, oder die Auswirkungen aller Vorgänge müssen rückgängig machen (auch als Rollback bezeichnet). Beispielsweise muss es sich bei einer Bankübertragung um einen atomaren Satz von zwei Vorgängen handelt: eine Lastschrift von einem Konto und eine Gutschrift an ein anderes Konto. Die Lastschrift und das Guthaben müssen als atomare Gruppe implementiert werden. Wenn diese beiden Vorgänge nicht beide erfolgreich sind, erfolgt die Übertragung entweder unlauter zugunsten der Bank oder des Kontoinhabers.

Die Anforderung der Konsistenz bedeutet, dass die Daten nach der Transaktion konsistent sind (vorausgesetzt, wir haben vor der Transaktion mit einem konsistenten System begonnen). Im Beispiel für die Bankübertragung kann Konsistenz so definiert werden, dass der kombinierte Kontostand der beiden Konten eine Konstante ist. Um Konsistenz im Beispiel für die Bankübertragung zu implementieren, müssen die Lastschrift- und Kreditvorgänge einfach für denselben Betrag erfolgen.

Ein weiteres Beispiel für eine Transaktion ist ein Update einer Website. Eine E-Commerce-Website erfordert, dass eine neue Produktkategorienavigationsseite genau zur gleichen Zeit wie die Produktdetailseiten angezeigt wird, die die neuen Produkte beschreiben. In diesem Fall müssen mehrere Verzeichniseinträge unter der Kontrolle einer Transaktion aktualisiert und hinzugefügt werden. Es ist nicht nur erforderlich, dass die Updates atomar sind, sondern es ist auch notwendig, dass ein Kunde, der gerade kaufen möchte, die updates in Bearbeitung nicht sehen darf. Dies ist ein Beispiel für die Isolationseigenschaft von Transaktionen.

Für die Dauerhaftigkeitseigenschaft ist es erforderlich, dass die Auswirkungen nach Abschluss eines Updates auch dann beibehalten werden, wenn das System nicht mehr reagiert. Im vorherigen Beispiel kann die Dauerhaftigkeit einfach bereitgestellt werden, indem eine angemessene Datenwiederherstellung sichergestellt wird, sodass alle neuen Dateisystemeinträge, die das Hinzufügen eines neuen Produkts zum Standort darstellen, angezeigt werden, nachdem ein System nicht mehr reagiert. Dies erfordert ein System mit Datensicherungs-, Wiederherstellungs- und Hochverfügbarkeitsmechanismen.

Die Garantie der Atomarität einer Transaktion sowie der anderen Eigenschaften ist bei einer beliebigen Anzahl von Fehlern vorhanden, einschließlich Fehlern, die während der Wiederherstellungsphase eines vorherigen Fehlers auftreten. Schließlich erreicht das System einen von zwei Zuständen: Alle Vorgänge wurden angewendet, oder keiner der Vorgänge wurde angewendet.

Die Eigenschaften einer Transaktion werden in der folgenden Tabelle zusammengefasst.

Begriff BESCHREIBUNG
Atomic
Entweder sind alle Vorgänge in der Transaktion erfolgreich, oder keiner der Vorgänge bleibt erhalten.
Konsistent
Wenn die Daten vor Beginn der Transaktion konsistent sind, sind sie nach Abschluss der Transaktion konsistent.
Isoliert
Die Auswirkungen einer transaktion, die gerade ausgeführt wird, werden für alle anderen Transaktionen ausgeblendet.
Langlebig
Wenn eine Transaktion abgeschlossen ist, sind die Ergebnisse persistent und überstehen einen Systemabsturz.

Diese Eigenschaften stellen sicher, dass Software unerwartete Fehler behandeln kann, da sie eine Transaktion einfach abbrechen kann, wenn eine unerwartete Situation einen erfolgreichen Abschluss verhindert. Die Transaktionsinfrastruktur stellt sicher, dass für alle Auswirkungen der abgebrochenen Transaktion ein Rollback ausgeführt wird, sodass die Daten in einen konsistenten Zustand zurückgesetzt werden. Daher ermöglicht ein Transaktionssystem eine ordnungsgemäßen Wiederherstellung nach Systemfehlern.

Um die ACID-Eigenschaften zu gewährleisten, muss ein System, das Transaktionen unterstützt, über eine stabile Protokollierungsfunktion verfügen, die bei Bedarf zum Committen oder Rollback von Transaktionen verwendet werden kann. Weitere Informationen finden Sie unter Gemeinsames Protokolldateisystem.