<< >> Up Title Contents Index

Transaktionen

ADABAS ist ein transaktionsorientiertes Datenbanksystem.

Das bedeutet, daß parallel zur Arbeit mit ADABAS ein Sicherungsmechanismus mitläuft, der es gestattet, Veränderungen der Datenbank wieder ungeschehen zu machen. Die Anweisung

                    ROLLBACK WORK

stellt den Zustand vom Beginn der Arbeitssitzung wieder her. Der Benutzer hat die Möglichkeit, diesen Zeitpunkt, bis zu dem Änderungen rückgängig gemacht werden, im Lauf seiner Arbeit selbst festzulegen. Er kann ihn mit

                    COMMIT WORK

neu festsetzen. Damit wird jedesmal eine "Transaktion" abgeschlossen.

Für die praktische Arbeit heißt das, daß Tätigkeiten zunächst probeweise ausgeführt werden können. Ist der Benutzer schließlich von ihrer Richtigkeit überzeugt, kann mit COMMIT WORK der erreichte Zustand festgeschrieben werden. Er ist nun der Ausgangszustand für den nächsten Arbeitsabschnitt. Sind dagegen Irrtümer oder unerwünschte Effekte aufgetreten, können diese wieder ungeschehen gemacht werden, indem mit ROLLBACK WORK bis zum letzten Sicherungszeitpunkt zurückgegangen wird.

Beispiel:

COMMIT WORK

SELECT knr, vorname, nachname, konto
       FROM person

UPDATE person SET konto = 0
       WHERE konto > -10  AND
             konto <=  0

SELECT knr, vorname, nachname, konto
       FROM person



ROLLBACK WORK


SELECT knr, vorname, nachname, konto
       FROM person

Innerhalb von Transaktionen kann zusätzlich mit Hilfe von sogenannten Subtransaktionen bestimmt werden, was als logische Einheit zu betrachten ist. Eine Verschachtelung von Subtransaktionen ist möglich.

Eine Subtransaktion wird mit SUBTRANS BEGIN eröffnet und im Erfolgsfall mit SUBTRANS END abgeschlossen. Sind die Änderungen nicht erwünscht, können sie mit SUBTRANS ROLLBACK zurückgesetzt werden.

In engem Zusammenhang mit dem Transaktionskonzept steht das Sperrkonzept.

Es gibt zwei Arten von Sperren. Beim Setzen einer Lesesperre können alle Benutzer das gesperrte Objekt lesen, aber niemand darf das Objekt verändern. Für die Änderung eines Objekts benötigt der Benutzer eine Schreibsperre, die dafür sorgt, daß kein anderer Benutzer auf das Objekt lesend oder schreibend zugreifen kann.

Die Sperren werden im Regelfall vom System implizit gesetzt und bleiben bis zum Ende einer Transaktion bestehen. Sie können darüber hinaus mit der LOCK-Anweisung vom Benutzer gezielt für bestimmte Bereiche gesetzt werden. Auch diese Sperren werden bis Transaktionsende gehalten.

Der Benutzer kennzeichnet durch die Spezifikation eines Isolation Levels, in welchem Sperr-Modus er arbeiten möchte. Unterschieden werden in ADABAS die Isolation Levels 0, 10, 15, 20, 30. Mit aufsteigender Größe ist hier jeweils eine größere Sicherheit bezogen auf die Konstanz der gelesenen Daten gewährleistet. Dies hat jedoch negative Auswirkungen auf die mögliche Parallelität beim Zugriff auf die Daten. Siehe dazu das ADABAS-Referenz-Handbuch.

In Precompiler-Programmen wird der LOCK-Modus über die CONNECT-Anweisung oder eine Aufrufoption bekanntgemacht.


<< >> Up Title Contents Index