Kapitel 8: Transaktionen



Ähnliche Dokumente
Kapitel 2 Transaktionsverwaltung

Kapitel 3 Synchronisation

Kapitel 10: Transaktionen und Datenintegrität

Datenbanken: Backup und Recovery

Transaktionsverwaltung

Datenbanken: Transaktionskonzept und Concurrency Control

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

Transaktionsverwaltung

Datenintegrität und Transaktionskonzept

Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung

Synchronisation in Datenbanksystemen in a nutshell

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Tag 4 Inhaltsverzeichnis

P.A. Bernstein, V. Hadzilacos, N. Goodman

View. Arbeiten mit den Sichten:

Tag 4 Inhaltsverzeichnis

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Übungen zur Vorlesung. Datenbanken I

Recovery- und Buffermanager

Software-Engineering und Datenbanken

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Transaktionen Recovery Isolationslevel. Datenbanksysteme. Transaktionen. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Eigenschaften von TAs: ACID-Prinzip

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Datenbanksysteme II SS Übungsblatt 9: Wiederholung

Transaktionen und Synchronisation konkurrierender Zugriffe

Views in SQL. 2 Anlegen und Verwenden von Views 2

Literatur und Quellen. Datenbanken. Inhalt. Inhalt. Transaktionen. Nikolaus Augsten. Wintersemester 2013/14

Datenbankadministration

Unterabfragen (Subqueries)

Grundlagen verteilter Systeme

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Koordination des Mehrbenutzerbetriebs 9. Koordination des Mehrbenutzerbetriebs

SQL (Structured Query Language) Schemata Datentypen

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

IT-Kompaktkurs. Datenbanken Skript zur Folge 4. Prof. Dr. Manfred Gruber Fachhochschule München

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

ecaros2 - Accountmanager

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

SQL: statische Integrität

Prozedurale Datenbank- Anwendungsprogrammierung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken (Bachelor) (SPO2007) WS 2011/12

Die Grundbegriffe Die Daten Die Informationen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Grundlagen der Theoretischen Informatik, SoSe 2008

Probeklausur Grundlagen der Datenbanksysteme II

6. Datenintegrität. Integritätsbedingungen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Transaktionsverwaltung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Kurzanleitung zur Übermittlung der mündlichen Prüfungsergebnisse mit DSD-Online. Stand: Dezember Schulmanagement weltweit

Wie halte ich Ordnung auf meiner Festplatte?

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

1 Mathematische Grundlagen

Allgemeines zu Datenbanken

Referentielle Integrität

SEPA-Umstellungshilfe für die VR-NetWorld-Software zur Nutzung von SEPA-Lastschriften

S7-Hantierungsbausteine für R355, R6000 und R2700

7. Transaktionsverwaltung

1 topologisches Sortieren

Lehrer: Einschreibemethoden

Wiederherstellung (Recovery)

Referentielle Integrität

10.6 Programmier-Exits für Workitems

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Datenbanken. Prof. Dr. Bernhard Schiefer.

Gliederung Datenbanksysteme

Ablauf bei der Synchronisation und Sortierung von Dateien aus mehreren Kameras

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Dateimanagement in Moodle Eine Schritt-für

Existenzgründer Rating

Anbindung des eibport an das Internet

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

7. Datenkontrolle. Klassifikation von Integritästbedingungen Integritätsbedingungen in SQL. Zugriffskontrolle/Autorisierung in SQL 7-1

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

cs241: Datenbanken mit Übungen HS 2011

Oracle Datenbank - Recovery

R ist freie Software und kann von der Website.

Datenintegrität. Bisherige Integritätsbedingungen

Transkript:

