Transaktion

Werbung
DatenbankVerwaltungssystems
• Dozent: Diana Troancă
• E-mail: dianat [at] cs.ubbcluj.ro
• Website: www.cs.ubbcluj.ro/~dianat/
• Feedback vom letzten Semester?
• Was hat euch gefallen / was sollte sich nicht ändern?
• Was hat euch nicht gefallen und wie würdet ihr das verbessern?
• Kursanforderungen - http://www.cs.ubbcluj.ro/~dianat/sgbd.php
Struktur und Klausur
• Vorlesung: jede Woche (2 Std)
• Praktische Übungen: jede 2te Woche (2 Std)
• Seminar: jede 2te Woche (2 Std)
• Praktisches Test: in der letzten Übungsstunde (16.01.201720.01.2017)
• Schriftliche Prüfung: während der Prüfungszeit (23.01.2017 –
12.02.2017)
Praktische Übungen
• Working „environments“:
• DBMS:
• App. Development:
• Data access:
MS SQL Server
.NET / C#
ADO.NET
Folien, Literatur
• Folien und andere Informationen zur Vorlesung, Seminar und
Übungen werden unter www.cs.ubbcluj.ro/~dianat/ zur Verfügung
gestellt
• Literatur:
• A. Kemper , A. Eickler. Datenbanksysteme – Eine Einführung. Oldenbourg
Verlag, 2015. 10. Auflage.
• A. Kemper, M. Wimmer. Übungsbuch Datenbanksysteme. Oldenbourg
Verlag, 3. Auflage, 2012.
1. Einführung
Datenbank-VerwaltungssystemsDatenbankVerwaltungssystems
Schwerpunkt der Vorlesung
• Transaktionsverarbeitung
• Concurrency Control
• Fehlerbehandlung, Logging und Recovery
• Externes Sortieren
• Anfrageoptimierung
• Verteilten Datenbanken (Distributed Databases)
• Sicherheitsaspekte
Motivation für den Einsatz eines
Datenbank-Verwaltungssystems
Typische Probleme bei Informationsverarbeitung ohne DBMS:
• Redundanz und Inkonsistenz
• Beschränkte Zugriffsmöglichkeiten
• Probleme beim Mehrbenutzerbetrieb
• Verlust von Daten
• Integritätsverletzung
• Sicherheitsprobleme
• Hohe Entwicklungskosten für Anwendungsprogramme
Detailierte Struktur eines DBMS
Transaktionsverwaltung
• Beispiel für eine Transaktion:
• Überweise Geld von Konto A nach Konto B
•
•
•
•
•
•
Lies den Kontostand von A in die Variable a: read(A,a)
Reduziere den Kontostand um 50 Euro: a = a-50
Schreibe den neuen Kontostand in die Datenbasis: write(A,a)
Lies den Kontostand von B in die Variable b: read(B,b)
Erhöhe den Kontostand um 50 Euro: b = b+50
Schreibe den neuen Kontostand in die Datenbasis: write(B,b)
• Transaktionsverwaltung beinhaltet die folgenden zwei Teilgebiete:
• Synchronisation von mehreren gleichzeitig auf der Datenbank ablaufenden
Transaktionen
• Recovery – die Behebung von eingetretenen, oft unvermeidbaren
Fehlrensituationen
Transaktionen
• Transaktionen sind eine Zusammenfassung von aufeinanderfolgenden
DB-Operationen, die eine Datenbank von einem konsistenten Zustand
wieder in einen konsistenten Zustand überführt
• Transaktionen werden immer beendet:
• Normal (commit): Änderungen sind permanent in DB
• Abnormal (abort / rollback): bereits durchgeführte Änderungen werden
zurückgenommen
Transaktionen
• Gleichzeitige Ausführung mehreren Operationen ist sehr wichtig für eine
gute Effizienz des DBMS
• Eine Anwendung kann viele Operationen auf den abgerufenen Daten
ausführen, aber für das DBMS sind nur die Lese- und Schreiboperationen
wichtig
• Aus der Sicht der Datenbankbenutzer ist eine Transaktion eine logische
Arbeitseinheit
• Auf der Ebene des DBMS stellt eine Transaktion eine Folgen von
Datenverarbeitungsbefehlen (lesen, verändern, einfügen, löschen) dar:
eine Folge von Lese- und Schreiboperationen
• Das wesentliche dabei ist, dass diese Folge von Befehlen logisch
ununterbrechbar (atomar) ausgeführt wird
Transaktionen - Operationen
• Begin – transaction → kennzeichnet den Beginn einer Transaktion
• Read
• Write
• End – transaction
• Commit – transaction → erfolgreiche Beendigung einer Transaktion
• Abort – transaction → Selbstabbruch der Transaktion, erfolglose
Beendigung
• Undo
• Redo
Transaktionszustände
• Active – nach dem Beginn; ab jetzt können Lese- und Schreiboperationen
abgerufen werden
• Partially committed –die Transaktion ist von Seiten des Anwendungs-programms
nun beendet, muss aber mit Hilfe von Concurrency Control-Maßnahmen
überprüft werden (die Konsistenz der DB muss erhalten werden)
• Committed – wenn alle Prüfungen keinen Fehler ergeben
• Terminated – die Transaktion verlässt das System
• Aborted – wenn die Transaktion abgebrochen wird oder wenn eine Prüfung
einen Fehler liefert
‐ Die Recovery-Komponenen übernimmt das Zurücksetzen aller
durchgeführten Schreiboperationen
Transaktionszustände
Nebenläufigkeit/Concurrency in einer DBMS
• Die Benutzer denken an jede Transaktion als an eine eigenständige Einheit
von Operationen
• Concurrency wird aber von dem DBMS erreicht, indem mehrere
Transaktionen parallel oder verzahnt durchgeführt werden
• Jede Transaktion erhaltet den konsistenten Zustand der DB (falls der
Zustand beim Beginn der Transaktion konsistent war)
• DBMS überprüft bestimmte Concurrency Control-Maßnahmen
(Intergitätsbedingungen, die beim CREATE TABLE definiert wurden)
• Das DBMS versteht die Semantik der Daten nicht → die Konsistenz wird nur bzgl.
Integritätsbedingungen beurteilt
• Probleme der Synchronisation und des Concurrency Control:
• die Wirkung der parallelen oder verzahnten Transaktionen und der
Crashes
Nebenläufigkeit/Concurrency in einer DBMS
• Wir können zwei Arten von Nebenläufigkeit unterscheiden:
• Parallele Nebenläufigkeit (parallel concurrency)
‒ bei Vorhandensein eines Mehrprozessorsystems
‒ Transaktionen laufen gleichzeitig ab, d.h. Parallel auf verschiedenen Prozessoren
• Verzahnte Nebenläufigkeit (interleaved concurrency, „quasi-parallele“
Nebenläufigkeit)
‒ Bei Vorhandensein eines Einprozessorsystems
‒ Zu einem Zeitpunkt kann höchstens eine Transaktion von der CPU verarbeitet werden,
aber die CPU Zeit wir in sehr kurzen Zeitintervallen zwischen verschiedenen in
Ausführung befindlichen Transaktionen verteilt
‒ Wir betrachten meistens diesen Fall
Eigenschaften einer Transaktion - ACID
• Atomarität (Atomicity)
• Eine Transaktion ist eine unteilbare Verarbeitungseinheit – sie wird entweder
vollständig oder gar nicht ausgeführt.
• Konsistenzerhaltung (Consistency)
• Eine korrekte Ausführung einer Transaktion überführt die Datenbank von
einem konsistenten Zustand in einen anderen konsistenten Zustand.
• Isolation (Isolation)
• Mehrere Transaktionen laufen voneinander isoliert ab und benutzen keine
(inkonsistenten) Zwischenergebnisse anderer Transaktionen
• Dauerhaftigkeit (Durability)
• Ergebnisse und Auswirkungen einer erfolgreich beendeten Transaktion
(committed) sind und bleiben persistent, d.h. Sie überleben jeden
nachfolgenden Fehler
Atomarität (Atomicity)
• Unteilbarkeit durch Transaktionsdefinition (Begin – End)
• Alles-oder-Nichts Prinzip, d.h. Das DBMS garantiert:
• Entweder die vollständige Ausführung einer Transaktion
• Oder die Wirkungslosigkeit der gesamten Transaktion
• Eine Transaktion wir am Ende entweder committed, oder aborted
• Das DBMS führt eine Log-Datei, die alle Operationen (die Werte von
Datenobjekten verändern) einer Transaktion protokolliert, sodass es
möglich ist alle Auswirkungen der Transaktion rückgängig zu machen
(undo)
• Um die Atomarität bei Transaktionsfehlern zu gewährleisten → RecoveryMaßnahmen (crash recovery)
Konsistenzerhaltung (Consistency)
• Eine Transaktion hinterlässt nach Beendigung einen konsistenten DBZustand.
• Eine erfolgreiche Transaktion garantiert, dass alle Konsistenzbedingungen
(Indegritätsbedingungen) eingehalten worden sind.
• Wenn die Transaktion nicht alle Konsistenzbedingugen einhält, wird diese
zurückgesetzt.
• Zwischenzustände, die während der Bearbeitung des Transaktions
entstehen, dürfen inkonsistent sein, aber der resultierende Endzustand
muss immer konsistent sein.
Isolation (Isolation)
• Nebenläufige (parallele, gleichzeitige) ausgeführte Transaktionen
müssen sich gegenseitig nicht beeinflussen.
• Den Benutzern wird den Eindruck einer seriellen Ausführung der
Transaktionen vermittelt
• D.h., wenn man die Transaktionen nacheinander ausgeführen würde,
sollte man die gleichen Ergebnisse erhalten (Serialisierbarkeit)
• Die Zwischeergebnisse einer Transaktion dürfen vor dem Commit der
Transaktion für andere Transaktionen nicht sichtbar sein.
• Notwendig um kaskadierendes Rücksetzen zu vermeiden (cascading aborts)
Dauerhaftigkeit (Durability)
• Die Wirkung einer erfolgreich abgeschlossenen Transaktion
(committed) bleibt dauerhaft in der Datenbank erhalten.
• Die Transaktionsverwaltung muss sicherstellen, dass dies auch nach
einem Systemfehler (Hardware oder Software) gewährleistet ist.
• DB Recovery
Transaktionsverwaltung
• Die Transaktionsverwaltung besteht aus zwei „großen“ Komponenten:
• Der Mehrbenutzersynchronisation
• Der Recovery
• Die Aufgabe der Mehrbenutzersynchrosnisation besteht darin, die
Isolation von parallel ablaufenden Transaktionen zu gewährleisten
• Die Aufgabe der Recovery besteht darin, die Atomarität und die
Dauerhaftigkeit zu gewährleisten
Beispiel
• Wir betrachten folgenden Transaktionen:
T1:
T2:
BEGIN A=A+100,
B=B-100 END
BEGIN A=1.1.06*A, B=1.06*B END
• Die erste Transaktion überweist 100 Euro von Konto B nach Konto A
• In der zweiten Transaktion werden beide Kontos mit 6% verzinst
• Wenn die Transaktionen gleichzeitig beginnen, wissen wir nicht ob die
erste Transaktion vor der zweiten durchgeführt wird oder umgekehrt.
• Der Endeffekt muss aber äquivalent zu der Serialisierung der zwei
Transaktionen sein (in einer Reihenfolge).
Beispiel
• Ein möglicher verzahnter Ausführungsplan/Schedule ist:
T1:
A=A+100,
B=B-100
T2:
A=1.06*A,
B=1.06*B
Das ist OK (äquivalent mit der Serialisierung T1, T2).
• Ist der folgende Ausführungsplan OK?
T1:
T2:
A=A+100,
B=B-100
A=1.06*A, B=1.06*B
• Der Ausführungsplan aus dem Sicht des DBMS:
T1:
T2:
R(A), W(A),
R(B), W(B)
R(A), W(A), R(B), W(B)
Konfliktoperationen
• Zwei Transaktionen sind nicht in Konflikt wenn:
• Diese nur Daten lesen (und nicht schreiben)
• Unterschiedliche Datenobjekte lesen und schreiben
• Zwei Transaktionen/Operationen stehen in Konflikt miteinander, wenn
beide auf dem gleichen Datenobjekt arbeiten und mindestens eine
davon eine Schreiboperation ist:
• WR Konflikt: T2 liest ein Datenobjekt, der vorher von T1 geschrieben wurde
• RW Konflikt: T2 schreibt ein Datenobjekt, der vorher von T1 gelesen wurde
• WW Konflikt: T2 schreibt ein Datenobjekt, der vorher von T1 geschrieben wurde
• Operationen die in Konflikt miteinander stehen, dürfen nicht parallel
ausgeführt werden
Anomalien ohne Synchronisation
• Abhängigkeit von nicht freigegebenen Änderungen:
• WR Konflikt, „dirty read“
T1:
R(A), W(A),
T2:
R(A), W(A), C
R(B), A
• WW Konflikt, „dirty overwrite“, „blind write“
T1:
W(A),
W(B), C
T2:
W(A), W(B), C
• Inkonsistente Analyse (RW Konflikt, non-repeatable reads)
T1:
T2:
R(A),
R(A), W(B), C
R(A), W(A), C
• Verlorengegangene Änderungen
T1:
T2:
R(A),
W(A)
R(A),
W(A)
Zusammenfassung
• Nebenläufigkeitskontrolle (Concurrency Control) und Recovery sind Teil der
wichtigsten Aufgaben eines DBMS
• Die Benutzer müssen sich keine Sorgen über die Nebenläufigkeit machen:
• Das System benutzt Sperren und Ausführungpläne für die Transaktionen um
sicherzustellen, dass die Wirkungen und Ergebnisse äquivalent sind mit den
Wrikungen irgendeiner serialen Ausführung der Transaktionen
• Write-Ahead Logging (WAL) wird als Undo-Protokoll benutzt → nach dem
Abort einer Transaktion werden alle ausgeführten Operationen
zurückgesetzt
• Konsistenten Zustand: man sieht nur die Wirkungen der erfolgreich
beendeten Transaktionen (committed)
Herunterladen