Datenbanken W4 Sommersemester 2004

Werbung
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Vorlesung #5
Transaktionsverwaltung
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
„Fahrplan“
 Anforderungen an die Transaktionsverwaltung
 Behebung von Fehlersituationen (Recovery)
 Synchronisation
 Operationen auf der Transaktionsebe
 BOT (begin of transaction)
 COMMIT
 ABORT (auch ROLLBACK)
 Eigenschaften von Transaktionen (ACID Paradigma)
 Atomicity, Consistency, Isolation, Durability
 Transaktionsverwaltung in SQL
 Zustandsübergänge einer Transaktion
 Ausblick Vorlesung #6
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
2
Einführung
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Konzept der Transaktion – einer der größten
Beiträge der Datenbankforschung für andere
Informatikbereiche
 Transaktion - Bündelung von mehreren
Operationen, die in einem
Mehrbenutzersystem ohne unerwünschte
Einflüsse auf oder durch andere
Transaktionen als eine Einheit fehlerfrei
ausgeführt werden
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
3
Transaktionsbegriff
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Transaktion ist eine „Arbeitseinheit“
 Alle Teiloperationen einer Transaktion werden als
eine Einheit, voneinander ungetrennt und
ununterbrechbar ausgeführt
 Deshalb spricht man von der atomaren Ausführung
 Transaktion ist eine Folge von
Datenverarbeitungsbefehlen (Lesen, Verändern,
Einfügen und Löschen), die atomar ausgeführt wird
 Eine Transaktion überführt die Datenbank von einem
transaktionskonsistenten Zustand in den anderen
(nicht notwendigerweise unterschiedlichen)
transaktionskonsistenten Zustand
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
4
Beispiel: Bankanwendung
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Es werden 50 € von Konto A nach Konto B transferiert
1. Lese Kontostand A in die Variable a: read(A,a);
2. Reduziere den Kontostand um 50 €: a:=a-50;
3. Schreibe den neuen Zustand in die Datenbasis:
write(A,a);
4. Lese den Kontostand von B in die Variable b:
read(B,b);
5. Erhöhe den Kontostand um 50 €: b:=b+50;
6. Schreibe den neuen Kontostand in die Datenbasis:
write(B,b);
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
5
Beispiel:
Bankanwendung (2)

WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Wenn die Operationsfolge abgebrochen wäre,
könnten inkonsistente Zustände entstehen.
Beispiele:
 wenn das System nach dem Schritt 3 abstürzt, ist
der Kontostand A um 50 € vermindert, ohne dass
Konto B um 50 € jemals erhöht wurde
 wenn Konto B einem anderen Inhaber gehört
und das Abheben von 50 € zur Überschreitung
des Dispositionskredit beim Konto A führt,
müsste der gesamte Transfer rückgängig
gemacht werden
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
6
Beispiel:
Bankanwendung (3)

WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
In einer SQL-Datenbank sieht es eigentlich
so aus:
-- Transferiere 50 € von Konto A nach B
UPDATE Konto
SET Stand = Stand - 50
WHERE ID = 'A';
muss
--> Unterbrechung auf
atomar
ausgeführt
--> Kosten des Inhabers
werden
UPDATE Konto
SET Stand = Stand + 50
WHERE ID = 'B';
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
7
Anforderungen

Synchronisation



WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
sehr viele gleichzeitig nebenläufig ablaufende
Transaktionen müssen abgearbeitet werden
Konsistenzverletzungen durch unkontrollierte
Nebenläufigkeiten müssen ausgeschlossen
bleiben
Recovery


Abgeschlossene Transaktionen müssen auch
nach jedem denkbaren Fehler in ihrer Wirkung
erhalten bleiben und
nicht erfolgreich abgeschlossene Transaktionen
müssen vollständig zurückgesetzt werden
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
8
Operationen auf der
Transaktionsebene
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Aus der DBMS-Sicht gibt es nur zwei Operationen
 read() und write()
Zusätzlich Transaktionsoperationen:
 Begin of Transaction (BOT) – oft implizit, durch
die erste Operation angegeben
 Commit – Beendigung der Transaktionen. Alle
Änderungen an der Datenbasis werden dauerhaft in
die Datenbasis festgeschrieben.
 Abort bzw. Rollback – Selbstabbruch der
Transaktion. DBMS muss sicherstellen, dass die
Datenbank wieder in den Zustand vor
Transaktionsbeginn zurückgesetzt wird.
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
9
Operationen auf der
Transaktionsebene (2)
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
... zusätzlich gibt es bei weiterentwickelten
DBMS-Systemen für lange Transaktionen
zwei weitere Befehle
 define savepoint – Definition eines
Sicherungspunktes, auf den sich eine noch
aktive Transaktion zurücksetzen lassen
kann. DBMS „merkt“ sich alle Änderungen
bis zum Savepoint, darf sie aber nicht
commiten wegen möglichen Abort
 backup transaction – Rücksetzen der
Transaktion auf den letzten Savepoint
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
10
Abschluss einer Transaktion


WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
erfolgreich - COMMIT
erfolglos - ABORT (explizit) oder irgendein
Fehler (impliziter ABORT)
BOT
BOT
BOT
op1
op1
op1
...
...
...
opn
opn
opn
COMMIT;
ABORT;
~~ Fehler ~~
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
11
Wichtig!



WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Eine Transaktion führt die Datenbank aus einem
konsistenten Zustand in das andere konsistente
Zustand
Es wird entweder alles erfolgreich festgeschrieben
oder alles zurückgesetzt. In DBMS-Jargon: „alles
wird commited oder alles wird zurückgerollt komme was wolle“)
Während der Abarbeitung einer Transaktion darf es
vorübergehend einzelne Teiloperationen geben, die
die Konsistenz verletzen. Die Transaktion darf als
eine Einheit nicht die Konsistenz verletzen. Was
zählt ist die Transaktion als Ganzes, nicht einzelne
Teiloperationen.
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
12
ACID Paradigma




WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Atomicity – die Transaktion gilt als eine Einheit,
entweder werden alle Änderungen festgeschrieben
oder gar keine.
Consistency – eine Transaktion hinterlässt nach
Ihrer Beendigung immer einen konsistenten
Datenbankzustand. Sonst wird sie zurückgesetzt.
Isolation – nebenlaufende Transaktionen
beeinflussen sich nicht gegenseitig. Jede
Transaktion wird so ausgeführt, als wäre sie die
einzige in DBMS.
Durability – die Wirkung einer erfolgreich
abgeschlossener Transaktion bleibt dauerhaft in der
Datenbank erhalten, trotz aller möglichen Fehler.
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
13
Transaktionsverwaltung
in SQL
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 In SQL-92 Standard gibt es kein BOT, Transaktionen
werden implizit mit der Ausführung der ersten
Anweisung begonnen
 COMMIT [WORK] – Commit
 ROLLBACK [WORK] – Abort
UPDATE Konto
SET Stand = Stand - 50
WHERE ID = 'A';
UPDATE Konto
SET Stand = Stand + 50
WHERE ID = 'B';
COMMIT;
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
14
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
15
Fazit und
Ausblick Vorlesung #6
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Transaktionsbegriff wurde eingeführt und
erläutert
 Transaktionsverwaltung besteht aus zwei
großen Komponenten
 Recovery bzw. Fehlerbehandlung (Vorlesung #7)
 Mehrbenutzersynchronisation (Vorlesung #8, #9)
© Bojan Milijaš, 10.11.2004
Vorlesung #5 - Transaktionsverwaltung
16
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Vorlesung #5
Ende
Herunterladen