Ludwig Maximilians Universität München Institut für Informatik Lehr- und Forschungseinheit für Datenbanksysteme Skript zur Vorlesung Wintersemester 2006/2007 Vorlesung: Dr. Peer Kröger Übungen: Karsten Borgwardt, Dr. Peer Kröger Skript 2005 Christian Böhm http://www.dbs.informatik.uni-muenchen.de/lehre/dbs Transaktionskonzept Transaktion: Folge von Befehlen (read, write), die die DB von einen konsistenten Zustand in einen anderen konsistenten Zustand überführt Transaktionen: Einheiten integritätserhaltender Zustandsänderungen einer Datenbank Hauptaufgaben der Transaktions-Verwaltung Synchronisation (Koordination mehrerer Benutzerprozesse) Recovery (Behebung von Fehlersituationen) Transaktion DB vorher (konsistent) DB tmp1 DB tmpn DB nachher (konsistent) 2

Transaktionskonzept Beispiel Bankwesen: Überweisung von Huber an Meier in Höhe von 200 Mgl. Bearbeitungsplan: (1) Erniedrige Stand von Huber um 200 (2) Erhöhe Stand von Meier um200 Möglicher Ablauf Konto Kunde Stand Meier 1.000 Huber 1.500 (1) Konto Kunde Stand Meier 1.000 Huber 1.300 (2) Systemabsturz Inkonsistenter DB-Zustand darf nicht entstehen bzw. darf nicht dauerhaft bestehen bleiben! 3 Eigenschaften von Transaktionen 4 ACID-Prinzip Atomicity (Atomarität) Der Effekt einer Transaktion kommt entweder ganz oder gar nicht zum Tragen. Consistency (Konsistenz, Integritätserhaltung) Durch eine Transaktion wird ein konsistenter Datenbankzustand wieder in einen konsistenten Datenbankzustand überführt. Isolation (Isoliertheit, logischer Einbenutzerbetrieb) Innerhalb einer Transaktion nimmt ein Benutzer Änderungen durch andere Benutzer nicht wahr. Durability (Dauerhaftigkeit, Persistenz) Der Effekt einer abgeschlossenen Transaktion bleibt dauerhaft in der Datenbank erhalten. Weitere Forderung: TA muss in endlicher Zeit bearbeitet werden können

Steuerung von Transaktionen 5 begin of transaction (BOT) markiert den Anfang einer Transaktion Transaktionen werden implizit begonnen, es gibt kein begin work o.ä. end of transaction (EOT) markiert das Ende einer Transaktion alle Änderungen seit dem letzten BOT werden festgeschrieben SQL: commit oder commit work abort markiert den Abbruch einer Transaktion die Datenbasis wird in den Zustand vor BOT zurückgeführt SQL: rollback oder rollback work Beispiel UPDATE Konto SET Stand = Stand-200 WHERE Kunde = Huber ; UPDATE Konto SET Stand = Stand+200 WHERE Kunde = Meier ; COMMIT; Steuerung von Transaktionen Unterstützung langer Transaktionen durch define savepoint markiert einen zusätzlichen Sicherungspunkt, auf den sich die noch aktive Transaktion zurücksetzen lässt Änderungen dürfen noch nicht festgeschrieben werden, da die Transaktion noch scheitern bzw. zurückgesetzt werden kann SQL: savepoint <identifier> backup transaction setzt die Datenbasis auf einen definierten Sicherungspunkt zurück SQL: rollback to <identifier> 6

Ende von Transaktionen COMMITgelingt der neue Zustand wird dauerhaft gespeichert. COMMITscheitert der ursprüngliche Zustand wie zu Beginn der Transaktion bleibt erhalten (bzw. wird wiederhergestellt). Ein COMMIT kann z.b. scheitern, wenn die Verletzung von Integritätsbedingungen erkannt wird. ROLLBACK Benutzer widerruft Änderungen Transaktion commit gelingt DB vorher (konsistent) DB tmp1 DB tmpn DB nachher (konsistent) 7 rollback scheitert Aufgaben eines DBMS 8 Wahrung eines korrekten DB-Zustands unter realen Benutzungsbedingungen, d.h. 1. Datensicherheit (Recovery) Schutz vor Verlust von Daten durch technische Fehler (Systemabsturz) 2. Integrität (Integrity) Schutz vor Verletzung der Korrektheit und Vollständigkeit von Daten durch berechtigte Benutzer Transaktionen 3. Synchronisation (Concurrency Control) Schutz vor Fehlern durch sich gegenseitig störenden nebenläufigen Zugriff mehrerer Benutzer 4. Datenschutz (Security) Schutz vor Zugriffen und Änderungen durch unberechtigte Benutzer Zugriffsrechte

