7 Transaktionsverwaltung in Verteilten Datenbanksystemen

7.1 Struktur verteilter Transaktionen

Eine Transaktion besteht aus einer Folge von DB-Operationen, die durch eine BOT-Operation (Begin of Transaction) und eine Commit- oder EOT-Operation (End of Transaction) geklammert sind. Daneben besteht die Möglichkeit, mit einer Rollback-Anweisung eine Transaktion abzubrechen. Diese Benutzersicht auf Transaktionen besteht für zentralisierte DBS und ist auch von Verteilten DBS bei Wahrung der ACID-Eigenschaften zu unterstützen (Verteilungstransparenz).

In Verteilten DBS können bei der Ausführung einer Transaktion ein oder mehrere Knoten beteiligt sein. Eine Sonderrolle kommt dabei dem Knoten zu, an dem die Transaktion gestartet wurde, wo also die BOT-Operation ausgeführt wurde. Dieser Rechner wird als Heimat- oder Koordinator-Knoten einer Transaktion bezeichnet. Die weiteren DB-Operationen sowie die Commit-Anweisung werden ebenfalls am Heimatknoten einer Transaktion gestartet, können jedoch weitere Knoten involvieren. Falls eine Transaktion vollständig an ihrem Heimat-Knoten ausgeführt wird, sprechen wir von einer lokalen Transaktion, anderenfalls von einer verteilten oder globalen Transaktion. An jedem bei der Ausführung einer globalen Transaktion T beteiligten Knoten wird eine Teil- oder Sub-Transaktion ausgeführt, die alle DB-Operationen bzw. Teiloperationen von T umfaßt, die an dem Knoten bearbeitet wurden. Die am Heimat-Knoten ausgeführte Teil-Transaktion wird auch als Primär-Transaktion bezeichnet.

Die Aufrufstruktur zwischen Primär- und Sub-Transaktionen bildet im allgemeinen Fall einen gerichteten Graphen, bei dem die beteiligten Rechner (Sub-Transaktionen) als Knoten fungieren. Zyklische Aufrufbeziehungen sind möglich, da z.B. während der Ausführung einer DB-Operation möglicherweise Daten eines Knotens benötigt werden, der bereits vorher an der Transaktion beteiligt war. Zur Transaktionsverwaltung reicht es jedoch aus, die Aufrufbeziehungen in reduzierter (hierarchischer) Form darzustellen, innerhalb eines sogenannten Transaktionsbaumes [GR93]. Darin bildet die Primär-Transaktion die Wurzel; jeder andere Knoten im Baum entspricht einer Sub-Transaktion eines anderen, an der Transaktionsausführung beteiligten Rechners. Dabei wird für jede Sub-Transaktion lediglich der erste Aufruf im Baum aufgenommen. Im Beispiel von Abb. 7-1 wurde so Teil-Transaktion T5 zuerst von Sub-Transaktion T2 aufgerufen. Weitere Anforderungen an den Rechner von T5, z.B. während der Ausführung von T3 oder T4, haben keine Auswirkungen mehr auf den Transaktionsbaum. Ein Transaktionsbaum ist im allgemeinen Fall nicht balanciert und in der Höhe nur durch die Rechneranzahl beschränkt. Weiterhin können Teil-Transaktionen im allgemeinen parallel ausgeführt werden.

Die Struktur verteilter Transaktionen ist wesentlich durch die Datenverteilung und der von der Transaktion benötigten Daten bestimmt. Zwischen Primär- und Sub-Transaktionen besteht i.a. eine hierarchische Aufrufstruktur, die im Transaktionsbaum reflektiert ist. Allerdings bedeutet dies nicht, daß es sich bei verteilten Transaktionen um sogenannte geschachtelte Transaktionen (nested transactions) [Mo85] handelt. Geschachtelte Transaktion erlauben auch, eine Transaktion in eine Hierarchie von Sub-Transaktionen zu zerlegen, die parallel zueinander ausgeführt werden können. Ein wesentliches Merkmal geschachtelter Transaktionen ist, daß Sub-Transaktionen isoliert zurückgesetzt werden können, ohne daß die Gesamt-Transaktion abgebrochen werden muß. Weiterhin erfolgt eine spezielle Synchronisation innerhalb einer Transaktionshierarchie. So können Sperren unter bestimmten Bedingungen an untergeordnete Sub-Transaktionen "vererbt" werden; am Ende einer Sub-Transaktion gehen deren Sperren in den Besitz der übergeordneten Transaktion über. Für die gesamte Transaktion gelten die herkömmlichen ACID-Eigenschaften, für Sub-Transaktionen dagegen lediglich die Atomarität und Isolation [HR93]. Geschachtelte Transaktionen könnten bei der Realisierung verteilter Transaktionen vorteilhaft eingesetzt werden, allerdings wird dieses Konzept in derzeitigen Implementierungen von Verteilten DBS nicht genutzt. Der Abbruch einer Sub-Transaktion resultiert daher in das Zurücksetzen der gesamten Transaktion.

Abb. 7-1: Beispiel eines Transaktionsbaumes