7 Datenbanksysteme ➢ Bisheriger Kenntnisstand über (relationale) Datenbanken: ❏ Datenbank(schema) besteht aus Relationen, Entwurf guter“ Schemata ” ❏ Zugriff über SQL: Anfragen, Änderungen, DDL, Zugriffskontrolle, . . . ❏ Trennung logischer und interner Aspekte ( Datenunabhängigkeit“) ” ❏ bislang jedoch: lediglich die Ein-Benutzer-Sicht“ ” ➢ Verwendung eines Datenbanksystems bietet mehr ❏ Transaktions-Management ❏ Verteilung ❏ Tuning-Möglichkeiten, Automatische Optimierung ❏ Programmierungsschnittstellen ❏ Objektorientierte Erweiterungen, Web-Anbindung, Geo-/Spatial-DBen, Temporale DBen, Förderierte/Multi-Datenbanken, . . . Im Folgenden nur ein grober Überblick über einige dieser Aspekte c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-1 Stichworte ➢ Transaktions-Management ❏ Parallelität: kontrollierter Mehrbenutzerbetrieb ( Concurrency Control“) ” ❏ Fehlertoleranz: Automatische“ Korrektur im Fehlerfall ( Recovery“): Technische Störungen ” ” (Stromausfall, Festplatten-Crash, . . .) können abgefangen werden ➢ Verteilung: Verschiedene (Teile von) Datenbanken können an unterschiedlichen Standorten (Rechner, Ort) betrieben, aber gemeinsam genutzt werden. ➢ Tuning-Möglichkeiten: Ausnutzung der Trennung logische ↔ physische Ebene: Speicherungsstrukturen, Indexe, Anfrageoptimierung ➢ Programmierungsschnittstellen: Der typische Zugriff auf Datenbanken geschieht durch Programme, nicht über interaktive SQL-Schnittstellen ❏ Aufruf von SQL-Kommandos aus normalen“ Programmiersprachen (Java, C,. . .): ” Embedded SQL/Call Level Interface“, Host Language Coupling“ ” ” ❏ Heute können auch Programmteile direkt auf der Datenbank (d.h. im DBMS-Server) ausgeführt werden: Stored Procedures“, Methoden in der DB ” ❏ Stored Procedures können insbesondere auch auf Datenbankereignisse“ (Einfügen, ” Löschen, Ändern von Tupeln) reagieren: Trigger“, Aktive Datenbanken“ ” ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-2 7.1 Interne Organisation eines DBMS ➢ Der Aufbau der internen Ebene eines DBMS und die Optimierung des Datenbankbetriebs ist ein wesentlicher Kernbereich von kommerziellen DBMSen und Forschungsarbeiten! ➢ Wahl effizienter Speicherungsstrukturen, insbes. für den assoziativen Zugriff (vgl. Datenstrukturen und Algorithmen). ➢ Realisierung effizienter Ausführungsalgorithmen für die Operationen der Schnittstelle (SQL). 7.1.1 Speicherungsaspekte Häufige Unterscheidung in der Literatur: Primär- und Sekundärspeicherung. ➢ Primärspeicherung: Speicherung der Datensätze ( Primärdaten“) in einem bestimmten ” Format (beispielsweise: Sortierung einer Relation nach dem Primärschlüssel) ➢ Sekundärspeicherung: Zusätzliche Speicherung von Hilfs-Informationen zum effizienten Zugriff: ❏ Indizes (=Zugriffspfade, z.B. Suchbäume, Hashing) für oft benötigte Attribute ❏ Hier ist Redundanz erwünscht! ❏ Auswahl der richtigen Primär- und Sekundärspeicherung ✧ entscheidend für effizienten Betrieb einer Datenbank ✧ schwieriges Optimierungssproblem (schon Teilprobleme sind NP-vollständig !) c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-3 Abbildung 7-1: Systempuffer c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-4 Entities Abbildung auf physische Datensätze feste Länge Unterstützung inhaltsbezogener Zugriffe Zugriff über Primärschlüssel variable Länge sortierte Speicherung sortierte Listen Hilfstabellen Indexe Zugriff über Sekundärschlüssel HashVerfahren sortierte Listen ISAM B-Baum B*-Baum ... Indexe B-Baum B*-Baum ... Abbildung 7-2: Abbildung von Entities Beziehungen (Relationships) keine spezielle physische Unterstützung Invertierung physische Nachbarschaft Verkettung Zeigerfelder Abbildung 7-3: Abbildung von Beziehungen c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-5 7.1.1.1 Zur Erinnerung: Hash-Verfahren ➢ Grundgedanke: ❏ Berechnung der Satzadresse oder der Blocknummer aus dem (Primär)schlüssel des Datensatzes. ❏ Sei dom(pk) der Wertebereich des (Primär)schlüssels, S die Menge der möglichen Speicheradressen (Satzadressen oder Blocknummern): Hashfunktion h : dom(pk) −→ S. ❏ Datensätze werden über einen vorgegebenen Speicherbereich verstreut (daher auch gestreute“ Speicherung). ” ❏ Abbildung i.a. nicht eindeutig, d.h. verschiedene (Primär)schlüsselwerte können auf dieselbe Speicheradresse abgebildet werden: =⇒ Kollision =⇒ Kollisions-Behandlung. ➢ Hashfunktionen: ❏ Gute (gleichmäßige) Verteilung wichtig ❏ Standardverfahren: Divisionsrest-Methode b = Anzahl von Speicher-Blöcken s = (Primär)schlüssel (numerisch, ggf. vorher umwandeln) h(s) := s mod b c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-6 ➢ Für (statische) Hash-Verfahren gilt allgemein: ❏ Nicht reorganisationsfrei ❏ Dynamisches Wachstum (Vergrößerung Hashbereich) nicht möglich. ❏ Zugriff auf Datensätze in (Primär)schlüsselfolge wird nicht unterstützt, somit ✧ kein sequentieller Zugriff auf Datensätze in Sortierfolge möglich ✧ nur für Punktanfragen“ vom Typ Attributwert = Konstante“ einsetzbar ” ” ❏ Gefahr der Clusterbildung kann durch geeignete Wahl der Hashfunktion weitgehend vermieden werden, z.B. durch zusammengesetzte Hashfunktion h(randomize(s))“ ” ➢ Erweiterungen (=⇒ mehr Dynamik) ❏ Erweiterbares, dynamisches Hashing (Kombination mit Directories) z.T. sogar auch sortiert-seq. Zugriff möglich ❏ Mehrdimensionale Verfahren,. . . ❏ Als mittelbarer“ Zugriffspfad: Datensätze“ in Hashtabellen enthalten lediglich Adressen ” ” der eigentlichen Sätze c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-7 ➢ Würdigung Hashverfahren ❏ Hash-Verfahren sind eine äußerst wichtige Form der Datenorganisation. ❏ Bei richtiger Auslegung schnellstes assoziatives Zugriffsverfahren. (Im Mittel 1,2 Zugriffe sind leicht zu erreichen!) ❏ Satzreihenfolge entspricht bei den meisten Verfahren nicht mehr der Sortierreihenfolge, dann ✧ i.a. kein sequentieller Datendurchlauf in Sortierfolge möglich ✧ nur für punktweise Anfragen geeignet, nicht für Bereichsanfragen. ❏ Vielzahl publizierter Verfahren, immer noch Gegenstand von Forschungs- und Entwicklungsarbeiten c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-8 7.1.1.2 B*-Bäume ➢ B-Baum gut für gezieltes Aufsuchen von Schlüsseln bzw. Datensätzen Traversierung in Schlüsselreihenfolge (=Sortierfolge) zwar möglich, aber etwas umständlich ➢ Gezielter Einstieg und Weiterverarbeitung in Sortierfolge in praktischen Anwendungen jedoch relativ häufig ➢ Ansatz B*-Baum: ❏ Die Datenseiten befinden sich ausschließlich in den Blättern (und sind untereinander verkettet) ❏ Die oberen“ Baumknoten sind reine Indexknoten und dienen nur der Suchraum” Partitionierung 29 11 2 6 8 a 10 11 16 13 15 b 17 19 25 30 c 32 33 38 40 44 d 42 50 46 48 e 49 50 52 58 f Abbildung 7-4: Beispiel für B*-Baum c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-9 7.1.2 Anfrage-Bearbeitung & -Optimierung 7.1.2.1 Phasen der Anfrage-Bearbeitung SQL-Query ↓ Syntaktische und semantische Analyse ↓ Parse-Tree/Operatorbaum ↓ Anfrage-Optimierung ↓ - algebraische Optimierung; - Auswahl Join-Verfahren; - Zugriffspfad-Auswahl Ausführungsplan ↓ Code-Generierung ↓ ausführbarer“ Code ” ↓ - unmittelbare Ausführung; - spätere Ausführung (Speicherung) Laufzeit-Query Processor ↓ Anfrage-Ergebnis c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-10 ➢ Erläuterungen: ❏ Syntaktische und semantische Analyse: ✧ Welche Relationen / welche Attribute sind angesprochen? ✧ Was ist zu tun? ❏ Anfrage-Optimierung: (siehe unten) ❏ Code-Generierung: ✧ direkt ausführbarer Maschinen-Code oder ✧ direkt ausführbarer Code mit interpretativen“ Anteilen oder ” ✧ ausführbarer“ Operatorbaum → interpretierende Ausführung ” ❏ Laufzeit(system)-Query Processor: ✧ bei späterer Ausführung:1 – Prüfung, ob zugrundeliegender Ausführungsplan noch aktuell2 ggf. Zurückweisung oder (falls möglich) automatische Re-Compilation der Query (=⇒ DB2) – Bereitstellung zentraler Module für Katalogzugriff, Synchronisation, Recovery,. . . ✧ bei sofortiger Ausführung: – Wie oben, jedoch die Überprüfung der Aktualität des Zugriffsplans entfällt, da Query unmittelbar ausgeführt wird. – Interpreter für erzeugten Zwischen-Code. 1 2 bei wiederholter Anwendung ( repetitive queries“) Übersetzung in Maschinensprache i.d.R. vorteilhafter als (reine) Interpretation. ” Man spricht in diesem Zusammenhang von early binding“, bei interpretativer Ausführung ( Bindung“ zur Ausführungszeit) ” ” hingegen von late binding“ im Hinblick auf die Festlegung hinsichtlich DB-Schema und Zugriffspfaden. ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-11 7.1.2.2 Überblick: Optimierung von Anfragen ➢ Optimierung findet auf zwei Ebenen statt: ❏ algebraisch“: Die Anfrage wird in Relationenalgebra überführt und die vorhandenen ” Äquivalenzregeln (siehe Kapitel 2) werden angewandt um eine äquivalente Anfrage zu bekommen, die sich einfacher auswerten lässt: ✧ besonders sinnvoll: Eliminierung von überflüssigen Joins, Push-Down“ von Selektionen ” ✧ (nicht immer) sinnvoll: Push-Down“ von Projektionen (Warum?) ” ❏ “nichtalgebraisch“: Aufgrund der vorliegenden Speicherstrukturen (Sortierreihenfolgen, zusätzliche Indizes, Bewertung verfügbarer Auswertungsalgorithmen) wird ein spezieller Ausführungsplan für eine Anfrage festgelegt. ❏ Wichtig: Adäquate Bewertung (Kostenmodell) ➢ Optimierung spielt eine zentrale Rolle, insbesondere in relationalen DBMSen! ❏ Performanz ❏ Erhaltung der Unabhängigkeit zwischen Externer und Interner Ebene (3-EbenenArchitektur) ⇒ DBMS muss diese Optimierung selbst (automatisch) durchführen, sonst wollen“ die Nutzer/Programmierer Kenntnis über die interne Speicherung erlangen. ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-12 7.2 Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz ➢ Bisher betrachtet: ❏ Datenbanksysteme aus der Sicht eines einzelnen Benutzers/Programms (Einbenutzer-Sicht) ➢ Bisher nicht betrachtet: ❏ Welche Anforderungen entstehen durch den zeitgleichen Zugriff mehrerer Benutzer auf die gemeinsamen Daten? ❏ Wie handhabt ein DBMS paralleles Ändern und Lesen im Mehrbenutzerbetrieb? ❏ Wie kann sich ein DBMS gegen Programm- und System- Abstürze“ absichern? ” ❏ Was kann ein DBMS zur Schadensbegrenzung im Fall von Plattendefekten (Lesefehlern) tun? ➢ Anwendungsszenarien ❏ Flugbuchung / Platzreservierung ❏ Bankbuchungen, Umbuchungen, Abbuchung, Überweisung . . . ❏ allgemein Geschäftsvorfälle“ (häufig: mission critical applications“) ” ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-13 ➢ Charakteristisch: Von vielen Benutzern kommen gleichzeitig“ Anfragen und Änderungsauf” träge an das Info-System K1 K2 1 2 ... Kn .. IS Klienten: Terminals PCs / Workstations Endgeräte (Geldautomaten, Kontoauszugdrucker, EC-Kartenleser, ...) Informations-Server Abbildung 7-5: Typisches Anwendungsszenario für Mehrbenutzer-IS ➢ Problem: Korrekte Abwicklung der parallelen Aufträge Abstraktion von Geldtransaktionen, Banktransaktionen, Buchungstransaktionen, . . . ⇓ Transaktion . . . Folge von DB-Operationen mit den Eigenschaften c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-14 · Integrität (Consistency) (führt integren DB-Zustand in neuen integren über) · Isolation (Einbenutzersicht bei Parallelbetrieb) AP + DBMS Concurrency Control · Atomarität (Alles- oder Nichts) · Persistenz (Durability) Recovery (Dauerhaftigkeit) "ACID - Paradigma" c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-15 7.2.1 Aspekte der Datenbank-Integrität ➢ Inhalt der Datenbank ist ein Abbild (Modell) der Realwelt (Ausschnitt). ➢ Daten sollten möglichst korrekt (Einzelbetrachtung) und widerspruchsfrei (im Zusammenhang mit anderen Daten) sein. ➢ Datenbank-Änderungsoperationen sollten die Integrität der Datenbank nicht verletzen. 7.2.1.1 Semantische Integrität ➢ Inhaltsbezogene“ Betrachtung von Datenbank-Operationen. ” ➢ Einbeziehung Wissen über die Semantik“ von Attributen. ” ➢ Beispiel 7-1: ❏ ❏ ❏ ❏ ❏ PersNr ist zwar als INTEGER definiert, sollte aber nur Werte zwischen 10.000 und 99.999 ” annehmen, da keine höheren Personalnummern vergeben werden. Außerdem muß sich die letzte Ziffer (Prüfziffer) nach Algorithmus x“ aus den ersten 4 Ziffern ergeben.“ ” Falls Familienstand ledig‘, muß Steuerklasse ∈ {1, 2} sein.“ ” ’ Übergang von Familienstand verheiratet‘ auf Familienstand ledig‘ ist nicht erlaubt.“ ” ’ ’ Eine Kursbuchung mit einem neuen Teilnehmer in der Nimmt teil-Relation darf nur ” durchgeführt werden, wenn er/sie bereits in der Teilnehmer-Relation eingetragen wurde.“ Eine Kontobuchung muß stets auf einem Soll- und einem Habenkonto ausgeführt werden ” (doppelte Buchführung).“ c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-16 7.2.1.2 Operationale Integrität (Konsistenz) ➢ Formale“ Betrachtung von DB-Operationen. ” ➢ Keine Verfälschungen der Daten/Informationen durch das DBMS selbst (z.B. durch ungenügende Isolation“ der Benutzer im Mehrbenutzerbetrieb). ” =⇒ Synchronisation ( Concurrency Control“) ” 7.2.1.3 Integritäts-Wiederherstellung (Recovery) ➢ Rückgängigmachung von Änderungen wegen Verstoß gegen Integritätsregeln, BenutzerAbbruch (ABORT) oder Absturz“ des Anwendungsprogramms ” =⇒ transaction rollback, undo, in-transaction backout“ ” ➢ Wiederherstellung der Datenbankintegrität nach System-Zusammenbrüchen (SW-Fehler, Stromausfall, . . .) =⇒ crash recovery ➢ Wiederherstellung der Datenbankintegrität nach Speicherfehlern (z.B. Disk-Block nach Head ” Crash“ nicht mehr lesbar) =⇒ media recovery c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-17 7.2.1.4 Maßnahmen zur Gewährleistung der Integrität ➢ Semantische Integrität ❏ Durch DBMS-unterstützte Integritätsprüfungen ✧ z.B. CHECK-, UNIQUE-Klauseln, in SQL-Systemen ❏ Durch Prüfungen im Anwendungsprogramm. ➢ Operationale Integrität (Konsistenz) ❏ Durch geeignete Isolierung“ der Benutzer im Mehrbenutzerbetrieb ” ✧ z.B. Einhaltung von Sperrprotokollen ✧ z.B. durch kein vorzeitiges“ Sichtbarmachen von Änderungen. ” ➢ Recovery (Fehlerbehandlung) ❏ Durch Speicherungs-Redundanz ✧ für das Rückgängigmachen von Änderungen ✧ für das Wiedereinspielen ( Wiederholen“) bereits durchgeführter Änderungen ” ❏ Durch Erzwingung geeigneter Update-Propagation“-Strategien durch die Systempuffer” Verwaltung. c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-18 7.2.2 Transaktionen ➢ Transaktion = Eine durch den Benutzer explizit markierte Folge logisch zusammengehörender DB-Operationen. ➢ Kann eine Transaktion (TX) nicht ganz ausgeführt werden (z.B. wegen Integritätsverletzung), so ihre evtl. vorgenommenen Änderungen in der DB komplett rückgängig zu machen. ⇒ Alles-oder-nichts-Prinzip“ (Atomarität). ” ➢ Mit COMMIT WORK“ wird eine TX abgeschlossen ( End of Transaction“).34 ” ” ➢ Mit ABORT WORK“ wird die TX abgebrochen und eventuelle Änderungen rückgängig ” gemacht (in-transaction backout, undo, rollback).5 ➢ Nach jedem COMMIT WORK“ oder ABORT WORK“ (bzw. beim Start der Datenbank” ” Sitzung) wird implizit ein Begin of Transaction“ (BOT) ausgeführt. ” ➢ Eine vollständig ausgeführte TX überführt die Datenbank (per Definition!) von einem konsistenten Zustand S in einen neuen konsistenten Zustand S 0.6 ➢ Eine TX muß deshalb (aus DBMS-Sicht) stets vollständig ausgeführt werden (operationaler Aspekt). 3 4 5 6 Wir betrachten hier die entsprechenden SQL-Anweisungen für RDBMSe, allgemeine Notationen: BOT, EOT, RBT. I.d.R. gibt es auch einen Arbeitsmodus, bei der jedes SQL-Statement als eigene TX betrachtet wird ( auto-commit“). ” Wie bereits früher erwähnt, lassen sich bei manchen DBMSen DDL-Operationen nicht zurücksetzen; im Gegenteil, sie implizieren sogar ein COMMIT WORK“. Bei der Verwendung dieser Operationen in Anwendungsprogrammen ist also Vorsicht geboten! ” Stellt sich für eine gegebene TX nachträglich heraus, daß diese Prämisse falsch war, so muß die Datenbank manuell“ (z.B. durch ” Ausführung einer inversen“ TX) repariert werden“. Normale Recovery-Funktionen sind nicht mehr anwendbar. ” ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-19 ➢ Beispiel 7-2: ❏ Transaktion“ aus Anwendersicht: ” (Programm mit Embedded SQL) ➢ {BOT} ➢ < Übernehme AngNr, KursNr, TnNr von Eingabemaske >; ➢ < SELECT ∗ FROM Angebot WHERE AngNr = . . . AND KursNr = . . . >; ➢ < if ”NOT FOUND” then Fehlermeldung; ABORT WORK >; ➢ < andere Anweisungen des Anwendungsprogramms > ➢. . . ➢ < SELECT ∗ FROM Teilnehmer WHERE TnNr = . . . >; ➢ < if ”NOT FOUND” then Fehlermeldung; ABORT WORK >; ➢ < andere Anweisungen des Anwendungsprogramms > ➢. . . ➢ < INSERT INTO Nimmt teil VALUES (. . . ) >; ➢ COMMIT WORK; {EOT} ❏ Dieselbe Transaktion aus DBMS-Sicht: ( reines SQL ) ” ” (Annahme: NOT FOUND-Bedingung war nirgends erfüllt) {BOT} < SELECT ∗ FROM Angebot WHERE AngNr = . . . AND KursNr = . . . >; < SELECT ∗ FROM Teilnehmer WHERE TnNr = . . . >; < INSERT INTO Nimmt teil VALUES (. . . ) >; COMMIT WORK; {EOT} c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-20 ➢ Beispiel 7-3: ❏ Transaktion“ aus Anwendersicht: ” ➢{BOT} ➢< for i := 1 to 4 do > ➢{ ➢< Lese Eingabe von Maske >; ➢< SELECT ∗ FROM . . . > ➢< if FOUND then Fehlermeldung; ABORT WORK >; ➢< INSERT INTO . . . VALUES . . . >; ➢} ➢ COMMIT WORK; {EOT} ❏ Dieselbe Transaktion aus DBMS-Sicht: (Annahme: FOUND-Bedingung nicht eingetreten) {BOT} < SELECT ∗ FROM . . . > < INSERT INTO . . . VALUES . . . >; < SELECT ∗ FROM . . . > < INSERT INTO . . . VALUES . . . >; < SELECT ∗ FROM . . . > < INSERT INTO . . . VALUES . . . >; < SELECT ∗ FROM . . . > < INSERT INTO . . . VALUES . . . >; COMMIT WORK; {EOT} c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-21 ➢ Anmerkungen: ❏ Das DBMS weiß nichts von der Ablauf-Logik des Anwendungsprogramms. ❏ Eine Transaktion ist aus DBMS-Sicht lediglich eine Folge von SQL-Anweisungen, die stückweise“ zur Laufzeit des Programms an das DBMS übergeben werden. ” ➢ Etwas formaler . . . τ = {T1, T2, . . . , Tn} Menge von gegenseitig unabhängigen Transaktionen ( Reihenfolge der Ausführung beliebig) T =< A1, A2, . . . , Ak > Jede Transaktion ist eine Folge von Aktionen A = [op, a] Jede Aktion ist Paar aus Operation op und Objektmenge a op: Datenbankoperation (z.B.: read, write) a ∈ 2DB, DB = Menge von Datenbank-Objekten c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-22 7.2.3 Synchronisation parallel ausgeführter Transaktionen (Concurrency Control) 7.2.3.1 Einführung ➢ Zur Erhöhung des System-Durchsatzes werden Transaktionen in Mehrbenutzersystemen in der Regel nicht sequentiell (hintereinander), sondern (überlappt) parallel ausgeführt. ➢ Pro Benutzer / Anwendungsprogramm wird (mind.) eine DBMS-Task gestartet (zur Ausführung des DBMS-Codes)7. ➢ Übliche Task- Umschalt“-Zeitpunkte: I/O-Operation erfordert Externspeicherzugriff ” (Systempuffer-Zugriff reicht nicht aus oder Seite nicht im Systempuffer)8 ➢ DBMS wartet“ nicht auf I/O-Beendigung (asynchrones I/O), sondern schaltet auf andere ” Task um. ➢ Aktivierung einer Task durch den Scheduler des DBMS. ➢ Der Scheduler bestimmt damit die Folge der Lese-/Schreib-Operationen auf der Datenbank. 7 8 Da in diesen Tasks“ jeweils derselbe (reentrant Code ausgeführt wird, wird bei der DBMS-Implementierungen oft ein ” vereinfachtes Task-Konzept verwendet (−→ Threads, Multi-Threated“ Tasks). ” Mit Systempuffer“ ist der durch das DBMS verwaltetete Seiten-Puffer gemeint. ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-23 User 1 ¾ AP 1 T1 : User 2 ¾ AP 2 .. . T2 : .. . Tn : SQL-Stmt 14 SQL-Stmt 23 SQL-Stmt 13 SQL-Stmt 22 SQL-Stmt 12 ... ... User n ¾ AP n .. . SQL-Stmt n4 SQL-Stmt n3 Transaktionen SQL-Stmt n2 SQL-Stmt 21 SQL-Stmt SQL-Stmt 11 n1 Query Compiler / Interpreter . .. .. . r122 [d] w 222 [d] r121 [c] . .. w 113 [a] r221 [d] r112 [b] r111 [a] .. . rn22 [e] .. . r213 [a] r212 [g] [f] r ... 211 rn21 [c] . .. w n13 [f] DB-Aktionen r n12 [f] rn11 [a] r213 [a] Input Queue w 113 [a] DBMS-Scheduler rn11 [a] executing .. . r211 [f] Schedule r111 [a] Datenbank Abbildung 7-6: Ausführung paralleler Transaktionen durch das DBMS c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-24 ➢ Unkoordinierter Schreib-/Lesezugriff auf Daten kann zu Konsistenzproblemen führen! ❏ nicht integre Zwischenzustände werden sichtbar ❏ verlorene Änderung ( lost update“) ” ❏ einfügen in Lesemenge (Phantome; siehe später) ❏ Beispiel 7-4: Kreditcheck: Für eine gewünschte Abbuchung soll geprüft werden, ob dadurch das Kreditlimit überschritten würde. Falls ja, Buchung zurückweisen, falls nein, Abbuchung durchführen. Programmskizze:{BOT} Eingabe Kontonummer k, Abbuchung a; read Kontostand s und Kreditlimit kl von k aus DB; if (s − a) < kl then {‘Zurückweisung’, ABORT}; s := s − a; update Kontostand s von k in DB; COMMIT WORK {EOT} c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-25 Annahme: Für das Konto 5371 mit Kreditlimit −10.000 DM und aktuellem Kontostand −2.000 DM laufen gleichzeitig zwei Abbuchungsaufträge über je 7.900 DM ein. T1: Eingabe k, a read(k) →s1, kl1 hs1 − a1 ≥ kl1i k.s := s1 − a1 write(k) COMMIT Zeit T2: Eingabe k, a read(k) →s2, kl2 hs2 − a2 ≥ kl2i k.s := s2 − a2 write(k) COMMIT Resultat: ✧ beide Abbuchungen würden genehmigt. ✧ die erste Abbuchung würde verloren gehen ( lost update“). ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-26 7.2.3.2 Schedules – Serialisierbarkeit Definition 7-1: Schedule Die Sequenz der vom Datenbank-Scheduler auf der Datenbank ausgeführten Lese- und Schreiboperationen nennt man Schedule. ➢ Die Lese- und Schreiboperationen einer gegebenen Schedule können von mehreren Transaktionen stammen und verschränkt“ (überlappend) sein. ” D E i1 i2 Schedule . . . Folge der Aktionen aller Ti ∈ τ . S = A1 , A 1 , . . . Jede Transaktion T ist Teilfolge in S . 2 2 n 1 T1 A 1 A 2 1 1 ... 2 2 ... n ... A 1 A 2 A 1 A 1 ... T2 A 1 A 2 Schedule für t Tn A 1 A 2 n t [V9-Sche] c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-27 Definition 7-2: Serielle Schedule Jeweils alle Aktionen einer Transaktion werden direkt hintereinander ausgeführt (keine überlappte Ausführung von Transaktionen) 2 2 n n 1 1 A 1 A 2 ... A 1 A 2 ... A 1 A 2 ... T2 Tn T1 ➢ Korrektheit bei paralleler Ausführung? AXIOM: Die serielle Ausführung ist korrekt ➢ Bei paralleler Ausführung: Nachweisen, daß es (mindestens) eine serielle Ausführung gegeben hätte, die äquivalent zur parallelen Ausführung ist. → Äquivalenz? ➢ Erforderlich: Kriterien, wann eine nicht-serielle (überlappende) Ausführung von Transaktionen zu korrekten (konsistenten) Resultaten führt. ➢ Sei Ten,par := {T1, T2, . . . , Tn} eine Menge parallel (gleichzeitig) ausgeführter Transaktionen. ➢ Sei S ein konsistenter Ausgangszustand der Datenbank und S 0 := S(Ten,par ) der Zustand der Datenbank nach Ausführung der Transaktionen t ∈ Ten,par , ausgehend von S . c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-28 Definition 7-3: Serialisierbarkeit paralleler Transaktions-Ausführungen Gibt es zu Ten,par mindestens eine serielle Ausführungsreihenfolge Ten,seq für die gilt S(Ten,seq) = S(Ten,par ), dann nennt man Ten,par serialisierbar. Definition 7-4: Konsistenz von Datenbank-Zuständen Ein Datenbankzustand S 0 := S(Ten,par ) ist konsistent, wenn der Ausgangszustand S konsistent ist und Ten,par serialisierbar ist. ➢ Forderung: Durch die parallele Ausführung von Datenbank-Transaktionen sollen: ❏ keine anderen Datenbank-Ausgaben und ❏ keine anderen Datenbank-(End-)Zustände auftreten können, als es auch im sequentiellen Betrieb möglich wäre (=⇒ logischer Einbenutzer-Betrieb). ➢ Die Sicherstellung dieser Forderung wird durch geeignete Verfahren zur Synchronisation (concurrency control) paralleler Transaktionen erreicht. ➢ Fragen: ❏ Wann ist eine gegebene Schedule serialisierbar? ❏ Wie gewährleistet man, daß ein Scheduler nur serialisierbare Schedules erzeugt? c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-29 Definition 7-5: Konflikt Sei Ai die Menge der Datenbank-Operationen (Aktionen) von Transaktion Ti, Aj die Menge der Aktionen von Tj (Ti 6= Tj ): Zwei Aktionen a ∈ Ai und b ∈ Aj stehen in Konflikt, kurz a konflikt b, wenn beide auf dasselbe Datenbank-Objekt (z.B. Tupel) zugreifen und mindestens eine von beiden eine Schreib-Aktion ist. Definition 7-6: Abhängigkeits-Graph G(τ, E) Bezeichne T S n,par die für die Transaktionen Ten,par erzeugte Schedule. Sei τ := {T1, T2, . . . Tn} die Menge der Knoten in G, wobei gilt: T ∈ τ ⇐⇒ T ∈ Ten,par . E ist die Menge der gerichteten Kanten in G, wobei gilt: eij ∈ E ⇐⇒ ∃a ∈ Ai, ∃b ∈ Aj : a konflikt b ∧ a < b in T S n,par.10 (Anm.: a < b in T S“ steht für a tritt vor b in Schedule T S auf“) ” ” Lemma: Ein Schedule T S n,par für eine gegebene Ausführungsreihenfolge der Aktionen von T S n,par ist serialisierbar, wenn der Transaktions-Abhängigkeitsgraph von T S n,par zyklenfrei ist. 10 Mit Systempuffer“ ist der durch das DBMS verwaltetete Seiten-Puffer gemeint. ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-30 Beispiel 7-5: Gegeben sei folgender Schedule der Transaktionen T1, T2 und T3: TS Konflikt-Analyse: r1[v] < w3[v] r2[v] < w1[v] r2[v] < w3[v] w1[v] < r3[v] w1[v] < w3[v] 3,par := hr1[v] r2[v] w1[v] r3[v] w2[u] w3[v]i =⇒ =⇒ =⇒ =⇒ =⇒ e13 e21 e23 e13 e13 ∈ ∈ ∈ ∈ ∈ E E E E E T 1 T 2 T 3 Abhängigkeits-Graph Resultat: Abhängigkeitsgraph ist zyklusfrei ⇒ Schedule ist serialisierbar! Äquivalenter serieller Schedule: TS 3,seq := hr2[v]w2[u]r1[v]w1[v]r3[v]w3[v]i c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-31 Beispiel 7-6: Gegeben sei der folgende Schedule der Transaktionen T1, T2, T3 : TS Konflikt-Analyse: a) r1[v] < b) r2[v] < c) w2[v] < d) r3[v] < e) w1[v] < w2[v] w1[v] r3[v] w1[v] w3[v] 3,par := hr1[v]r2[v]w2[v]r3[v]w1[v]w3[v]i =⇒ =⇒ =⇒ =⇒ =⇒ e12 e21 e23 e31 e13 ∈ ∈ ∈ ∈ ∈ E E E E E a) T 1 b) T 2 d) e) c) T 3 Abhängigkeits-Graph Resultat: Der Abhängigkeits-Graph ist nicht zyklenfrei. (Der Schedule ist nicht serialisierbar.) Anmerkungen: ➢ Die Aussage in Beisp. 7-6: (Resultat) Abhängigkeits-Graph nicht zyklenfrei ⇒ Schedule ” nicht serialisierbar“ ist streng genommen nicht korrekt. ➢ Es gibt Schedules mit zyklischem Abhängigkeits-Graphen, die dennoch serialisierbar sind.11 ➢ Solche Schedules sind im Rahmen des normalen Scheduling allerdings nicht erzeugbar und daher praktisch nicht relevant.12 ➢ Konstruktion des Abhängigkeits-Graphen i.w. nur für den Korrektheitsnachweis von Synchronisationsverfahren interessant, weniger zur Realisierung von Scheduling-Algorithmen. 11 12 Die Zyklen werden von Aktionen verursacht, deren Ergebnisse von später folgenden Aktionen blind“ überschrieben werden. ” Vgl. etwa (Weikum und Vossen 2001) c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-32 Definition 7-7: (Konflikt-Serialisierbarkeit) Ein Schedule S heißt konflikt-serialisierbar, wenn es einen seriellen Schedule mit gleicher Abhängigkeitsrelation gibt. Abhängigekeitsrelation: gibt die Reihefolge der im Konflikt stehenden Operationen verschiedener Transaktionen in einem Schedule wieder. In der Literatur: S ∈ CPSR . . . Klasse der Conflict Preserving-Serializable Schedules“ ” Satz 7-1: Ein Schedule ist genau dann CP-serialisierbar, wenn sein Abhängigkeitsgraph zyklenfrei ist. Beweisskizze: ➢ Kein Zyklus =⇒ topologische Sortierung ↓ äquivalenter serieller Schedule S 0 ➢ CP-Serialisierbar =⇒ ∃ äquivalenten seriellen Schedule ↓ kein Zyklus, sonst Widerspruch! c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-33 Vorberechnung serialisierbarer Schedules nicht möglich, weil ➢ die Aktionsfolgen einer Transaktion in der Regel nicht im voraus bekannt sind ➢ die Berechnungskomplexität zu hoch wäre: Bei n Transaktionen T1, T2, . . . Tn, mit jeweils mi Aktionen (1 ≤ i ≤ n) sind insgesamt #sched = n P i=1 n Q mi ! Schedules möglich.13 mi! i=1 Zahlenbeispiel: 3 Transaktionen mit je 5 Aktionen: #sched = 13 15! (5!)3 = 756.756 Das Problem der Bestimmung aller möglichen Schedules läßt sich zurückführen auf die Bestimmung der Permutationen von k Elementen x1 , x2 , . . . , xk , wobei nicht alle xi (1 ≤ i ≤ k) voneinander verschieden sind. c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-34 7.2.3.3 Überblick: Synchronisationsverfahren ➢ hier nur Überblick: ausführlich in vertiefenden Vorlesungen ➢ Vorgehensweisen von Synchronisationsverfahren zur Gewährleistung serialisierbarer Schedules: es gibt prinzipiell unterschiedliche Ansätze, je nach Vermutung über die Häufigkeit von Konflikten 1. Vor Ausführung einer Aktion einer Transaktion wird jeweils geprüft, ob ein Konsistenzproblem auftreten würde =⇒ Sperrverfahren ( pessimistische Verfahren“): ” ❏ Jede Transaktion sperrt die benötigten Objekte, bevor diese verwendet werden, d.h. andere Transaktionen können während dieser Zeit nicht auf dieses Objekt zugreifen. ❏ Innerhalb einer Transaktion können Sperren für verschiedene Objekte zu verschiedenen Zeitpunkten gesetzt und wieder gelöscht werden. ❏ trotzdem Probleme möglich! ❏ 2-Phasen-Sperr-Protokoll (2PL): Jede Transaktion hat erst eine Sperrphase“, und ” dann eine Freigabephase“. Nach der ersten Freigabe können keine weiteren Sperren ” angefordert werden. ❏ 2-Phasen-Sperr-Protokoll sichert Serialisierbarkeit zu! c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-35 2. Nach Ausführung aller Aktionen einer Transaktion (bei EOT) wird geprüft, ob ein COMMIT Konsistenzprobleme mit anderen Transaktionen verursachen würde =⇒ Optimistische“ ” Synchronisationsverfahren: ❏ keine Verwaltung von Sperren notwendig. ❏ Es wird aufgezeichnet, welche Objekte von Transaktionen gelesen/geschrieben wurden. ❏ Transaktionen, bei denen ein Konflikt mit anderen, schon beendeten Transaktionen aufgetreten ist, werden abgebrochen und müssen von neuem gestartet werden. ❏ Neustarten von Transaktionen ist zeitintensiv: Dieses Verfahren ist nur einsetzbar, wenn die erwartete Anzahl von Konflikten sehr gering ist. c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-36 7.2.4 Recovery und Datensicherung ➢ Aktueller Datenbankzustand kann ggf. rekonstruiert werden aus ❏ Backup: Sicherung der Datenbank zu einem bestimmten Zeitpunkt. ❏ und einem Log-File: Speicherung aller Schreiboperationen einer Transaktion in chronologischer Reihenfolge. ➢ Backup und Log-File müssen getrennt von der eigentlichen Datenbank gespeichert werden! ➢ Aus dem Logfile kann ein gültiger Datenbankzustand rekonstruiert werden: ❏ Rücksetzen der Schreiboperationen der nichtbeendeten Transaktionen (Verlierer) ❏ Ausführen der vollständig im Log-File protokollierten Transaktionen (Gewinner) c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-37 7.3 7.3.1 Verteilte Datenbanken Grundlegende Konzepte Verteilte Datenbank besteht aus einer Menge von Informationseinheiten, die auf mehreren über ein Kommunikationsnetzwerk (LAN, WAN, Internet) verbundenen Rechnern verteilt sind: ➢ Autonomie: Auf jedem Server können lokale Anwendungen ohne die Daten der anderen Server arbeiten. ➢ Integration: in globalen Anwendungen über das Kommunikationsnetzwerk. Die an dem Kommunikationsnetzwerk beteiligten Rechner können unterschiedliche Aufgaben haben und auf verschiedene Weise miteinander kommunizieren. c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-38 7.3.1.1 Mögliche Architekturen ➢ Kopplung/Integration mehrerer Subsysteme IS SubIS 1 SubIS 2 ... SubIS k ❏ Zum Beispiel: ✧ Textsystem + Graphiksystem + Datenbanksystem ( + Editoren. . . ) ✧ Datenwörterbuch/Directory ❏ Typisch: Funktionalität mehrerer Subsysteme über eine Schnittstelle ansprechen ❏ Anwendungen: Büro, CIM c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-39 ➢ Örtliche Verteilung/lokale Verarbeitung IS 2 IS 1 IS 3 ❏ Gleiches“ IS an verschiedenen Orten ” Grundlage: Verteilte DBMSe ❏ Anwendung: Filialen (Bank, Versicherung . . . ) c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-40 ➢ Client-/Server- oder Server-Workstation-Kopplung WS 1 WS S WS 2 k ❏ Workstations für spezielle Aufgaben ausgestattet Anwendung: Reisebüros, Versicherungen,. . . c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-41 7.3.1.2 Grundlegender Aufbau eines VDBMS globales Schema Fragmentierungsschema Zuordnungsschema lokales Schema ... lokales Schema lokales DBMS ... lokales DBMS ... Station S1 Station Sn Abbildung 7-7: Aufbau eines verteilten DBMS c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-42 Ein wesentlicher Entwurfsaspekt besteht in der Entscheidung, wie die Daten auf den verschiedenen Rechnern fragmentiert und ggf. repliziert werden: ➢ redunzfreie Allokation ➢ Allokation mit Replikation Fragmentierung R Allokation R11 R1 Station S1 R12 R2 R21 R3 Station S2 R23 R33 Station S3 Abbildung 7-8: Fragmentierung und Allokation c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-43 ➢ Fragmentierung kann auf verschiedene Weise geschehen: ❏ horizontal: Selektionen ❏ vertikal: Projektionen ❏ kombiniert ➢ Transparenz: Verteilung nicht sichtbar. Dadurch können Benutzer/Anwendungsprogramme flexibler arbeiten. Transparenz ist auf verschiedenen Stufen möglich: ❏ Fragmentierungstransparenz ❏ Allokationstransparenz ❏ Lokale Schematransparenz ➢ Anfrageoptimierung in verteilten Datenbanken: ❏ Allokationstransparenz ❏ wesentlicher Kostenfaktor: Austausch von Teilergebnissen zwischen verschiedenen Rechnern. ❏ spezielle Join-Algorithmen, die lokal ausgeführt werden, und nur notwendige Daten übertragen =⇒ Semi-Joins c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-44 7.3.2 Das Zwei-Phasen-Commit-Protokoll ( Two-Phase-Commit, 2PC“) ” ➢ Idee: Zur Beendigung einer globalen Transaktion wird ein (Zwischen-)Zustand eingerichtet, der ein sicheres gemeinsames COMMIT oder ABORT der beteiligten Subsysteme ermöglicht. GST1 BOT1 Opk,1 … OpK,n LDBMS1 Opl,1 … Opl,o LDBMS2 GST2 BOT2 Verzögerung bis zum EOTi der längsten GSTi GST3 BOT3 Opk,1 … OpK,p c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme LDBMS3 7-45 ➢ Die zwei Phasen des 2PC: ❏ Kern: Alle an der Ausführung von T beteiligten Knoten stimmen ab, ob T global committed“ oder aborted“ wird. ” ” (Knoten, auf dem T gestartet ist, ist Koordinator“, übrige sind Agenten“) ” ” ❏ Phase 1: Prepare to Commit and Vote“ ” Koordinator fordert Agenten auf, Commit von T vorzubereiten und fordert Abstimmungsergebnis an (⇒ Sichern der After-Images) ❏ Phase 2: Commit/Abort“ ” Nach Erhalt aller positiver Stimmen (Fall Commit) oder mindestens einer negativen Stimme (Fall Abort) teilt der Koordinator Ergebnis mit: COMMIT im Fall Commit, ABORT, falls mind. eine Abort-Meldung (⇒ Freigabe von Sperren) c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-46 ➢ Übersicht: 2-Phase-Commit Koordinator Commit-Wunsch von T K1 Sende Prepare to Commit an alle Agenten K2 von mind. einem Agenten "No" erhalten von allen Agenten "Yes" erhalten K3 Speichere "EOT-COMMIT" für T sicher K AB Sende "ABORT T" an alle Agenten c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme K CO Sende "COMMIT T" an alle Agenten 7-47 Agenten "Prepare to Commit" erhalten A1 Sende "Yes" an Koordinator Sende "No" an Koordinator A2 "ABORT T" erhalten AAB setze T zurück "Commit T" erhalten A CO führe COMMIT für T aus bei Knoten-Crash oder Unterbrechung: Time-Out“ Parameter! ” c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-48 7.3.3 Synchronisation replizierter Daten ➢ Einfache Möglichkeit: Wenn ein Datum geändert wird, so muß es in allen Fragmenten, wo es auftritt sofort geändert werden. ❏ Vorteil: Lesetransaktionen können sich das optimale Fragment aussuchen. ❏ Nachteil: Schreibtransaktionen müssen alle zugehörigen Fragmente sperren. ➢ Alternative: Quorum-Consensus: ❏ Schreibtransaktionen verändern nur einen bestimmten Anteil Qw der beteiligten Fragmente. ❏ Lesetransaktionen lesen mindestens Qr Fragmente, um sicher zu sein, daß das gelesene Datum korrekt ist. ❏ Dabei können die Quoren flexibel gesetzt werden, damit sichere“ von unsicheren“ Servern ” ” unterschieden werden können. ❏ Dafür muß gelten: 1. Qw (A) + Qw (A) > W (A) und 2. Qr (A) + Qw (A) > W (A). ➢ Beispiel 7-7: Station (Si) S1 S2 S3 S4 Kopie (Ai) A1 A2 A3 A4 Gewicht (wi) 3 1 2 2 c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme Mögliche Quoren: ❏ Qr (A) = 4 ❏ Qw (A) = 5 7-49 7.4 Zusätzliche Literaturhinweise ➢ zu Architektur und Realisierung von DBSen: (Härder 1999; Heuer und Saake 1999; Ramakrishnan 1998; Mitschang 1995; Elmasri und Navathe 1994) ➢ zu Transaktionsverwaltung: (Bernstein und Newcomer 1997; Jajodia 1997; Gray und Reuter 1994; Weikum 1988; Bernstein et al. 1987; Lockemann und Schmidt 1987; Reuter 1981; Weikum und Vossen 2001) ➢ zu Verteilten Datenbanken: (Ceri und Pelagatti 1984; Özsu und Valduriez 1991; Kudlich 1992; Bell und Grimson 1992; Gray und Reuter 1994; Dadam 1996) Bell, D. und J. Grimson (1992). Distributed Database Systems. Addison-Wesley. Bernstein, P. und E. Newcomer (1997). Principles of transaction processing . Morgan Kaufmann. Bernstein, P.A., V. Hadzilacos und N. Goodman (1987). Concurrency Control and Recovery in Database Systems. Addision-Wesley. Ceri, S. und G. Pelagatti (1984). Distributed Databases, Principles and Systems. McGraw-Hill. Dadam, P. (1996). Verteilte Datenbanken und Client/Server-Systeme: Grundlagen, Konzepte und Realisierungsformen. Springer. Elmasri, R. und S. Navathe (1994). Fundamentals of Database Systems. The Benjamin/Cummings Publ. Comp., Redwood City, CA., 2 Aufl. Gray, J. und A. Reuter (1994). Transaction processing — concepts and techniques. Morgan Kaufmann. Härder, T (1999). Datenbanksysteme: Konzepte und Techniken der Implementierung . Springer. Heuer, A. und G. Saake (1999). Datenbanken: Implementierungstechniken. Int’l Thompson Publishing, Bonn. Jajodia, S. (1997). Advanced transaction models and architectures. Kluwer. c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-50 Kudlich, H. (1992). Verteilte Datenbanken, Systemkonzepte und Produkte. Siemens Nixdorf Informationssysteme AG. Lockemann, P.C. und J. Schmidt, Hrsg. (1987). Datenbank-Handbuch. Springer-Verlag. Mitschang, B. (1995). Anfrageverarbeitung in Datenbanksystemen - Entwurfs- und Implementierungsaspekte. Vieweg. Özsu, M.T. und P. Valduriez (1991). Principles of Distributed Database Systems. Prentice Hall. Ramakrishnan, R. (1998). Database Managment Systems. ... Reuter, A. (1981). Fehlerbehandlung in Datenbanksystemen. Carl Hanser-Verlag. Weikum, G. (1988). Transaktionen in Datenbanksystemen. Addison-Wesley. Weikum, Gerhard und G. Vossen (2001). Transactional Information Systems: Theory, Algorithms, and Practice of Concurrency Control and Recovery . Morgan Kaufmann, San Francisco, CA. c M. Scholl, 2001/02 – Informationssysteme: 7. Datenbanksysteme 7-51