Aufgaben eines DBMS 9 Wahrung eines korrekten DB-Zustands unter realen Benutzungsbedingungen, d.h. 1. Datensicherheit (Recovery) Schutz vor Verlust von Daten durch technische Fehler (Systemabsturz) 2. Integrität (Integrity) Schutz vor Verletzung der Korrektheit und Vollständigkeit von Daten durch berechtigte Benutzer 3. Synchronisation (Concurrency Control) Schutz vor Fehlern durch sich gegenseitig störenden nebenläufigen Zugriff mehrerer Benutzer 4. Datenschutz (Security) Schutz vor Zugriffen und Änderungen durch unberechtigte Benutzer Klassifikation von Fehlern Transaktionsfehler Lokaler Fehler einer noch nicht festgeschriebenen Transaktion, z.b. durch Fehler im Anwendungsprogramm Expliziter Abbruch der Transaktion durch den Benutzer (ROLLBACK) Verletzung von Integritätsbedingungen oder Zugriffsrechten Konflikte mit nebenläufigen Transaktionen (Deadlock) 10

Klassifikation von Fehlern 11 Systemfehler Fehler mit Hauptspeicherverlust, d.h. permanente Speicher sind nicht betroffen, z.b. durch Stromausfall Ausfall der CPU Absturz des Betriebssystems, Medienfehler Fehler mit Hintergrundspeicherverlust, d.h. Verlust von permanenten Daten, z.b. durch Plattencrash Brand, Wasserschaden, Fehler in Systemprogrammen, die zu einem Datenverlust führen Recovery-Techniken Rücksetzen (bei Transaktionsfehler) Lokales UNDO: der ursprüngliche DB-Zustand wie zu BOT wird wiederhergestellt, d.h. Rücksetzen aller Aktionen, die diese Transaktion ausgeführt hat Transaktionsfehler treten relativ häufig auf Behebung innerhalb von Millisekunden notwendig 12

Recovery-Techniken Warmstart (bei Systemfehler) Globales UNDO: Rücksetzen aller noch nicht abgeschlossenen Transaktionen, die bereits in die DB eingebracht wurden Globales REDO: Nachführen aller bereits abgeschlossenen Transaktionen, die noch nicht in die DB eingebracht wurden Dazu sind Zusatzinformationen aus einer Log-Datei notwendig, in der die laufenden Aktionen, Beginn und Ende von Transaktionen protokolliert werden Systemfehler treten i.d.r. im Intervall von Tagen auf Recoverydauer einige Minuten 13 Recovery-Techniken Kaltstart (bei Medienfehler) Aufsetzen auf einem früheren, gesicherten DB- Zustand (Archivkopie) Globales REDO: Nachführen aller Transaktionen, die nach dem Erzeugen der Sicherheitskopie abgeschlossenen wurden Medienfehler treten eher selten auf (mehrere Jahre) Recoverydauer einige Stunden / Tage Wichtig: regelmäßige Sicherungskopien der DB notwendig 14

