studyklar
IProg · Skript 9 · Abschnitt 7

Transaktionen und das ACID-Prinzip

Manche Änderungen gehören zusammen: Fehlt eine, sind die Daten falsch. Hier steht, was eine Transaktion ist, was ACID bedeutet und wie man das in JDBC schreibt. Mit Weiter geht es Schritt für Schritt voran. Ein Klick auf einen Schritt springt direkt dorthin.

Worum es geht

Skript 09, Folien 22 bis 24 und 27: Transaktionsbegriff, das ACID-Prinzip, Umsetzung in Java JDBC.

Eine Umbuchung zwischen zwei Konten braucht zwei SQL-Befehle: abbuchen und gutschreiben. Stürzt das Programm dazwischen ab, ist Geld verschwunden. Die Frage dieses Abschnitts: Wie sorgt die Datenbank dafür, dass zusammengehörige Befehle zusammen gelingen oder zusammen scheitern?

Das Beispiel mit der Tabelle Konto (Kontonummer knr, Stand stand in Euro) und die Methode umbuchen stehen nicht im Skript. Sie benutzen nur die Befehle von Folie 27.

Aus Skript 09, Folie 13: executeUpdate führt eine Änderung aus und liefert die Zahl der geänderten Zeilen.

So gehen wir vor:

  1. Was eine Transaktion ist.
  2. Die vier Eigenschaften A, C, I, D.
  3. Was ohne Transaktion schiefgeht.
  4. Transaktion in JDBC: autocommit aus, commit, rollback.
  5. Eine Klausurfrage dazu.

Was eine Transaktion ist

Definition · Transaktion (Folie 22)

Eine Transaktion ist eine Folge von Operationen, die die Datenbank von einem konsistenten Zustand in einen neuen überführen.

Konsistent heißt: Die Daten passen zusammen und erfüllen alle Regeln. Eine Transaktion führt von so einem Zustand zu einem neuen, ebenfalls konsistenten.

Beispiel: 200 € von Konto 1 auf Konto 2. Vorher stehen 500 € und 100 € da, zusammen 600 €. Erst bucht ein UPDATE 200 € ab, dann schreibt ein zweites 200 € gut. Danach 300 € und 300 €, wieder 600 €.

Zwischen den beiden UPDATEs fehlen 200 €: Konto 1 hat 300 €, Konto 2 noch 100 €. Dieser Zwischenstand darf nie bleiben. Darum sind beide Befehle eine Transaktion.

A: Atomicity, ganz oder gar nicht

Skript · Folie 23

Atomicity: Eine Transaktion wird immer als Einheit betrachtet. Sie wird also entweder ganz oder gar nicht ausgeführt.

Folie 22 nennt vier wünschenswerte Eigenschaften. Ihre englischen Anfangsbuchstaben ergeben ACID.

Atomicity (Atomizität, von „unteilbar“): Eine Transaktion ist eine Einheit. Entweder laufen beide UPDATEs der Umbuchung, oder keines. Den Zwischenstand mit 300 € und 100 € sieht am Ende niemand.

Noch 9 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

knrstand in €
1500
2100
LegendeZeilen des SchrittsZwei Konten: 500 € und 100 €.