Was ist eine Transaktion?
Eine Transaktion ist eine Gruppe von Vorgängen mit den folgenden Eigenschaften: atomar, konsistent, isoliert und dauerhaft (ACID). Durch die Unterstützung von Transaktionen können neue Arten von Anwendungen entwickelt werden, während der Entwicklungsprozess vereinfacht und die Anwendung robuster wird. Im weiteren Verlauf dieses Themas finden Sie Szenarien, die die Notwendigkeit dieser Eigenschaften veranschaulichen, und dann eine Tabelle, die jede Eigenschaft definiert.
In einer atomischen Gruppe von Vorgängen muss entweder jeder Vorgang in der Gruppe erfolgreich sein, oder die Auswirkungen aller Vorgänge müssen rückgängig werden (auch als Rollback bezeichnet). Beispielsweise muss eine Überweisung eine atomare Gruppe von zwei Vorgängen sein: eine Lastschrift von einem Konto und eine Gutschrift auf ein anderes Konto. Die Lastschrift und das Guthaben müssen als atomische Gruppe implementiert werden. Wenn diese beiden Vorgänge nicht beide erfolgreich sind, erfolgt die Überweisung entweder in unfairer Weise 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). Für das Beispiel für eine Banküberweisung kann die Konsistenz so definiert werden, dass der kombinierte Kontostand der beiden Konten konstant ist. Um Konsistenz im Beispiel für banküberweisungen zu implementieren, müssen die Debit- und Kreditvorgänge einfach für denselben Geldbetrag erfolgen.
Ein weiteres Beispiel für eine Transaktion ist eine Aktualisierung einer Website. Eine E-Commerce-Website erfordert, dass eine neue Produktkategorienavigationsseite genau zur gleichen Zeit wie die Produktdetailseite angezeigt wird, die die neuen Produkte beschreiben. In diesem Fall ist es erforderlich, mehrere Verzeichniseinträge unter der Kontrolle einer Transaktion zu aktualisieren und hinzuzufügen. Es ist nicht nur erforderlich, dass die Updates atomar sind, sondern es ist auch notwendig, dass ein Kunde, der gerade einkauft, die Updates nicht sehen darf. Dies ist ein Beispiel für die Isolationseigenschaft von Transaktionen.
Die Dauerhaftigkeitseigenschaft erfordert, dass die Auswirkungen nach Abschluss eines Updates auch dann beibehalten werden, wenn das System nicht mehr reagiert. Im vorherigen Beispiel kann die Dauerhaftigkeit einfach dadurch gewährleistet werden, dass eine angemessene Datenwiederherstellung gewährleistet wird, sodass alle neuen Dateisystemeinträge, die das Hinzufügen eines neuen Produkts zur Website darstellen, angezeigt werden, nachdem ein System nicht mehr reagiert. Dies erfordert ein System mit Datensicherungs-, Wiederherstellungs- und Hochverfügbarkeitsmechanismen.
Die Garantie der Unteilbarkeit einer Transaktion sowie der anderen Eigenschaften ist angesichts 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 sind in der folgenden Tabelle zusammengefasst.
Begriff | BESCHREIBUNG |
---|---|
Atomic |
Entweder sind alle Vorgänge in der Transaktion erfolgreich, oder keiner der Vorgänge wird beibehalten. |
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 vor allen anderen Transaktionen ausgeblendet. |
Langlebig |
Wenn eine Transaktion abgeschlossen ist, sind die Ergebnisse dauerhaft 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 alle Auswirkungen der abgebrochenen Transaktion zurückgesetzt werden, sodass die Daten in einen konsistenten Zustand versetzt werden. Daher ermöglicht ein Transaktionssystem eine ordnungsgemäße Wiederherstellung nach Systemausfällen.
Um die ACID-Eigenschaften zu gewährleisten, muss ein System, das Transaktionen unterstützt, über eine robuste Protokollierungsfunktion verfügen, die bei Bedarf zum Commit oder Rollback von Transaktionen verwendet werden kann. Weitere Informationen finden Sie unter Allgemeines Protokolldateisystem.