Aufgaben eines DBMS 15 Wahrung eines korrekten DB-Zustands unter realen Benutzungsbedingungen, d.h. 1. Datensicherheit (Recovery) Schutz vor Verlust von Daten durch technische Fehler (Systemabsturz) 2. Integrität (Integrity) Schutz vor Verletzung der Korrektheit und Vollständigkeit von Daten durch berechtigte Benutzer 3. Synchronisation (Concurrency Control) Schutz vor Fehlern durch sich gegenseitig störenden nebenläufigen Zugriff mehrerer Benutzer 4. Datenschutz (Security) Schutz vor Zugriffen und Änderungen durch unberechtigte Benutzer Datenintegrität 16 Beispiel Kunde(KName, KAdr, Konto) Auftrag(KName, Ware, Menge) Lieferant(LName, LAdr, Ware, Preis) Mögliche Integritätsbedingungen Kein Kundenname darf mehrmals in der Relation Kunde vorkommen. Jeder Kundenname in Auftrag muss auch in Kunde vorkommen. Kein Kundenstand darf unter -100 sinken. Das Konto des Kunden Huber darf überhaupt nicht überzogen werden. Es dürfen nur solche Waren bestellt werden, für die es mindestens einen Lieferanten gibt. Der Brotpreis darf nicht erhöht werden.

Statische vs. dynamische Integrität Statische Integritätsbedingungen Einschränkung der möglichen Datenbankzustände z.b. Kein Kundenstand darf unter -100 sinken. In SQL durch Constraint-Anweisungen implementiert (UNIQUE, DEFAULT, CHECK,.) Im Bsp.: create table Kunde( kname varchar(40) primary key, kadr varchar(100), konto float check konto > -100, ); 17 Statische vs. dynamische Integrität 18 Dynamische Integritätsbedingungen Einschränkung der möglichen Zustandsübergänge z.b. Der Brotpreis darf nicht erhöht werden. In Oracle durch sog. Trigger implementiert PL/SQL-Programm, das einer Tabelle zugeordnet ist und durch ein best. Ereignis ausgelöst wird Testet die mögliche Verletzung einer Integritätsbedingung und veranlasst daraufhin eine bestimmte Aktion Mögliche Ereignisse: insert, update oder delete Befehls-Trigger (statement-trigger): werden einmal pro auslösendem Befehl ausgeführt Datensatz-Trigger (row-trigger): werden einmal pro geändertem / eingefügtem / gelöschtem Datensatz ausgeführt Mögliche Zeitpunkte: vor (BEFORE) oder nach (AFTER) dem auslösenden Befehl oder alternativ dazu (INSTEAD OF)

Statische vs. dynamische Integrität Datensatz-Trigger haben Zugriff auf Instanzen vor und nach dem Ereignis mit :new. bzw. :old. (PL/SQL-Block) new.bzw. old. (Trigger-Restriktion) Im Bsp.: create trigger keineerhoehung before update of Preis on Lieferant for each row when (old.ware = Brot ) begin if (:old.preis < :new.preis) then :new.preis = :old.preis; endif; end 19 Modellinhärente Integrität 20 Durch das Datenmodell vorgegebene Integritätsbedingungen Typintegrität Beschränkung der zulässigen Werte eines Attributs durch dessen Wertebereich Schlüsselintegrität DB darf keine zwei Tupel mit gleichem Primärschlüssel enthalten, z.b. Kein Kundenname darf mehrmals in der Relation Kunde vorkommen.. Referentielle Integrität (Fremdschlüsselintegrität) Wenn Relation R einen Schlüssel von Relation S enthält, dann muss für jedes Tupel in R auch ein entsprechendes Tupel in S vorkommen, z.b. Jeder Kundenname in Auftrag muss auch in Kunde vorkommen..

