Transaktion (Informatik)


Transaktion (Informatik)

Als Transaktion (von lat. trans „über“, actio zu agere „(durch)führen“) bezeichnet man in der Informatik eine Folge von Programmschritten, die als eine logische Einheit betrachtet werden. Insbesondere wird für eine Transaktion gefordert, dass sie entweder vollständig ausgeführt wird oder keine Auswirkung hat (Atomarität). Transaktionen werden von Transaktionssystemen verarbeitet; diese erzeugen dabei aus mehreren Transaktionen eine Historie. Transaktionen kommen meist bei Datenbanksystemen zum Einsatz.

Inhaltsverzeichnis

Anschauliches Beispiel

Um sich die wichtigsten Begriffe dieses Artikels anschaulich vorstellen zu können, soll folgendes Beispiel dienen:

In einer Bücherei wird ein Karteikarten-System zur Verwaltung des Bestandes an Büchern verwendet. Eine Transaktion könnte hier lauten: „Leihe das Buch ‚Die Schatzinsel‘ an den Benutzer Peter Müller aus.“ Diese Transaktion könnte in der formalen Darstellung so aussehen:
begin of transaction
lies das Feld "Vorbestellung" der Karte
schreibe "Peter Müller" in das Feld "ausgeliehen von"
schreibe "29. Juli 2001" in das Feld "Rückgabe am"
end of transaction
Konnte die Karte erfolgreich ausgefüllt werden, so ist die Transaktion abgeschlossen und die Karte wird in den Karteikasten zurückgesteckt - dies entspricht dem Commit einer Transaktion. Wurde die Ausführung unterbrochen, so müssen alle bisherigen Änderungen rückgängig gemacht werden, bevor die Karte zurückgesteckt wird - dies entspricht dem Abort einer Transaktion. Wird dies nicht gemacht, so können Fehler auftreten: falls etwa "ausgeliehen an" bereits ausgefüllt ist, das Rückgabedatum aber noch nicht eingetragen wurde, so kann sich Peter Müller bis an sein Lebensende an der „Schatzinsel“ erfreuen, ohne Strafgebühren fürchten zu müssen. Zu einem Konflikt zwischen Transaktionen käme es beispielsweise, wenn das Buch gleichzeitig an einen anderen Benutzer verliehen werden sollte; hier würde die Eigenschaft „Isolation“ verletzt.

Aufbau von Transaktionen

Transaktionen 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:

\begin{matrix} r[x] & \rightarrow & w[x] & \rightarrow & r[y] & \rightarrow & c \\ & & & \nearrow \\ & & r[z] \end{matrix}

Diese Darstellung betont die Nebenläufigkeit - also die gleichzeitige Ausführbarkeit - von Operationen. In obigem Beispiel kann die Operation r[z] zeitgleich mit den Operationen r[x] und w[x] ausgeführt werden.

ACID-Prinzip

Bei der Ausführung von Transaktionen muss das Transaktionssystem die ACID-Eigenschaften garantieren:

  • Atomarität (Atomicity): Eine Transaktion wird entweder ganz oder gar nicht ausgeführt. Transaktionen sind also „unteilbar“. Wenn eine atomare Transaktion abgebrochen wird, ist das System unverändert.
  • Konsistenz (Consistency): Nach Ausführung der Transaktion muss der Datenbestand in einer konsistenten Form sein, wenn er es bereits zu Beginn der Transaktion war.
  • Isolation (Isolation): Bei gleichzeitiger Ausführung mehrerer Transaktionen dürfen sich diese nicht gegenseitig beeinflussen.
  • Dauerhaftigkeit (Durability): Die Auswirkungen einer Transaktion müssen im Datenbestand dauerhaft bestehen bleiben. Die Effekte von Transaktionen dürfen also nicht „mit der Zeit verblassen“ oder „aus Versehen verloren gehen“. Eine Verschachtelung von Transaktionen ist wegen dieser Eigenschaft streng genommen nicht möglich, da ein Zurücksetzen (Rollback) einer äußeren die Dauerhaftigkeit einer inneren, bereits ausgeführten Transaktion verletzen würde.

Ausführung von Transaktionen in einem Transaktionssystem

Ziel 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 selbstverständlich die ACID-Eigenschaften bewahrt bleiben müssen.

