Transaktion (Informatik)Als Transaktion (von lateinisch trans „(hin-)über“, agere „treiben, handeln, führen“: also wörtlich: Überführung; dt. hier besser: Durchführung) wird in der Informatik eine Folge von Programmschritten bezeichnet, die als eine logische Einheit betrachtet werden, weil sie den Datenbestand nach fehlerfreier und vollständiger Ausführung in einem konsistenten Zustand hinterlassen. Daher wird für eine Transaktion insbesondere gefordert, dass sie entweder vollständig und fehlerfrei oder gar nicht ausgeführt wird. Transaktionen kommen meist bei Datenbanksystemen zum Einsatz. Fehlerhafte Transaktionen müssen abgebrochen und die bisherigen Änderungen in der Datenbank rückgängig gemacht werden, so dass sie keine Auswirkungen auf den Zustand der Datenbank haben. Transaktionen werden von Transaktionssystemen verarbeitet; diese erzeugen dabei aus mehreren Transaktionen eine Historie. BeispielUm sich die wichtigsten Begriffe dieses Artikels anschaulich vorstellen zu können, soll folgendes Beispiel dienen:
Aufbau von TransaktionenTransaktionen werden durch die Markierungen begin of transaction (Abk. BOT) und end of transaction (Abk. EOT, s. Commit) abgegrenzt: begin of transaction read x write y end of transaction Die Operationen innerhalb einer Transaktion sind geordnet, ihre Reihenfolge darf also nicht verändert werden. Die Ordnung der Operationen einer Transaktion kann auch als gerichteter Graph dargestellt werden: Diese Darstellung betont die Nebenläufigkeit – also die gleichzeitige Ausführbarkeit – von Operationen. In obigem Beispiel kann die Operation r[z] gleichzeitig mit den Operationen r[x] und w[x] ausgeführt werden. ACID-PrinzipBei der Ausführung von Transaktionen muss das Transaktionssystem die ACID-Eigenschaften garantieren:
Ausführung von Transaktionen in einem TransaktionssystemZiel eines Transaktionssystems ist es stets, möglichst viele Transaktionen in möglichst kurzer Zeit abzuwickeln. Die serielle Ausführung von Transaktionen – also die Ausführung der Transaktionen nacheinander – ist zwar einfach zu realisieren, führt aber oft nicht zu einer optimalen Erfüllung dieses Leistungskriteriums. Transaktionssysteme spalten daher Transaktionen in ihre Operationen auf und setzen diese zu Historien zusammen, wobei die ACID-Eigenschaften bewahrt bleiben müssen. Durch diesen Vorgang ergeben sich zwei Möglichkeiten, eine Transaktion zu beenden:
Das Rückgängigmachen der Effekte einer Transaktion wird als Rollback (Zurücksetzen) bezeichnet. Es kann dabei vorkommen, dass das Zurücksetzen einer Transaktion das Zurücksetzen einer anderen Transaktion notwendig macht, was zur Bildung regelrechter Ketten von Zurücksetzungen führen kann; dies wird als kaskadierendes Rücksetzen bezeichnet. Wenn eine Transaktion aufgrund einer anderen Transaktion nicht ausgeführt werden kann, spricht man von einer Blockierung. Wird die erste Transaktion durch die zweite und gleichzeitig die zweite durch die erste blockiert, so spricht man von einem Deadlock (Verklemmung). Verschachtelte TransaktionenEine verschachtelte Transaktion ist eine Transaktion, die vollständig von einer anderen Transaktion umschlossen wird. Die innere Transaktion sieht die Veränderungen, die von der äußeren gemacht werden. Für das Verhalten der beiden Transaktionen gibt es mehrere Varianten. Falls die Transaktionen flach sind, führt der Abbruch der inneren Transaktion auch zu einem Abbruch der äußeren Transaktion. Die Änderungen der inneren Transaktion sind nicht gültig falls die äußere Transaktion nicht erfolgreich abgeschlossen wird. Sind die Transaktionen geschlossen, führt ein Abbruch der inneren Transaktion nicht automatisch zu einem Abbruch der äußeren Transaktion. Schließt die innere Transaktion ihre Aktionen erfolgreich ab, sind die gemachten Änderungen nur für die äußere Transaktion sichtbar. Für das ganze System ist die Änderung erst sichtbar, wenn die äußerste Transaktion erfolgreich terminiert. Im Gegensatz dazu wird bei offenen Transaktionen die Änderung der inneren Transaktion sofort nach deren Termination im ganzen System sichtbar. Diese Änderungen bleiben bestehen auch wenn die äußere Transaktion später abgebrochen wird. Verteilte TransaktionenVerteilte Transaktionen sind Transaktionen, die in mehreren Teiltransaktionen in verteilten Systemen ausgeführt werden. Um die Atomarität verteilter Transaktionen zu gewährleisten, werden entsprechende Commit-Protokolle verwendet. Ein Beispiel ist die Durchführung einer Überweisung auf dem Datenbanksystem der Bank des Überweisers und dem Datenbanksystem der Bank des Empfängers. Geht nach dem Geldtransfer auf der zweiten Bank etwas schief (z. B. Kontonummer ist ungültig), muss das Geld automatisch wieder zurücküberwiesen werden. Wirkungslose TransaktionenEine Transaktion innerhalb eines Schedules wird als wirkungslos bezeichnet, wenn sie eine der folgenden Bedingungen erfüllt:
Wirkungslos bedeutet, dass die Transaktionen keinen Einfluss auf den Datenbestand der Datenbank hatte. Wirkungslose Transaktionen müssen demnach bei einem Rollback nicht zurückgesetzt werden. Siehe auch |
Portal di Ensiklopedia Dunia