Aufgaben eines DBMS 21 Wahrung eines korrekten DB-Zustands unter realen Benutzungsbedingungen, d.h. 1. Datensicherheit (Recovery) Schutz vor Verlust von Daten durch technische Fehler (Systemabsturz) 2. Integrität (Integrity) Schutz vor Verletzung der Korrektheit und Vollständigkeit von Daten durch berechtigte Benutzer 3. Synchronisation (Concurrency Control) Schutz vor Fehlern durch sich gegenseitig störenden nebenläufigen Zugriff mehrerer Benutzer 4. Datenschutz (Security) Schutz vor Zugriffen und Änderungen durch unberechtigte Benutzer Synchronisation (Concurrency Control) Serielle Ausführung von Transaktionen ist unerwünscht, da die Leistungsfähigkeit des Systems beeinträchtigt ist (niedriger Durchsatz, hohe Wartezeiten) Mehrbenutzerbetrieb führt i.a. zu einer besseren Auslastung des Systems (z.b. Wartezeiten bei E/A- Vorgängen können zur Bearbeitung anderer Transaktionen genutzt werden) Aufgabe der Synchronisation Gewährleistung des logischen Einbenutzerbetriebs, d.h. innerhalb einer TA ist ein Benutzer von den Aktivitäten anderer Benutzer nicht betroffen 22

Anomalien bei unkontrolliertem Mehrbenutzerbetrieb Verloren gegangene Änderungen (Lost Updates) Zugriff auf schmutzige Daten (Dirty Read / Dirty Write) Nicht-reproduzierbares Lesen (Non-Repeatable Read) Phantomproblem Beispiel: Flugdatenbank Passagiere FlugNr Name Platz Gepäck LH745 Müller 3A 8 LH745 Meier 6D 12 LH745 Huber 5C 14 BA932 Schmidt 9F 9 BA932 Huber 5C 14 23 Lost Updates 24 Änderungen einer Transaktion können durch Änderungen anderer Transaktionen überschrieben werden und dadurch verloren gehen Bsp.: Zwei Transaktionen T1 und T2 führen je eine Änderung auf demselben Objekt aus T1: UPDATE Passagiere SET Gepäck = Gepäck+3 WHERE FlugNr = LH745 AND Name = Meier ; T2: UPDATE Passagiere SET Gepäck = Gepäck+5 WHERE FlugNr = LH745 AND Name = Meier ; Mgl. Ablauf: T1 read(passagiere.gepäck, x1); x1 := x1+3; write(passagiere.gepäck, x1); T2 read(passagiere.gepäck, x2); x2 := x2 + 5; write(passagiere.gepäck, x2); In der DB ist nur die Änderung von T1 wirksam, die Änderung von T2 ist verloren gegangen Verstoß gegen Durability

Dirty Read / Dirty Write 25 Zugriff auf schmutzige Daten, d.h. auf Objekte, die von einer noch nicht abgeschlossenen Transaktion geändert wurden Bsp.: T1 erhöht das Gepäck um 3 kg, wird aber später abgebrochen T2 erhöht das Gepäck um 5 kg und wird erfolgreich abgeschlossen Mgl. Ablauf: T1 UPDATE Passagiere SET Gepäck = Gepäck+3; T2 UPDATE Passagiere SET Gepäck = Gepäck+5; COMMIT; ROLLBACK; Durch den Abbruch von T1 werden die geänderten Werte ungültig. T2 hat jedoch die geänderten Werte gelesen (Dirty Read) und weitere Änderungen darauf aufgesetzt (Dirty Write) Verstoß gegen ACID: Dieser Ablauf verursacht einen inkonsistenten DB-Zustand (Consistency) bzw. T2 muss zurückgesetzt werden (Durability). Non-Repeatable Read Eine Transaktion sieht während ihrer Ausführung unterschiedliche Werte desselben Objekts Bsp.: T1 liest das Gepäckgewicht der Passagiere auf Flug BA932 zwei mal T2 bucht den Platz 3F auf dem Flug BA932 für Passagier Meier mit 5kg Gepäck Mgl. Ablauf T1 SELECT Gepäck FROM Passagiere WHERE FlugNr = BA932 ; T2 INSERT INTO Passagiere VALUES (BA932, Meier, 3F, 5); COMMIT; SELECT Gepäck FROM Passagiere WHERE FlugNr = BA932 ; Die beiden SELECT-Anweisungen von Transaktion T1 liefern unterschiedliche Ergebnisse, obwohl die T1 den DB-Zustand nicht geändert hat Verstoß gegen Isolation 26