Durch diesen Vorgang ergeben sich zwei Möglichkeiten, eine Transaktion zu beenden:

  • Commit (abschließen, Abk. c): Die Transaktion wurde erfolgreich und ohne Probleme beendet, die Auswirkungen der Transaktion auf den Datenbestand werden dauerhaft gespeichert. Oft werden die Begriffe „commit“ und „end of transaction“ synonym verwendet.
  • Abort (abbrechen, Abk. a): Bei der Ausführung der Transaktion sind Probleme aufgetreten, ihre Ausführung wird nicht fortgesetzt. Die Bedingung der Atomarität fordert zusätzlich, dass sämtliche Auswirkungen der Transaktion auf den Datenbestand rückgängig gemacht werden müssen.

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 und ist ein ausgesprochen unerwünschter Effekt.

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).

Verteilte Transaktionen

Verteilte 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 Transaktionen

Eine Transaktion innerhalb einer Schedule wird als wirkungslos bezeichnet, wenn sie eine der folgenden Bedingungen erfüllt:

  • es werden ausschließlich Leseoperationen ausgeführt
  • es werden ausschließlich Schreiboperationen ausgeführt und die geschriebenen Werte werden - ohne zwischenzeitlich ausgelesen zu werden - von anderen Transaktionen wieder überschrieben.

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


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Transaktion — bezeichnet: Transaktion (Wirtschaft), eine gegenseitige Übertragung von Gütern und Informationen zwischen zwei Wirtschaftssubjekten Transaktion (Informatik), eine Folge von Operationen, die nur komplett oder gar nicht durchgeführt wird in der TA… …   Deutsch Wikipedia

  • Abort (Informatik) — Als Rollback bezeichnet man in EDV Systemen das „Zurücksetzen“ der einzelnen Verarbeitungsschritte einer Transaktion. Das System wird dadurch vollständig auf den Zustand vor Aufruf der Transaktion zurückgeführt. Ein Rollback wird typischerweise… …   Deutsch Wikipedia

  • ACID (Informatik) — ACID, deutsch auch AKID, ist ein Akronym in der Informatik. Es beschreibt erwünschte Eigenschaften von Transaktionen in Datenbankmanagementsystemen (DBMS) und verteilten Systemen. Es steht für atomicity, consistency, isolation und durability. Man …   Deutsch Wikipedia

  • Konsistenz (Informatik) — Als Konsistenz bezeichnet man bei Datenbanken allgemein die Widerspruchsfreiheit von Daten. Konsistenz ist eine der vier in Datenbank Transaktionen geforderten ACID Eigenschaften. Transaktionen müssen Datenbanken von einem konsistenten in einen… …   Deutsch Wikipedia

  • Verteilte Transaktion — Als Transaktion (von lat. trans „über“, actio zu agere „(durch)führen“) bezeichnet man in der Informatik eine feste Folge von Operationen, die als eine logische Einheit betrachtet werden. Insbesondere wird für Transaktionen gefordert, dass sie… …   Deutsch Wikipedia

  • Operation (Informatik) — Als Operation bezeichnet man in der Informatik den kleinsten Verarbeitungsschritt einer Transaktion in einem Transaktionssystem zur Veränderung eines Datenbestandes. Beispiel zur Veranschaulichung Die Kontenverwaltung einer Bank basiert auf einer …   Deutsch Wikipedia

  • Soziales Netzwerk (Informatik) — Soziale Netzwerke im Sinne der Informatik sind Netzgemeinschaften bzw. Webdienste, die Netzgemeinschaften beherbergen. Handelt es sich um Netzwerke, bei denen die Benutzer gemeinsam eigene Inhalte erstellen (User Generated Content), bezeichnet… …   Deutsch Wikipedia

  • ARIES (Informatik) — ARIES (Algorithms for Recovery and Isolation Exploiting Semantics) ist eine Familie von Algorithmen zur Wiederherstellung (Recovery) von Datenbanksystemen nach einem Fehlerfall. Nach einem Fehlerfall, beispielsweise durch einen Absturz oder einen …   Deutsch Wikipedia

  • SQL-92 — SQL (das Kürzel für Structured Query Language; offizielle Aussprache [ɛskjuːˈɛl], häufig auch [ˈsiːkwəl] →SEQUEL), ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SQL ist von ANSI und ISO… …   Deutsch Wikipedia

  • SQL-99 — SQL (das Kürzel für Structured Query Language; offizielle Aussprache [ɛskjuːˈɛl], häufig auch [ˈsiːkwəl] →SEQUEL), ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SQL ist von ANSI und ISO… …   Deutsch Wikipedia