Transaktionen

Previous  Next

 

 

 

24.02.2010

Transaktionen

 

Transaktionen sind vor allem beim schreibenden Zugriff auf Datenbanken unerlässlich. Denn während eines Speichervorgangs kann es theoretisch zu unzähligen, nicht vorhersehbaren und meistens nicht beeinflussbaren Fehlern kommen, u.a. Abbruch der Verbindung, konkurrierender Schreibzugriff, Datenbank-Fehler, Speicherüberlauf, Absturz des Clients etc. In jedem Fall ist der Abbruch eines laufenden Schreibzugriffs fatal, da dadurch der Datenbestand mehr oder weniger stark verfälscht wird. Die Ausführung eines Speichervorgangs als Transaktion ist dagegen völlig sicher. Kommt es während der Transaktion zu einem Fehler, wird die Transaktion vollständig rückgängig gemacht und ein sog. Rollback von der Datenbank durchgeführt. Darüber hinaus werden die betroffenen Daten für andere, schreibende Zugriffe erst dann wieder freigegeben, wenn die Transaktion abgeschlossen ist.

 

 

» Bessere Performance «

Die Performance einer Software-Anwendung hängt häufig entscheidend von der Geschwindigkeit der Datenbank-Zugriffe ab. Bei jedem einzelnen Datenbank-Zugriff muss Ihre Anwendung immer eine neue Verbindung (Connection) zu  zur Datenbank aufbauen. In der Praxis dauert der Verbindungsaufbau meistens sogar wesentlich länger, als die eigentliche Datenübertragung. Um bei mehreren, unmittelbar nacheinander folgenden Datenbank-Zugriffen nicht unnötige Zugriffszeiten für vielfaches Konnektieren zu verlieren, können Sie entsprechend aufeinander folgende Datenbank-Zugriffe zu einer Transaktion zusammenfassen. Bei der Transaktion bleibt die Verbindung während der gesamten Ausführung des Transaktionsblocks offen und wird erst am Ende der Transaktion automatisch wieder geschlossen.

 

 

» Transaktion als Kontrollstruktur «

In XDEV 2 ist der Einsatz von Transaktionen simpel, denn XDEV 2 bietet Ihnen dafür eine eigene Kontrollstruktur, die mit dem Schlüsselwort hmtoggle_plus1 transaction | XDEV NLS: Transaktion eingeleitet wird. Im folgenden Anweisungsblock werden dann die zur Transaktionen gehörenden Anweisungen aufgeführt. Dabei können Sie nicht nur Datenbank-Aktionen, sondern beliebige Anweisungen verwenden, u.a. Schleifen oder Methoden-Aufrufe, die während der Transaktion ausgeführt werden sollen.

 

hmtoggle_plus1XDEV Object Language

1

 

2

transaction

{

  XDEV WriteDB FAHRZEUGE >> FAHRZEUGE;

}  

Der Transaktions Block wird mit Hilfe von Klammern eingegrenzt.

hmtoggle_plus1XDEV Basic

1

2

3

Transaction

  XDEV WriteDB FAHRZEUGE >> FAHRZEUGE;

End Transaction

Die Transaktion wird mit dem Schlüsselwort End Transaction abgeschlossen, welches vom Code-Editor automatisch erzeugt wird.

hmtoggle_plus1XDEV NLS

1

2

Transaktion

    XDEV DatenbankSchreiben FAHRZEUGE >> FAHRZEUGE

Der Transaktions Block wird durch Einrückung eingegrenzt, die vom Code-Editor automatisch durchgeführt wird.

 

 

» Verschachtelte Transaktionen «

Transaktionen lassen sich im Code-Editor zwar ineinander verschachteln, intern ist dies jedoch immer nur 1 Transaktion. Mit einer Verschachtelung kann jedoch ggf. eine bessere Übersicht im Code erreicht werden.

 

hmtoggle_plus1XDEV Object Language

1

 

2

3

 

4

 

5

transaction

{

    // Anweisungen

   transaction

   {

        // Anweisungsblock 

    

    // Anweisungen

}  

hmtoggle_plus1XDEV Basic

1

2

3

4

 

5

 

Transaction

       // Anweisungen

    Transaction

                   // Anweisungsblock 

    End Transaction

       // Anweisungen

End Transaction

hmtoggle_plus1XDEV NLS

1

2

3

4

5

Transaktion

       // Anweisungen

    Transaktion

                   // Anweisungsblock 

       // Anweisungen

 

 

 

 

Hinweis: XDEV 2 Anwendungen können zwar grundsätzlich während der Laufzeit auf mehrere Datenbanken zugreifen, in Transaktion dürfen jedoch nur Datenbank-Aktionen für den Zugriff auf dieselbe Datenbank verwendet werden.

 

Tipp: Transaktionen sollten Sie immer in einer hmtoggle_plus0 try-catch Anweisung setzen.

 

 

Basiswissen: Datenbankabfragen.