Phantomproblem 27 Ausprägung des nicht-reproduzierbaren Lesen, bei der Aggregatfunktionen beteiligt sind Bsp.: T1 druckt die Passagierliste sowie die Anzahl der Passagiere für den Flug LH745 T2 bucht den Platz 7D auf dem Flug LH745 für Phantomas Mgl. Ablauf T1 SELECT * FROM Passagiere WHERE FlugNr = LH745 ; SELECT COUNT(*) FROM Passagiere WHERE FlugNr = LH745 ; T2 INSERT INTO Passagiere VALUES (LH745, Phantomas, 7D, 2); COMMIT; Für Transaktion T1 erscheint Phantomas noch nicht auf der Passagierliste, obwohl er in der danach ausgegebenen Anzahl der Passagiere berücksichtigt ist Serialisierbarkeit von Transaktionen Die nebenläufige Bearbeitung von Transaktionen geschieht für den Benutzer transparent, d.h. als ob die Transaktionen (in einer beliebigen Reihenfolge) hintereinander ausgeführt werden Begriffe Ein Schedule für eine Menge {T 1,, T n } von Transaktionen ist eine Folge von Aktionen, die durch Mischen der Aktionen der T i s entsteht, wobei die Reihenfolge innerhalb der jeweiligen Transaktion beibehalten wird. Ein serieller Schedule ist ein Schedule S von {T 1,, T n }, in dem die Aktionen der einzelnen Transaktionen nicht untereinander verzahnt sondern in Blöcken hintereinander ausgeführt werden. Ein Schedule S von {T 1,, T n } ist serialisierbar, wenn er dieselbe Wirkung hat wie ein beliebiger serieller Schedule von {T 1,, T n }. 28 Nur serialisierbare Schedules dürfen zugelassen werden!

Serialisierbarkeit von Transaktionen Beispiele für nicht-serialisierbare Schedules Lost Update: S=(r 1 (x), w 2 (x), w 1 (x)) T 1 T 2 r(x) w(x) w(x) Dirty Read: S=(w 1 (x), r 2 (x), w 1 (x)) T 1 T 2 w(x) r(x) w(x) 29 Non-repeatable Read: S=(r 1 (x), w 2 (x), r 1 (x)) T 1 T 2 r(x) r(x) w(x) Kriterium für Serialisierbarkeit 30 Mit Hilfe von Serialisierungsgraphen kann man prüfen, ob ein Schedule {T 1,, T n } serialisierbar ist Die beteiligten Transaktionen {T 1,, T n } sind die Knoten des Graphen Die Kanten beschreiben die Abhängigkeiten der Transaktionen: Eine Kante T i T j wird eingetragen, falls im Schedule w i (x) vor r j (x) kommt: Schreib-Lese-Abhängigkeiten wr(x) r i (x) vor w j (x) kommt: Lese-Schreib-Abhängigkeiten rw(x) w i (x) vor w j (x) kommt: Schreib-Schreib-Abhängigkeiten ww(x) Ein Schedule ist serialisierbar, falls der Serialisierungsgraph zyklenfrei ist Einen zugehörigen seriellen Schedule erhält man durch topologisches Sortieren des Graphen

Kriterium für Serialisierbarkeit Beispiele S = (r 1 (x), r 2 (y), r 3 (z), w 3 (z), w 2 (y), w 1 (x), w 2 (y), r 1 (y), r 3 (x), w 1 (y)) rw(y), wr(y), ww(y) T 2 T 1 T 3 wr(x) T 1 T 2 T 3 r(x) r(y) Serialisierungsreihenfolge: (T 2, T 1, T 3 ) Nicht-serialisierbare Schedules S=(r 1 (x), w 2 (x), w 1 (x)) S=(w 1 (x), r 2 (x), w 1 (x)) S=(r 1 (x), w 2 (x), r 1 (x)) Lost Update Dirty Read Non-Repeatable Read r(z) w(z) w(y) w(x) w(y) r(y) r(x) w(y) t ww(x) rw(x) wr(x) T 1 T 2 T 1 T 2 T 1 T 2 31 rw(x) wr(x) rw(x) Techniken zur Synchronisation 32 Verwaltungsaufwand für Serialisierungsgraphen zu hoch. Deshalb: Andere Verfahren, die die Serialisierbarkeit gewährleisten Pessimistische Ablaufsteuerung (Locking) Konflikte werden vermieden, indem Transaktionen durch Sperren blockiert werden Nachteil: ggf. lange Wartezeiten Vorteil: I.d.R. nur wenig Rücksetzungen aufgrund von Synchronisationsproblemen nötig Standardverfahren Optimistische Ablaufsteuerung (Zeitstempelverfahren) Transaktionen werden im Konfliktfall zurückgesetzt Transaktionen arbeiten bis zum COMMIT ungehindert. Anschließend erfolgt Prüfung anhand von Zeitstempeln, ob ein Konflikt aufgetreten ist Nur geeignet, falls Konflikte zwischen Schreibern eher selten auftreten

Techniken zur Synchronisation Nur-lesende Transaktionen können sich gegenseitig nicht beeinflussen, da Synchronisationsprobleme nur im Zusammenhang mit Schreiboperationen auftreten. Es gibt deshalb die Möglichkeit, Transaktionen als nurlesend zu markieren, wodurch die Synchronisation vereinfacht und ein höherer Parallelitätsgrad ermöglicht wird: SET TRANSACTION READ-ONLY: kein INSERT, UPDATE, DELETE SET TRANSACTION READ-WRITE: alle Zugriffe möglich 33 Aufgaben eines DBMS 34 Wahrung eines korrekten DB-Zustands unter realen Benutzungsbedingungen, d.h. 1. Datensicherheit (Recovery) Schutz vor Verlust von Daten durch technische Fehler (Systemabsturz) 2. Integrität (Integrity) Schutz vor Verletzung der Korrektheit und Vollständigkeit von Daten durch berechtigte Benutzer 3. Synchronisation (Concurrency Control) Schutz vor Fehlern durch sich gegenseitig störenden nebenläufigen Zugriff mehrerer Benutzer 4. Datenschutz (Security) Schutz vor Zugriffen und Änderungen durch unberechtigte Benutzer

Datenschutz 35 Bisher: Schutz der Daten vor unabsichtlicher Beschädigung Außerdem nötig: Schutz der Daten gegen absichtliche Beschädigung und Enthüllung von sensiblen und persönlichen Daten Einteilung der Schutzmechanismen in 3 Kategorien: Identifikation und Authentisierung - bevor Benutzer Zugang zu einem Datenbanksystem erhält, muss er sich identifizieren - Zum Beispiel durch Eingabe eines Benutzernamens - Authentisierung prüft, ob es sich auch tatsächlich um den Benutzer handelt (z.b. durch Passwortabfrage) Datenschutz 36 Autorisierung und Zugriffskontrolle Autorisierung = Menge von Regeln Regeln legen erlaubte Arten des Zugriffs auf Sicherheitsobjekte durch Sicherheitssubjekte fest Sicherheitsobjekt = passive Entität, die Information beinhaltet (z.b. ein Tupel oder ein Attribut) Sicherheitssubjekt = aktive Entität, die eine Informationsfluss bewirkt (z.b. Benutzer, Benutzergruppen, Datenbankprozesse, Anwendungsprogramme) Auditing Buchführung über jede sicherheitsrelevante Datenbankoperation

Datenschutz Unterschiedliche Schutzbedürfnisse erfordern unterschiedliche Autorisierungsregeln Datenbank an einer Hochschule Datenbank in einem Betrieb Datenbank in einer militärischen Anlage Zugriffskontrolle in SQL Befehl zur Vergabe von Rechten (grant) Befehl zum Entzug von Rechten (revoke) Erzeugen von Sichten (create view) 37