9 Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz I 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“ ” I Verwendung eines Datenbanksystems bietet einen weiteren entscheidenden Vorteil: Transaktions-Management: kontrollierter Mehrbenutzerbetrieb ( Concurrency Control“) ” Fehlertoleranz: Automatische“ Korrektur im Fehlerfall ( Recovery“): Technische Störungen ” ” (Stromausfall, Festplatten-Crash, . . .) können abgefangen werden Parallelisierung: automatische Durchsatz-Optimierung Verteilung: Verschiedene (Teile von) Datenbanken können an unterschiedlichen Standorten (Rechner, Ort) betrieben, aber gemeinsam genutzt werden. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-1 Problemstellung I Bisher betrachtet: Datenbanksysteme aus der Sicht eines einzelnen Benutzers/Programms (Einbenutzer-Sicht). Axiom: Einbenutzerbetrieb ist korrekt I 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? I Anwendungsszenarien Flugbuchung / Platzreservierung Bankbuchungen, Umbuchungen, Abbuchung, Überweisung . . . allgemein Geschäftsvorfälle“ (häufig: mission critical applications“) ” ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-2 I Charakteristisch: Von vielen Benutzern kommen gleichzeitig“ Anfragen und Änderungsaufträge ” an das Info-System K1 K2 1 2 ... Kn .. IS Klienten: Terminals PCs / Workstations Endgeräte (Geldautomaten, Kontoauszugdrucker, EC-Kartenleser, ...) Informations-Server Abbildung 9-1: Typisches Anwendungsszenario für Mehrbenutzer-IS I Problem: Korrekte Abwicklung der parallelen Aufträge Abstraktion von Geldtransaktionen, Banktransaktionen, Buchungstransaktionen, . . . ⇓ Transaktion . . . Folge von DB-Operationen mit garantierten ACID“-Eigenschaften ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-3 9.1 Transaktionskonzept Transaction Processing (TP)“ hat seine Ursprünge in Datenbank- und Informationssystemen (sowie ” in sog. TP Monitors“, mit etwas anderer Interpretation) ” Heute spielt TP jedoch auch eine wichtige Rolle in vielen anderen Bereichen, das Abstraktionskonzept Transaktion“ und seine generische Realisierung zur Behandlung von parallelem Zugriff (concurrent ” access) auf gemeinsam benutzte Daten und die Behandlung verschiedener Arten von Fehlern (failure handling) sind in diversen Szenarien nützlich. I ursprünglich: OLTP – Online Transaction Processing. Bank-Buchungssysteme, Flugreservierungs- und -buchungssysteme, Mietwagen- und HotelReservierung, . . . I heute in vielen neuartigen Geschäftszweigen: Electronic Commerce, Workflows (Geschäftsprozesse), . . . I aber auch anderen generischen Software-Produkten: Betriebssysteme, Kommunikationssysteme, E-Mail-Server, Dokumentenserver, . . . Allgemeine Charakteristik: viele, verteilt zusammenarbeitende, heterogene Komponenten, die auf große, gemeinsame Datenbestände zugreifen. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-4 Transaktionen I sind ein Meilenstein moderner Informationssystem-Technologie I abstrahieren von den unterschiedlichsten, komplexen und oftmals schwierig zu durchschauenden Aufgaben, gemeinsam benutzte Daten konsistent zu halten. . . . bei vielen gleichzeitigen Zugriffen, . . . bei diversen möglichen Fehlerkonstellationen, . . . bei enormen Performance-Anforderungen, . . . bei (vom Benutzer verborgenem) Parallelisierungspotential, . . . unter Verwendung generischer (anwendungsunabhängiger) Methoden, . . . und zwar völlig transparent für die Anwendung. Wir sprechen im folgenden von Transactional Data Servers“ oder kurz von Transaktionssystemen“ ” ” und untersuchen Methoden zur Realisierung solcher Systeme. Datenbanksysteme (DBMSs) sind bei weitem die bedeutendste Klasse von Transaktionssystemen, jedoch gelten alle Betrachtungen auch für andere transaktionsorientierte Dienste. Wir konzentrieren uns auf die folgenden Merkmale der vorgestellten Methoden und Algorithmen: I Zuverlässigkeit (reliability) und I Korrektheit I Performance I Verfügbarkeit (availability) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-5 9.1.1 Anwendungsszenarien Wir betrachten drei Anwendungsfälle 1. Banküberweisungen (die klassische OLTP-Anwendung), 2. Web-basiertes Electronic Commerce (E-Commerce), 3. Reiseplanung (als Workflow-Anwendung) 9.1.1.1 OLTP: Debit/Credit Vereinfachte Bankanwendung auf einer relationalen Datenbank mit vier Relationen: Account (Account ID, Br anch ID, Account Balance) Br anch (Br anch ID, Br anch Balance) T eller (T eller ID, Br anch ID, T eller Balance) Histor y (Account ID, T eller ID, Br anch ID, Amount, Date and T ime) Transaktionen sind hier entweder Einzahlungen (Deposits) oder Abhebungen (Withdrawals). Die Rolle des Tellers“ kann auch von einem PC mit Banking-Software oder einem Bankautomaten gespielt ” werden. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-6 Pseudo-Code für ein Debit/Credit-Programm read Aid, Tid, Bid, Delta from user input; /* Delta positive: deposit; Delta negative: withdrawal */ begin transaction; /* read and modify account balance */ Select Account Balance Into A From Account Where Account Id = Aid; A := A + Delta; /* possibly perform various sanity checks */ ... Update Account Set Account Balance = A Where Account Id = Aid; /* read and modify teller balance */ Select Teller Balance Into T From Teller Where Teller Id = Tid; T := T + Delta; Update Teller Set Teller Balance = T Where Teller Id = Tid; /* read and modify branch balance */ Select Branch Balance Into B From Branch Where Branch Id = Bid; B := B + Delta; Update Branch Set Branch Balance = B Where Branch Id = Bid; /* write audit trail record */ Insert into History Values (Aid, Tid, Bid, Delta, timestamp); commit transaction; c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-7 Beobachtungen I Je nach Betrag von Delta“ (+/−) wird ein Deposit oder ein Withdraw realisiert. ” I Dieses Client-Programm greift nach dem Einlesen der Daten auf alle vier Relationen zu. I Alle Zugriffe müssen zusammen ausgeführt werden. Nachdem die Transaktion gestartet wurde muss es von außen so aussehen, als ob entweder alle oder gar keine der Operationen ausgeführt werden (Atomarität, Atomicity), denn nur so kann die Konsistenz (Consistency) der Datenbank gewahrt werden. I . . . insbesondere auch in Gegenwart diverser möglicher Fehlerquellen, d.h. ggf. muss die unvollständig ausgeführte Transaktion zurückgesetzt werden (Fehlerbehandlung, Recovery). I . . . umgekehrt dürfen Änderungen erfolgreich abgeschlossener Transaktionen nicht verloren gehen (Dauerhaftigkeit, Durability). I Zur optimalen Nutzung von Server-Ressourcen und wegen der Performance-Anforderungen vieler gleichzeitiger“ Transaktionen müssen die Zugriffe simultan (concurrent oder echt parallel) ” ausgeführt werden. Das einzelne Transaktionsprogramm soll von möglichen Komplikationen und Fehlerfällen abgeschirmt werden (logische Einbenutzersicht): Isolation paralleler Transaktionen untereinander. I Trade-Off: Concurrency (Performance) ⇔ sequentielle Ausführung (Einfachheit, Korrektheit) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-8 Beispiel 9-1: Zwei Debit/Credit-Transaktionen werden in Prozessen P1, P2 ausgeführt; P1 will $50 vom Konto x abheben, P2 will $100 auf x einzahlen. Ursprünglicher Kontostand: $100. Die Tabelle zeigt nur die Zugriffe auf die Account-Tabelle, A1, A2 bezeichnen die lokalen Account BalanceVariablen der beiden Prozesse. P1 Time P2 /* A1 = 0, x.Account Balance = 100, A2 = 0 */ Select Account Balance Into A1 1 From Account Where Account Id = x /* A1 = 100, x.Account Balance = 100, A2 = 0 */ 2 Select Account Balance Into A2 From Account Where Account Id = x /* A1 = 100, x.Account Balance = 100, A2 = 100 */ A1 := A1 - 50 3 /* A1 = 50, x.Account Balance = 100, A2 = 100 */ 4 A2 := A2 + 100 /* A1 = 50, x.Account Balance = 100, A2 = 200 */ Update Account Set Account Balance = A1 5 Where Account Id = x /* A1 = 50, x.Account Balance = 50, A2 = 200 */ 6 Update Account Set Account Balance = A2 Where Account Id = x /* A1 = 50, x.Account Balance = 200, A2 = 200 */ c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-9 Transaktionsgarantien Die o.a. Eigenschaften von Transaktionen: Atomarität, Dauerhaftigkeit und Isolation garantieren zusammengenommen, dass sich das Client-Programm nicht um Concurrency und Fehlerbehandlung kümmern muss, der Transaktionsserver übernimmt diese Aufgaben transparent. Auf dieser Basis dieser generischen Dienste können hochzuverlässige und performante Informationssysteme realisiert werden, und zwar nicht nur im OLTP-Bereich. Man fasst diese Transaktionseigenschaften üblicherweise unter dem Acronym ACID-Transactions“ ” zusammen: A . . . Atomicity C . . . Consistency I . . . Isolation D . . . Durability c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-10 9.1.1.2 Electronic Commerce Abwicklung von Bestellungen/Bezahlungen über Internet, z.B. Buchbestellungen. Charakteristisch hier: in eine solche Transaktion sind mehrere verteilte Server mit unterschiedlicher Hard- und Software involviert. Die Anwendung kann etwa in folgenden Schritte ablaufen: 1. Client besucht Internet-Seiten eines Online Book Store mittels eines Browsers und durchsucht den Katalog. 2. Client füllt schrittweise einen elektronischen Einkaufswagen ( Shopping Cart“) mit einzukaufenden ” Büchern. 3. Vor dem eigentlichen Kauf wird der Inhalt nochmals inspiziert und ggf. verändert. 4. Client gibt alle relevanten Informationen ein: insbesondere Lieferadresse und Zahlungsinformationen (z.B. Kreditkartennummer oder eine andere Art von Cybercash; diese Informationen werden typischerweise verschlüsselt) 5. Der Book Store verifiziert die Zahlung mit der Bank, dem Kreditkartenunternehmen oder einem Clearing House für Cybercash, im Erfolgsfall wird die Lieferung veranlasst und der Client über den Erfolg benachrichtigt. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-11 Anforderungen an solche Transaktionen I Offensichtlich müssen auch hier gewisse Daten konsistent gehalten werden, sogar solche, die auf verschiedenen Rechnern gespeichert sind. I Das kann bereits für den Inhalt des Shopping Cart beim Client und im Server des Book Store gelten. (Natürlich auch bei Fehlern auf Client- oder Server-Seite bzw. im Netzwerk!) Weiterhin kann dies weitere Konsistenzprobleme nach sich ziehen (z.B. im Abgleich mit dem Lager beim Server des Book Store). I Während die Konsistenz des Shopping Carts noch als Luxus“ bezeichnet werden könnte, ist sie im ” letzten Schritt des Ablaufs essentiell: alle Beteiligten (Client, Server, Bank) sollten ein konsistentes Bild vom Ausgang der Transaktion haben! Man könnte den Anforderungen auf sehr viele verschiedene Arten gerecht werden, die Verwendung von Transaktionen mindestens im letzten Schritt vereinfacht jedoch die Realisierung der E-CommerceAnwendung entscheidend, da die Betrachtung der Atomaritätseigenschaften und Fehlerfälle obsolet wird. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-12 Vergleich mit dem OLTP-Szenario Es gibt viele Gemeinsamkeiten, aber auch wichtige Unterschiede, die diese Verallgemeinerungen des klassischen Transaktionskonzeptes nahelegen: I Die Anwendung ist verteilt auf mehrere Rechner mit heterogener Software (z.B. Nutzung verschiedener DBMSs auf den verschiedenen Servern) und Hardware (weniger relevant). I Die Server sind nicht notwendigerweise Datenbanksysteme, es können allgemeinere Dienste, wie z.B. Document Management Servers, Information Repositories, . . . beteiligt sein. I Die von Transaktionen verursachten Effekte können auch Nachrichten zwischen beteiligten Rechnern sein, nicht nur gespeicherte Daten. Transaktionstechniken können entsprechend erweitert werden. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-13 9.1.1.3 Workflow Management: Reiseplanung Workflow Management Systeme dienen der (Teil-) Automatisierung von Geschäftsprozessen“. ” Workflow = Folge von Aktivitäten (Steps), die zusammen ein bestimmtes Geschäftsziel (Geschäftsvorgang) realisieren, z.B.: I Kreditantrag bei einer Bank, Versicherungsfall in einer Versicherung, I Arbeit eines Programmkommittees für eine wissenschaftliche Tagung (Einreichung von Beiträgen, Begutachtung, Benachrichtigungen, . . .), I Administrationsabläufe beim Immobilienkauf, I Behandlungsablauf bzw. -planung für Patienten in einer Klinik, . . . Kontroll- und Datenfluss einer solchen Anwendung werden im Workflow vorstrukturiert, obwohl zur Bearbeitungszeit oft Abweichungen möglich sein müssen. So wird der stereotypische, sich immer gleich wiederholende Teil der Anwendung automatisierbar, während der Entscheidungsspielraum für adhocAbweichungen erhalten bleibt. Dazu ist die Spezifikation der Kontroll- und Datenflüsse das essentielle Hilfsmittel. Da in den Entscheidungsverlauf menschliche Interventionen eingebaut sind, ist ein wesentliches Merkmal von Workflows die lange Bearbeitungsdauer; typischerweise wird ein Workflow verteilt über mehrere verantwortliche Personen, unter Verwendung verschiedener Informationssysteme, oftmals aus unterschiedlichen Unternehmen, abgearbeitet. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-14 Workflow Management Systeme bieten I Möglichkeiten zur High-Level-Spezifikation solcher Abläufe (sowie zur Simulation, Verifikation wünschenswerter Eigenschaften, . . .), inklusive der notwendigen Schritte I eine Laufzeitumgebung, die nach der gegebenen Spezifikation automatisch die Schritte auslöst. Beispiel 9-2: Als konkretes Beispiel betrachten wir die Reiseplanung zur einer (wissenschaftlichen oder Fortbildungs-) Tagung. Annahme: Mitarbeiter dürfen sich jährlich eine Tagung im Rahmen eines Weiterbildungsprogrammes aussuchen. Folgende Aktivitäten sind involviert: I Auswahl einer Konferenz aufgrund von Thema, Inhalt, Zeit, Ort, . . . Wenn keine geeignete Konferenz gefunden wird, dann wird der Prozess beendet. I Bestimmung der Reisekosten, typischerweise ausgelagert auf ein Reisebüro. I Bestimmung der Teilnahmegebühr zur Konferenz, diese hängt oft von Zusatzinformationen (Mitgliedschaft in Verbänden) und Zusatzleistungen (Bankett, Tutorien) ab. I Vergleich der Gesamtkosten mit dem Budget und Buchung nur wenn Budget nicht überschritten. Da Tagungen ständig teurer werden, die Budgets immer enger, werden mehrere Versuche zugelassen, aber nur begrenzt viele, damit Terminierung garantiert werden kann. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-15 Das folgende Diagramm zeigt eine Workflow-Spezifikation in Form eines sog. State Charts“ (vgl. end” licher Automat). Jedes Oval bezeichnet einen Abarbeitungszustand, in dem sich der Prozess befinden kann, sowie eine Aktion, die bei Erreichen dieses Zustandes ausgeführt wird. Die Ausführung beginnt in einem ausgezeichneten Startzustand (hier: SelectConference) und terminiert, wenn ein Endzustand (hier: Go und No) erreicht wird. Zustandsübergänge werden durch Event-Condition-Action-Rules“ gesteuert, die an den Kanten an” gegeben sind. Es können so Verzweigungen und Iterationen ausgedrückt werden. Hierarchische Verfeinerung ist durch Schachtelung“ eines tieferliegenden Charts in den Zustand eines höherliegenden ” Charts möglich. Werden mehrere Charts in einem Knoten geschachtelt, so wird damit Parallelität ausgedrückt. / Budget:=1000; Trials:=1; Select Conference [ConfFound] / Cost:=0 [!ConfFound] CheckConfFee Go Check Flight Select Tutorials [Cost £ Budget] Compute Fee / Cost = ConfFee + TravelCost Check Áirfare Check Hotel Check Cost [Cost > Budget & Trials ³ 3] Check Hotel CheckTravelCost No [Cost > Budget & Trials < 3] / Trials++ c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-16 Transaktionen und Workflows Wie können Workflow Management Systeme von Transaktionsservices profitieren? 1. Aktivitäten können Transaktionen auf betroffenen Informationssystemen ausführen. Am Beispiel sicher innerhalb der Aktivität CheckTravelCost: ausführen verschiedener Transaktionen in Hotel-, Flug- und ähnlichen Reservierungssystemen. Nicht nur Preisbestimmung sondern ggf. auch Buchung, diese aber nur gemeinsam (z.B. Flug ohne Hotel sinnlos). Hier sind mehrere autonome Informationssysteme beteiligt! 2. Mehrere Schritte des Workflow kommunizieren über Status-Variablen, so dass z.B. bei Nichtverfügbarkeit eines Fluges eine andere Konferenz gewählt werden kann. Dazu ist der gemeinsame Zugriff verschiedener Schritte (Transaktionen) auf Status-Variablen des Workflow-Systems nötig (d.h. der Workflow sollte unter Transaktionskontrolle ablaufen!) 3. Es wäre zu überlegen, ob der ganze Workflow nicht eine Transaktion sein sollte (schließlich ist auch hier Atomarität gewünscht). Problem jedoch: Langlebigkeit (Stunden, Tage, Wochen)! Klassische Transaktoinsmechanismen sind dafür völlig ungeeignet (wegen der Kopplung von Atomarität und Isolation: andere Workflows könnten nicht auf Teilergbnisse zugreifen). In der Literatur wurden daher flexiblere Transaktionsmodelle vorgestellt, die die verschiedenen ACID-Eigenschaften entkoppeln, z.B. die Realisierung von Atomarität durch kompensierende Aktionen. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-17 9.1.2 Transaktionen: Konzept & Realisierung Eine Transaktion (TX) ist ein Vertrag über die Schnittstelle zwischen dem Client und dem Server. Gegenstand des Vertrages sind die ACID-Eigenschaften. Dieser Vertrag befreit den Client von allen Auswirkungen von I Concurrency – d.h. allen Effekten der überlappten oder parallelen Ausführung von Transaktionsprogrammen, insbesondere solcher Datenzugriffe, I Fehlern – d.h. allen Folgen von ungewollten Programmunterbrechungen aufgrund von Prozessoder Rechnerfehlern. Anwendungen können so entwickelt werden, als liefen sie in einer strikt sequentiellen, fehlerfreien Umgebung ab. Dazu ist lediglich die Verwendung von drei Primitiven an der Client-/Server-Schnittstelle (Transaction Programming Interface) erforderlich: I BOT – begin of transaction: Start einer TX, I EOT – end of transaction ( commit“): erfolgreiches Ende, ” I RBT – rollback transaction ( abort“): erfolgloses Ende mit der Aufforderung, alle Effekte unge” ” schehen“ zu machen. Die BOT- und EOT-Aufrufe (die TXs) werden vom Client dynamisch erzeugt, ein Client-Programm kann mehrere TXs (nacheinander oder gar parallel) starten, siehe Workflow-Beispiel. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-18 Transaktionsserver Zur Gewährleistung der ACID-Eigenschaften mindestens die folgenden zwei Komponenten: I Concurrency Control – Synchronisation der (überlappt) parallelen TXs: Isolation der (committed und aborted) TXs I Recovery – zur Sicherung der Atomarität und Dauerhaftigkeit der TXs Anforderungen darüberhinaus: I Performance: gute Performance bei gegebener HW/SW-Konfiguration bzw. allgemeiner gute Cost/Performance Ratio bei flexibler Konfiguration. Typischerweise zwei Metriken: Durchsatz (high throughput): # erfolgreich abgeschlossener TXs pro Zeiteinheit, Antwortzeit (short response time): Zeitspanne zwischen BOT und EOT einer erfolgreichen TX aus der Sicht des Client. I Zuverlässigkeit (reliablility): Korrektes Verhalten in Gegenwart von Fehlern, d.h. TX-Server darf unter keinen Umständen Daten verlieren, muss immer in einen konsistenten Zustand zurückkehren können. I Verfügbarkeit (high availability): wenige Betriebsunterbrechungen, schnelle Fehlerbehandlung bei Unterbrechungen I Sicherheit, Administrierbarkeit, Standards, . . . c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-19 Client-/Server-Architekturen 3-Tier-Architecture“: ” Users ... Clients Request Application Server Reply Application Program 1 Request Data Server Spezialfälle ( 2-Tier-Architectures“): ” Client-/Server-Systeme Application Program 2 ... Reply encapsulated data Objects ... exposed data I Fat Client – Kombination von Client und Application Server: Client kommuniziert direkt mit Data Server (z.B. über SQL, ODBC). Problem: Data Servers oft nicht für sehr viele Clients konzipiert. I Thin Client – Kombination von Application & Data Server: Anwendungsprogramm läuft auf dem Server (z.B. objektorientiertes DBMS). Problem: Skalierbarkeit des Servers. Stored Data (Pages) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-20 Föderierte/Interoperable Server Typischerweise greifen Anwendungen auf Applikationen und Daten verschiedener Server zu (vgl. Beispiele E-Commerce und Workflow). Es handelt sich um hochgradig verteilte und heterogene Architekturen mit Servern unterschiedlichen Autonomiegrades, die durch geeignete Middleware“ (eine ” komfortable Kommunikationsinfrastruktur“) verknüpft wird (z.B. CORBA, DCOM). ” Users Clients Application Servers Data Servers ... ... ... c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-21 Datenbanksysteme als TX-Server Datenbankserver folgen i.d.R. einer Schichtenarchitektur nach folgendem Vorbild. Es ist Aufgabe der Transaktionsverwaltungskomponenten eines DBMS, die Requests der Clients so auszuführen, dass neben einem möglichst großen Parallelisierungspotential die ACID-Garantien eingehalten werden (⇒ u.a. Scheduling). ... Clients Requests Language & Interface Layer Database Server Request Execution Threads Query Decomposition & Optimization Layer Query Execution Layer Access Layer Storage Layer Data Accesses Database c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-22 9.1.3 Aspekte der Datenbank-Integrität I Inhalt der Datenbank in der Regel Abbild (Modell) der Realwelt (Ausschnitt). I Daten sollten möglichst korrekt (Einzelbetrachtung) und widerspruchsfrei (im Zusammenhang mit anderen Daten) sein. I Datenbank-Änderungsoperationen sollten die Integrität der Datenbank nicht verletzen. 9.1.3.1 Semantische Integrität I Inhaltsbezogene“ Betrachtung von Datenbank-Operationen. ” I Einbeziehung Wissen über die Semantik“ von Attributen. ” I Beispiel 9-3: 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 muss sich die letzte Ziffer (Prüfziffer) nach Algorithmus x“ aus den ersten 4 Ziffern ergeben.“ ” Falls Familienstand ledig‘, muss 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 durch” geführt werden, wenn er/sie bereits in der Teilnehmer-Relation eingetragen wurde.“ Eine Kontobuchung muss stets auf einem Soll- und einem Habenkonto ausgeführt werden ” (doppelte Buchführung).“ c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-23 9.1.3.2 Operationale Integrität (Konsistenz) I Formale“ Betrachtung von DB-Operationen. ” I Keine Verfälschungen der Daten/Informationen durch das DBMS selbst (z.B. durch ungenügende Isolation“ der Benutzer im Mehrbenutzerbetrieb). ” =⇒ Synchronisation ( Concurrency Control“) ” 9.1.3.3 Integritäts-Wiederherstellung (Recovery) I Rückgängigmachung von Änderungen wegen Verstoß gegen Integritätsregeln, Benutzer-Abbruch (ABORT) oder Absturz“ des Anwendungsprogramms ” =⇒ transaction rollback, undo, in-transaction backout“ ” I Wiederherstellung der Datenbankintegrität nach System-Zusammenbrüchen (SW-Fehler, Stromausfall, . . .) =⇒ crash recovery I Wiederherstellung der Datenbankintegrität nach Speicherfehlern (z.B. Disk-Block nach Head ” Crash“ nicht mehr lesbar) =⇒ media recovery c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-24 9.1.3.4 Maßnahmen zur Gewährleistung der Integrität I Semantische Integrität Durch DBMS-unterstützte Integritätsprüfungen . z.B. CHECK-, UNIQUE-Klauseln, in SQL-Systemen Durch (Plausibilitäts-) Prüfungen im Anwendungsprogramm. I Operationale Integrität (Konsistenz) Durch geeignete Isolierung“ der Benutzer im Mehrbenutzerbetrieb ” . z.B. Einhaltung von Sperrprotokollen . z.B. durch kein vorzeitiges“ Sichtbarmachen von Änderungen. ” I Recovery (Fehlerbehandlung) Durch Speicherungsredundanz . für das Rückgängigmachen von Änderungen . für das Wiedereinspielen ( Wiederholen“) bereits durchgeführter Änderungen ” Durch Erzwingen geeigneter Update-Propagation“-Strategien durch die Systempuffer-Verwal” tung. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-25 9.2 Definition DB-Transaktionen I Transaktion = Eine durch den Benutzer explizit markierte Folge logisch zusammengehörender DB-Operationen. I 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). ” I Mit COMMIT WORK“ wird eine TX abgeschlossen ( End of Transaction“).12 ” ” I Mit ABORT WORK“ wird die TX abgebrochen und eventuelle Änderungen rückgängig gemacht ” (in-transaction backout, undo, rollback).3 I Nach jedem COMMIT WORK“ oder ABORT WORK“ (bzw. beim Start der Datenbank” ” Sitzung) wird implizit ein Begin of Transaction“ (BOT) ausgeführt. ” I Eine vollständig ausgeführte TX überführt die Datenbank (per Definition!) von einem konsistenten Zustand S in einen neuen konsistenten Zustand S 0.4 I Eine TX muss deshalb (aus DBMS-Sicht) stets vollständig ausgeführt werden (operationaler Aspekt). 1 Wir betrachten hier die entsprechenden SQL-Anweisungen für RDBMSe, allgemeine Notationen: BOT, EOT, RBT. 2 I.d.R. gibt es auch einen Arbeitsmodus, bei der jedes SQL-Statement als eigene TX betrachtet wird ( auto-commit“). ” 3 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! 4 Stellt sich”für eine gegebene TX nachträglich heraus, dass diese Prämisse falsch war, so muss die Datenbank manuell“ (z.B. ” durch Ausführung einer inversen“ TX) repariert werden“. Normale Recovery-Funktionen sind nicht mehr anwendbar. ” ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-26 I Beispiel 9-4: 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-27 I Beispiel 9-5: 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-28 I 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ück- weise“ zur Laufzeit des Programms an das DBMS übergeben werden. ” I Etwas formaler . . . τ = {T1, T2, . . . , Tn } Menge von wechelseitig 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-29 9.3 9.3.1 Synchronisation parallel ausgeführter Transaktionen (Concurrency Control) Einführung I Zur Erhöhung des System-Durchsatzes werden Transaktionen in Mehrbenutzersystemen in der Regel nicht sequentiell (hintereinander), sondern (überlappt) parallel ausgeführt. I Pro Benutzer / Anwendungsprogramm wird (mind.) eine DBMS-Task gestartet (zur Ausführung des DBMS-Codes)5. I Übliche Task- Umschalt“-Zeitpunkte: I/O-Operation erfordert Externspeicherzugriff (Systempuffer” Zugriff reicht nicht aus oder Seite nicht im Systempuffer)6 I DBMS wartet“ nicht auf I/O-Beendigung (asynchrones I/O), sondern schaltet auf andere Task ” um. I Aktivierung einer Task durch den Scheduler des DBMS. I Der Scheduler bestimmt damit die Folge der Lese-/Schreib-Operationen auf der Datenbank. 5 Da in diesen Tasks“ jeweils derselbe (reentrant) Code ausgeführt wird, wird bei der DBMS-Implementierungen oft ein ” vereinfachtes Task-Konzept verwendet (−→ Threads, Multi-Threaded“ Tasks). 6 Mit Systempuffer“ ist der durch das DBMS verwaltete” Seiten-Puffer gemeint. ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-30 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 9-2: Ausführung paralleler Transaktionen durch das DBMS c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-31 I 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 9-6: 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 in DB; if (s − a) < kl then {‘Zurückweisung’, ABORT}; s := s − a; update Kontostand s von k; COMMIT WORK {EOT} c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-32 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: Zeit Eingabe k, a read(k) →s1, kl1 hs1 − a1 ≥ kl1i k.s := s1 − a1 write(k) COMMIT 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-33 Inconsistent Read-Problem Drei Integer-Objekte (für Konten) x, y , z mit Ausgangswerten x = 40, y = 50, z = 30; Bedingung x + y + z = 120 erfüllt. Prozess 1 berechnet aktuelle Summe, Prozess 2 transferiert $10 von z nach x: P1 sum := 0 read(x) read(y ) sum := sum + x sum := sum + y read(z) sum := sum + z Time 1 2 3 4 5 6 7 8 9 10 11 12 13 P2 read(z) z := z − 10 write(z) read(x) x := x + 10 write(x) Prozess 1 gibt Summe 110 aus, was offensichtlich falsch ist, aber schwer zu erkennen. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-34 Beobachtungen Beide Beispiele zeigen Probleme wie sie auch allgemein bei der Prozess-Synchronisation, etwa in Betriebssystemen, auftreten können: I Die aufgetretenen Effekte sind unerwünscht, prinzipiell aber nach außen (d.h. für die ablaufenden TX-Programme) nicht erkenntlich. I Keine der möglichen seriellen Ausführungsreihenfolgen (also solche, in denen jeweils eine TX vollständig zu Ende barbeitet wird, bevor eine neue begonnen wird) hätte ein Problem verursacht. → Diese Beobachtung führt später zu einem Korrektheitskriterium. Das nächste Beispiel zeigt ein spezielles Problem im Zusammenhang mit der Atomaritätsforderung bei einer unvollständig ausgeführten TX. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-35 Dirty Read-Problem Ein Prozess verändert Daten, ein zweiter liest die Änderung, anschließend tritt beim ersten ein Fehler auf: P1 Time P2 read(x) 1 x := x + 100 2 write(x) 3 4 read(x) 5 x := x - 100 failure & rollback 6 7 write(x) Da Prozess 2 einen inkonsistenten Zustand von x gelesen hat (sog. uncommitted data“), muss ” dafür gesorgt werden, dass Prozess 2 nicht daraus falsche Folgeänderungen ableiten kann (z.B. könnte Prozess 2 auch abgebrochen werden). c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-36 Concurrency Control Offenbar gibt es mögliche Konflikte zwischen den Operationen verschiedener, gleichzeitig ablaufender Transaktionen. Es ist Aufgabe der Concurrency Control, die (überlappt) parallelen Abläufe unter Berücksichtigung solche Konflikte zu steuern. Am Beispiel ist ersichtlich, dass die genaue Semantik der TX-Programme (was sie genau mit den Datenelementen tun) weitgehend irrelevant ist. Es genügt, die Lese- und Schreiboperationen auf Seiten zu beachten. (Hierbei ist es wichtig, dass die Operationen auf den Seiten als atomar angenommen werden!) Aus diesem Grund sprechen wir hier vom (Page) Read-/Write-Model der Concurrency Control. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-37 9.3.2 Schedules – Serialisierbarkeit Definition 9-1: Schedule Die Sequenz S der vom Datenbank-Scheduler auf der Datenbank ausgeführten Lese- und Schreiboperationen nennt man Schedule. I Die Lese- und Schreiboperationen eines gegebenen Schedules stammen von mehreren Transaktionen und können verschränkt“ werden (überlappende Ausführung der Transkationen). ” D E i1 i2 Schedule . . . Folge der Aktionen aller Ti ∈ τ . S = A1 , A1 , . . . 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-38 Definition 9-2: Serieller Schedule Ein Schedule Sser heißt seriell, wenn er jeweils alle Aktionen einer einzelnen Transaktion direkt hintereinander ausfü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 I Korrektheit bei paralleler Ausführung? AXIOM: Die serielle Ausführung ist korrekt I Bei paralleler Ausführung: Nachweisen, dass es (mindestens) eine serielle Ausführung gegeben hätte, die äquivalent zur parallelen Ausführung ist. → Was genau heißt Äquivalenz? I Erforderlich: Kriterien, wann eine nicht-serielle (überlappende) Ausführung von Transaktionen zu korrekten (konsistenten) Resultaten führt. I Sei τ := {T1, T2, . . . , Tn } eine Menge in Spar parallel (gleichzeitig) ausgeführter Transaktionen. I Sei Z ein konsistenter Ausgangszustand der Datenbank und Z 0 := Spar(Z) der Zustand der Datenbank nach Ausführung des Schedules Spar ausgehend von Z. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-39 Definition 9-3: Serialisierbarkeit paralleler Transaktions-Ausführungen Gibt es zu Spar mindestens eine serielle Ausführungsreihenfolge Sser, so dass für jeden gültigen Zustand Z gilt Sser(Z) = Spar(Z), dann nennt man Spar serialisierbar. Definition 9-4: Konsistenz von Datenbank-Zuständen Ein Datenbankzustand Z 0 := Spar(Z) ist konsistent, wenn der Ausgangszustand Z konsistent ist und Spar serialisierbar ist. I 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 Be- trieb möglich wäre (=⇒ logischer Einbenutzer-Betrieb). I Die Sicherstellung dieser Forderung wird durch geeignete Verfahren zur Synchronisation (concurrency control) paralleler Transaktionen erreicht. I Fragen: Wann ist eine gegebene Schedule serialisierbar? Wie gewährleistet man, dass ein Scheduler nur serialisierbare Schedules erzeugt? c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-40 Definition 9-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 9-6: Abhängigkeits-Graph G(τ, E) Zu einem Schedule Spar für τ erzeuge einen Graphen G = (V, E) mit: Knotenmenge V = τ = {T1, T2, . . . Tn } (wobei gilt: T ∈ τ ⇐⇒ T ∈ Spar) E Menge der gerichteten Kanten, wobei gilt: eij ∈ E ⇐⇒ ∃a ∈ Ai , ∃b ∈ Aj : a konflikt b ∧ a < b in Spar.8 Lemma: Ein Schedule Spar für eine Menge von Transaktionen τ und deren Aktionen ist serialisierbar, wenn der zugehörige Abhängigkeitsgraph von Spar zyklenfrei ist. 8 a < b in S“ steht für a tritt vor b im Schedule S auf“ ” ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-41 Beispiel 9-7: Gegeben sei folgender Schedule der Transaktionen T1, T2 und T3: Spar := hr1[v ] r2[v ] w1[v ] r3[v ] w2[u] w3[v ]i Konflikt-Analyse: r1[v ] < w3[v ] r2[v ] < w1[v ] r2[v ] < w3[v ] w1[v ] < r3[v ] w1[v ] < w3[v ] =⇒ 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: Sseq := hr2[v ]w2[u]r1[v ]w1[v ]r3[v ]w3[v ]i c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-42 Beispiel 9-8: Gegeben sei der folgende Schedule der Transaktionen T1, T2, T3 : Spar := hr1[v ]r2[v ]w2[v ]r3[v ]w1[v ]w3[v ]i 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 ] =⇒ =⇒ =⇒ =⇒ =⇒ 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: I Die Aussage in Beisp. 9-8: (Resultat) Abhängigkeits-Graph nicht zyklenfrei ⇒ Schedule nicht ” serialisierbar“ ist streng genommen nicht korrekt. I Es gibt Schedules mit zyklischem Abhängigkeits-Graphen, die dennoch serialisierbar sind.9 I Solche Schedules sind im Rahmen des normalen Scheduling allerdings nicht erzeugbar und daher praktisch nicht relevant.10 I Konstruktion des Abhängigkeits-Graphen i.w. nur für den Korrektheitsnachweis von Synchronisationsverfahren interessant, weniger zur Realisierung von Scheduling-Algorithmen. 9 Die Zyklen werden von Aktionen verursacht, deren Ergebnisse von später folgenden Aktionen blind“ überschrieben werden. ” 10 Vgl. etwa (Weikum und Vossen 2001) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-43 Definition 9-7: (Konflikt-Serialisierbarkeit) Ein Schedule S heißt konflikt-serialisierbar, wenn es einen seriellen Schedule mit gleicher Abhängigkeitsrelation gibt. Abhängigkeitsrelation: 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 9-1: Ein Schedule ist genau dann CP-serialisierbar, wenn sein Abhängigkeitsgraph zyklenfrei ist. Beweisskizze: I Kein Zyklus =⇒ topologische Sortierung ↓ äquivalenter serieller Schedule S 0 I CP-Serialisierbar =⇒ ∃ äquivalenten seriellen Schedule ↓ kein Zyklus, sonst Widerspruch! c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-44 Vorberechnung serialisierbarer Schedules nicht möglich, weil I die Aktionsfolgen einer Transaktion in der Regel nicht im voraus bekannt sind I die Berechnungskomplexität zu hoch wäre: Bei n Transaktionen T1, T2, . . . Tn , mit jeweils mi Aktionen (1 ≤ i ≤ n) sind insgesamt « „ n P mi ! i=1 Schedules möglich.11 #sched = n Q mi ! i=1 Zahlenbeispiel: 3 Transaktionen mit je 5 Aktionen: #sched = 11 15! (5!)3 = 756.756 Das Problem der Bestimmung aller möglichen Schedules lässt 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-45 9.3.3 Sperrverfahren I Gängiges Synchronisationsverfahren im Betriebssystembereich für Zugriffssynchronisation auf zentrale Betriebsmittel. I Dort im allgemeinen nur max. eine Sperre pro Betriebsmittel (z.B. Datei) und Anwendung (Prozess/Task). I Transaktionen greifen in der Regel auf mehrere Datensätze einer Relation oder eines Table Space“ ” (=⇒ BS-Datei) zu. I Folge: Funktionalität der BS-Synchronisation für DB-Synchronisation nicht ausreichend. DBMS führen Synchronisation für Zugriffe auf die Datenbank selbst durch.12 Definition 9-8: Zwei-Phasen-Sperrprotokoll (2PL) (two phase locking) Ein DBMS beachtet genau dann das Zwei-Phasen-Sperrprotokoll, wenn folgendes gilt: 1. Bevor eine Transaktion (lesend oder schreibend) auf ein Objekt zugreift, muss sie für dieses eine entsprechende Sperre anfordern. 2. Hat eine Transaktion einmal eine Sperre wieder freigegeben, so darf sie keine Sperren mehr anfordern. 12 Das DBMS greift hierbei z.T. auf vom Betriebssystem zur Verfügung gestellte Hilfsmittel wie Interprozess-Kommunikation, Task-Aktivierung und -Deaktivierung, Nicht-Unterbrechbarkeit und Ähnliches zurück. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-46 # S p e rre n T r a n s a k tio n T S p e rr-P h a s e ( lo c k p h a s e ) F r e ig a b e - P h a s e ( u n lo c k p h a s e ) t la ( T ) Abbildung 9-3: Die zwei Phasen des Zwei-Phasen-Sperrprotokolls I Behauptung: Unter Einhaltung des Zwei-Phasen-Sperrprotokolls erzeugte Schedules sind stets serialisierbar. I Beweisskizze: Sei T S ein gegebener Schedule. Für jede Transaktion T ∈ T S existiert ein Zeitpunkt la(T ) (siehe Abb. 9-3), an dem sie alle ihre Objekte aktuell gesperrt hat. Für jedes Paar (T1 , T2 ) von Transaktionen, T1 , T2 ∈ TS, für die T1 konflikt T2 gilt, gilt auch, la(T1) 6= la(T2). (D.h. entweder gilt la(T1) < la(T2) oder umgekehrt.) Die Transaktionen T1 , T2 , . . . des Schedule T S können daher stets in der durch la(T1, ), la(T2), . . . definierten Reihenfolge serialisiert werden. Gilt la(Ti ) = la(Tj ) für irgendein Paar von Transaktionen (Ti , Tj ) aus T S, so ist die Serialisierungs-Reihenfolge dieser Transaktionen untereinander beliebig. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-47 Sperr- und Freigabe-Strategien I Sperr-Strategien: a. Eine Transaktion sperrt alle (evtl.) benötigten Objekte gleich am Anfang (preclaiming). b. Eine Transaktion sperrt ein Objekt erst, wenn sie es aktuell benötigt (sukzessives Sperren). I Freigabe-Strategien: c. Eine Transaktion gibt alle gesperrten Objekte erst am Ende frei ( Striktes 2PL“). ” d. Eine Transaktion gibt (nach Erreichen von la(T ); siehe Abb. 9-3) ein Objekt frei, sobald es für die weitere Verarbeitung nicht mehr benötigt wird. Abbildung 9-4: Mögl. Ausprägungen des Zwei-Phasen-Sperrprotokolls c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-48 Sperr- & FreigabeStrategie a) b) c) d) Vorteile - optimales“ Scheduling möglich, da alle benötigten Betriebsmittel bereits von ” Anfang an bekannt - keine Verklemmungsgefahr (keine entspr. Vermeidungs-, Entdeckungs-, Auflösungs-Strategien/-Verfahren notwendig; insb. kein Zurücksetzen wegen Verklemmung) - es werden nicht mehr Objekte gesperrt als notwendig - es können dadurch evtl. mehr Transaktionen parallel ausgeführt werden - isoliertes Zurücksetzen einer Transaktion möglich (d.h. kein fortgepflanztes“ ” Zurücksetzen) - es können evtl. mehr Transaktionen parallel ausgeführt werden, da die Objekte für andere Transaktionen früher wieder zur Verfügung stehen. Abbildung 9-5: Sperr- und Freigabe-Strategien I Anmerkungen: Sperr-Strategie a) nur dann sinnvoll anwendbar, wenn entweder Objekte vorher bekannt oder hinreichend genau abschätzbar. Freigabe-Strategie d) aus Konsistenzgründen eigentlich nur auf Lese-Sperren anwendbar. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-49 9.3.4 Verklemmungen (Deadlocks) I Treten bei sukzessivem Sperren (Sperr-Strategie a) in Abb. 9-5) auf. I Beteiligte Transaktionen verklemmen“ sich ( beissen“ sich gegenseitig fest). ” ” 9-7: Korrespondierender Abb. 9-6: Beispiel für Auftreten einer Verklem- Abb. tet-auf-Graph“ (wait-for graph) mung c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz War” 9-50 I Maßnahmen: Zeitschrankenüberwachung (time out): Falls Transaktion zu lange benötigt, wird eine Ver- klemmung angenommen und die Transaktion abgebrochen und zurückgesetzt (Rollback). Problem: Wahl der Zeitschranke . zu klein: Gefahr von unnötigen Transaktionsabbrüchen (besonders kritisch: bei Überbelastung des Rechners kann Zeitüberschreitung wegen Überlast auftreten). . zu groß: Verklemmungen bleiben lange bestehen, Resourcen werden blockiert, Durchsatz des Systems nimmt ab). Deadlock-Erkennung (deadlock detection): Suche nach Zyklen im Wait-for-Graph, peri- odisch oder bei Nicht-Gewährung von Sperren: . Ermittlung der Transaktionen, die in eine Verklemmung involviert sind. . Auswahl eines oder mehrerer Opfer“ (in der Regel werden die Transaktionen, die noch am ” wenigsten Ressourcen verbraucht haben, ausgewählt). . Abbruch und Zurücksetzen dieser Transaktionen (oft verbunden mit spezieller Markierung“, ” um wiederholtes Zurücksetzen derselben Transaktion(en) zu vermeiden). Deadlock-Vermeidung (deadlock prevention): Einführung von Beschränkungen hinsicht- lich Wartet-auf-Beziehungen“, etwa: Eine ‘ältere’ Transaktion wartet nie auf Freigabe einer ” ” Sperre durch eine ‘jüngere’ Transaktion, die jüngere Transaktion wird im Konfliktfall abgebrochen.“ Anmerkung: Time out“ und Deadlock Detection“ am weitesten verbreitet. ” ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-51 9.3.5 Fortgepflanztes Zurücksetzen (Cascading Rollback) I Kann bei vorzeitiger Freigabe von Schreibsperren auftreten (Freigabe-Strategie d) in Abb. 9-5) " A b s tu rz " v o n T 1 S p e rr-P h a s e F r e ig a b e - P h a s e T r a n s a k tio n T 1 T r a n s a k tio n T 2 T r a n s a k tio n T L e g e n d e : T i T j : T j h a t D a te n v o n T i g e le s e n 3 T r a n s a k tio n T 4 t Abbildung 9-8: Ausgangssituation für fortgepflanztes Zurücksetzen I Annahme: Durch vorzeitiges Freigeben von Schreib-Sperren durch Transaktion T1 können andere Transaktionen bereits Daten von T1 vor dem COMMIT von T1 lesen ( dirty read“) ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-52 I Wird T1 zurückgesetzt, basiert die Ausgabe von T2 (und davon abhängiger“ Transaktionen) auf ” ungültigen Eingabewerten. I Fortgepflanztes Zurücksetzen ist im allgemeinen nicht tolerabel. 9.3.6 Implementierungsaspekte und Sperrgranulate I Implementierung von Sperrverfahren mittels gemeinsamer ( zentraler“) Sperrtabelle (lock table) ” oder Sperrgraph, in der (dem) alle Sperren zusammen mit dem Sperrmodus eingetragen werden. I Meist wird zwischen Lesesperren (read locks, shared locks) und Schreibsperren (write locks, exclusive locks) unterschieden. Lesesperren sind untereinander verträglich, Schreibsperren sind mit keiner anderen Sperre verträglich. I Der Zugriff auf die Sperrtabelle muss mit Betriebssystem-Mitteln synchronisiert werden (=⇒ kritischer Abschnitt, wechselseitiger Ausschluss). I Übliche Sperr-Granulate“ sind ” Tupel (tuple level locking, row“ level locking) oder ” 13 Seiten (page level locking) I Gesperrt werden typischerweise Tupel-Identifier (TID) bzw. Seitenadressen (also keine Prädikate, sondern Adressen!).14 13 Seitensperren sind einfacher zu implementieren, verursachen jedoch potentiell mehr Zugriffskonflikte, da unschärfer“. ” Tupelsperren bedingen zusätzlich temporäre Seitensperren (nur für die Dauer einzelner Lese- /Schreiboperationen). 14 Für Indexe werden gelegentlich verfeinerte“ Sperrverfahren eingesetzt und z.B. Schlüsselwert-Intervalle gesperrt. ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-53 I Vielfach werden hierarchische Sperrkonzepte (Mehrebenen-Sperrkonzepte) unterstützt: Tupel −→ Relation −→ Table Space −→ Datenbank I Zum Teil in Verbindung mit automatischer Sperr-Eskalation (lock escalation), z.B. TupelLevel-Lock −→ Relation-Level-Lock, um die Anzahl von Einzelsperren zu reduzieren. Umschalten“ ” bzw. Umwandlung bei Überschreiten eines vorgegebenen Schwellwertes. I Für Gewährleistung von repeatable read“ in Verbindung mit Tupel-Einfügungen (und manchen ” Änderungen), ist Sperren auf Tupel-Ebene nicht ausreichend (=⇒ Phantom-Problem). c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-54 I Beispiel 9-9: Ausgangsbasis: TEILNEHMER-Relation. Die Teilnehmer mit TnNr 171 und 194 sind aus Ulm, der Teilnehmer mit TnNr 173 ist aus Stuttgart. {BOT T1} TnNr {Read-1} SELECT FROM Teilnehmer {BOT T2} WHERE Ort = ‘Ulm’ ... UPDATE Teilnehmer <andere Verarbeitung> SET Ort = ‘Ulm’ ... WHERE TnNr = 173 ... COMMIT WORK {EOT T2} SELECT TnNr {Read-2} FROM Teilnehmer WHERE Ort = ‘Ulm’ COMMIT WORK {EOT T1} Resultat: Read-1 und Read-2 führen zu unterschiedlichen Ergebnissen, obwohl innerhalb der- selben Transaktion ausgeführt. Ähnliche Effekte würden sich auch bei Einfügungen von Tupeln mit Ort = ‘Ulm’ ergeben. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-55 I Konsequenz: Für Einfügungen (und manche Änderungen) ist für repeatable read“ jeweils ein ” Sperren auf (mindestens) der nächsthöheren Ebene erforderlich (hierarchische, DAG-Sperren): Einfügen Tupel =⇒ Relation-Lock. Einfügen Relation =⇒ Table Space-Lock (incl. Katalog). Einfügen Table Space =⇒ Database-Lock I Wird in der Praxis jedoch aus Performance-Gründen oft unterlassen (oder nur auf explizite Anforderung hin durchgeführt). c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-56 9.3.7 Optimistische Synchronisationsverfahren15 I Beobachtung 1: Sperr-Aufwand relativ hoch. Sperr-Anforderung =⇒ Einreihung in Warteschlange (lock request queue) Suspendierung der Task (Task-Wechsel, task switch) pro Objekt-Zugriff mindestens ein Lock-Request Ein- und Austräge aus der Sperrtabelle aufwendig (mehrfach verzeigerte Ketten: Objektbezo- gen, Transaktion, . . .) im Verklemmungsfall bleiben Objekte oft relativ lange gesperrt I Beobachtung 2: In manchen Anwendungen überwiegend kurze Transaktionen Lesezugriff wenig Updates =⇒ wenig Zugriffskonflikte Aufwand für Sperren im Vergleich zum Gesamtaufwand relativ hoch 15 Vertiefungsliteratur: (Kung und Robinson 1981) – Hat viele Nachfolgearbeiten zum selben Thema inspiriert! c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-57 I Überlegung/Idee: Lieber gelegentlich16 eine Transaktionen umsonst ausgeführt (wegen Konflikt), als ständig einen hohen Aufwand für Sperr-Synchronisation zu treiben. I Lösungs-Ansatz: Jede Transaktion wird in drei Phasen eingeteilt: 1) Lesephase 2) Validationsphase 3) Schreibphase 1. Lesephase (read phase): Jede Transaktion protokolliert lokal17 alle Lesezugriffe (=⇒ read set) sowie alle Schreibzugriffe (=⇒ write set) Alle Schreiboperationen werden zunächst nur auf lokalen Kopien durchgeführt. Jede Transaktion Ti hält ihren BOT-Zeitpunkt TBOT (Ti ) fest. Bei Erreichen des (gewünschten) COMMIT-Zeitpunkts tritt Transaktion Ti in die Validationsphase Tval(Ti ) ein. 16 Optimistische“ Annahme: Zugriffskonflikte sind selten. 17 ”Lokal“ bezieht sich hier auf den lokalen Adressraum“ der Task, etwa im Gegensatz zur Sperrtabelle, die (zumindest logisch) in ” ” einem globalen Adressraum“ realisiert wird. ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-58 2. Validationsphase (validation phase) Bezeichne TEOT (Tj ) den Zeitpunkt, an dem eine erfolgreich abgeschlossene Transaktion Tj ihre Änderungen in die Datenbank eingebracht hat. Validation von Ti : . Eintritt in den kritischen Abschitt“ 18 zum Zeitpunkt tval(Ti ). ” . Für alle Transaktionen Tk für die gilt: TEOT(Tk ) ∈ [TBOT(Ti ), tval(Ti )] überprüfe, ob gilt: write set(Tk) ∩ read set(Ti) = ∅ . Falls Durchschnitt (für alle Tk ) leer, dann führe Änderungsoperationen in der Datenbank aus (Schreibphase, write phase), sonst Abort/Restart . Freigeben des kritischen Abschnitts Anmerkungen: . Bei dieser einfachen Variante des Verfahrens tritt die Transaktion bereits sehr früh in den kritischen Abschnitt ein und verbleibt auch bis zum Abschluss der Schreibphase darin. . Man kann das Verfahren durch einen späteren Eintritt in den kritischen Abschnitt sowie die Durchführung der Schreibphase außerhalb des kritischen Abschnitts verbessern. (=⇒ Spezialvorlesung: Transaktionssysteme) 18 Es kann sich jeweils nur eine Transaktion im kritischen Abschnitt befinden. Während sich eine Transaktion (bei diesem Validationsverfahren) im kritischen Abschnitt befindet, kann somit keine andere Transaktion ihr EOT durchführen (außer bei ABORT). c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-59 9.3.8 Abschließende Bemerkungen I Wahl des geeigneten Synchronisationsverfahren kritisch für Performance von Hochleistungs-DBMS (> 300 TX/s). I Untersuchungen sprechen dafür, dass für solche Umgebungen optimistische“ Verfahren vorteilhaft ” sind (keine Blockierungen). I Synchronisationsverfahren immer noch sehr aktuelles Forschungs- und Entwicklungsgebiet in der Informatik: Kombination von optimistischen mit Sperr-Verfahren Mehr Semantik“ (Prädikatsperren, kommutative Operationen) ” Spezielle Verfahren für interne“ Datenstrukturen: . Indices . Katalog . ... ” Verteilte Datenbanken lange“ Transaktionen ( CAD-Datenbanken“) ” ” geschachtelte“ Transaktion ” ... I Korrektheit von Synchronisationsverfahren essentiell für Konsistenz I Korrektheit kaum zu testen. ⇓ Formaler Korrektheitsnachweis erforderlich ! c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-60 9.4 Recovery I Wiederherstellung eines konsistenten DB-Zustandes nach =⇒ Transaktions-Recovery Transaktionsabbruch =⇒ Crash-Recovery System-Zusammenbruch Stromausfall ... 9 permanenten Block-Lesefehlern = =⇒ Media-Recovery ; physischer Zerstörung ... I Recovery-Fähigkeit ist essentiell für Sicherheit und Konsistenz der Daten. I Verursacht zusätzlichen Aufwand (Speicherplatz), z.B. Protokolldatei ( Log-File“, DBLOG“); ” ” Archivkopien I Kann sich negativ auf Performance auswirken (erzwungenes Warten auf Abschluss der LogfileSchreiboperation). I Versuchung ist groß, am Aufwand für Recovery zu sparen“. ” I Systeme mit hohen Sicherheitsanforderungen treiben hohen Recovery-Aufwand (Spiegelplatten, dual logging, . . .) I Einheit der Recovery ist die Transaktion: Garantie für9 = Erhaltung der Änderungen abgeschlossener TX in der DB ; keine Spuren nicht beendeter TX (!) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-61 9.4.1 Transaktions-Recovery / Crash Recovery I Wiederherstellung eines konsistenten Datenbankzustandes, so dass die Datenbank enthält: keine Änderungen nicht abgeschlossener Transaktionen (ABORT, Abbruch) alle Änderungen abgeschlossener Transaktionen (COMMIT erreicht) 9.4.1.1 Gewährleistung der Zurücksetzbarkeit unvollständiger Transaktionen Fall 1: update-in-place“, ” I DBMS führt Änderungen I Geänderte Seiten können I Folge: dirty writes“ ” unmittelbar auf den Original-Seiten/-Tupeln im Systempuffer durch. vor COMMIT in die gespeicherte Datenbank verdrängt“ werden: ” DBMS muss ein Undo-Logfile für den Rollback-Fall führen. Undo-Log-Seiten müssen stets vor den korrespondierenden Daten-Pages auf Platte geschrieben werden. Fall 2: workspace copy“, shadow copy“ ” ” I DBMS führt Änderungen nur auf Kopien durch I Es gelangen keine dirty updates“ vor dem COMMIT einer Transaktion in die physische Daten” bank.19 I Folge: DBMS kann auf Undo-Logfile verzichten. 19 Arbeiten auf Kopien oder sicherstellen, dass keine geänderten Seiten vor COMMIT aus dem Puffer verdrängt werden. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-62 9.4.1.2 Sicherung der Änderungen abgeschlossener Transaktionen I Fall 1: forced write“ ” Schreiben der geänderten Seiten aus dem Systempuffer in die Datenbank als Teil der CommitBearbeitung. Kann Schreibphase nicht beendet werden, gilt Transaktion als nicht abgeschlossen (=⇒ Roll- back). Folge . DBMS muss kein zusätzliches Redo-Logfile“ (s.u.) führen. ” . Aber: Erzwungenes Schreiben nicht performance-optimal ( write peek“). ” I Fall 2: deferred write“, write as necessary“ ” ” DBMS erzwingt bei COMMIT nicht das Durchschreiben der geänderten Seiten in die Datenbank. Änderungen können bei Systemausfall verloren gehen. Folge: . DBMS muss zusätzliche Vorkehrungen treffen: =⇒ Redo-Logfile. . Redo-Logfile erlaubt, die gemachten Änderungen nochmals in die Datenbank einzubringen. . Redo-Logfile muss als Teil der COMMIT-Bearbeitung geschrieben werden. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-63 9.4.2 Logfile-Implementierung, Protokollierung D B M S D B P u ffe r ... A r c h iv K o p ie L o g P u ffe r D B D B L o g D B ' D B L o g ' T e m L o g E n th fü r T A B O U N D C ra s p o rä re D a te i. ä lt U N D O r a n s a k tio n R T s o w ie O / R E D O fü r h R e c o rv e ry A r c h iv - L o g e n th ä lt R E D O In fo rm . fü r M e d ia R e c o r v e r y Abbildung 9-9: DBMS – DB-Log – Übersicht c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-64 9.4.2.1 Vorgehensweise, Logpuffer-Verwaltung I UNDO-LOG vor DO“ Für das (jederzeit mögliche) Rücksetzen einer unvollendeten Transakti” on muss gelten: Bevor eine Änderung in die DB eingebracht wird, muss die zugehörige UNDO Info auf die (temporäre) LOG-Datei gezwungen werden. =⇒ WAL Prinzip – Write-Ahead-Log“ ” I REDO-LOG vor EOT“ Für die Wiederholbarkeit einer abgeschlossenen Transaktion muss gel” ten: Vor dem Commit einer Transaktion (also vor Schreiben des EOT Logsatzes) müssen alle REDOLogsätze auf die (temporäre u. Archiv-) LOG-Datei gezwungen werden. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-65 Abbildung 9-10: Zusammenhang: DO – UNDO – REDO c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-66 9.4.2.2 Art der Protokollierung I Im allgemeinen physische Protokollierung (Bitmuster) von Wert-Änderungen Wert vor der Änderung (before image – BFIM) Wert nach der Änderung (after image – AFIM) I Kompaktifizierungs-Möglichkeiten: Log-Granulat = Seite: XOR-Bitvektor, komprimiert gespeichert Log-Granulat = Tupel: attributbezogene Aufzeichnung. I Anmerkungen: Implementierung Redo-Logfile wie Undo-Logfile. Oft gibt es nur ein gemeinsames Log (Logeintrag = (alter Wert, neuer Wert)). Zur Verkürzung von Wiederanlaufzeiten / Begrenzung des Redo-Logfiles wird i.a. ein periodi- sches Ausschreiben des Systempuffers erzwungen =⇒ Sicherungspunkt, Checkpoint (siehe später) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-67 9.4.2.3 Zusammenhang Sperr- und Log-Granulat I Es muss stets gelten: Log-Granulat ≤ Sperr-Granulat!“ ” I Beispiel: Sperr-Einheit Seite Tupel mögliche Log-(Eintrags-)Einheit Attribut Tupel Seite Tupel Attribut c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-68 9.4.3 Durchführung von Crash-Recovery Bestimme den letzten geschriebenen Log-Datensatz20 Bestimme unvollendete Transaktionen ( Verlierer“: BOT auf LOG, kein EOT) ” Bestimme vollendete Transaktionen ( Gewinner“: EOT auf LOG) ” Lese Logdatei rückwärts, ermittle alle UNDO-Logeinträge der Verlierer bis zum Anfang der Logdatei und führe jeweils UNDO durch. 5. Lese vom Anfang der Logdatei her vorwärts alle REDO Logeinträge der Gewinner und führe jeweils REDO durch. 1. 2. 3. 4. I Bemerkungen: Schritte 2, 3 und 4 können beim Rückwärtslesen“ auf einmal erledigt werden (Erläuterung: siehe Vorlesung) ” Das Zurückgehen ganz bis zum Anfang der Logdatei verursacht natürlich u.U. einen enormen Aufwand im Recoveryfall, da dann für sehr viele Transaktionen UNDO bzw. REDO durchgeführt werden muss. Abhilfe: Erzeugung von Sicherungspunkten/Checkpoints (siehe später) 20 D.h. bestimme letzten Log-Record, der noch vor dem Crash geschrieben wurde c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-69 I Beispiel für Crash Recovery T S y s te m A b s tu rz 1 T 2 T 3 T T 4 5 t Erforderliche Recovery-Maßnahmen nach dem Systemabsturz: UNDO für die Verlierer: T4, T5 REDO für Gewinner: T1, T2, T3 Ob REDO oder UNDO wirklich notwendig ist, hängt davon ab, ob Änderungen in DB eingebracht sind oder nicht. (siehe Abschnitte 9.4.1.1 und 9.4.1.2) c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-70 9.4.4 Sicherungspunkte (Check Points) I Sicherungspunkt (SP): Zeitpunkt, zu dem bestimmte Annahmen über den Zustand der DB gemacht werden können. Zweck: REDO-Aufwand im Recoveryfall begrenzen. I Sicherungspunkterzeugung: Herauszwingen von geänderten Seiten aus dem DB-Puffer Unterschiedliche Arten von Sicherungspunkten: 1. Wenn keine Transaktion aktiv ist =⇒ transaktionskonsistenter Sicherungspunkt 2. Wenn keine Aktion aktiv ist =⇒ aktionskonsistenter SP 3. Jede Transaktion zwingt bei EOT ihre geänderten Seiten heraus =⇒ transaktionsorientierter SP SP-Eintrag in die Logdatei Evtl. zusätzlich: ID’s der nicht abgeschlossenen Transaktionen zum SP-Zeitpunkt c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-71 9.4.5 Media-Recovery I Dient (zunächst einmal) zur physischen Wiederherstellung der Datenbank-Dateien −→ Sicherungskopien von Dateien −→ seitenbezogene Recovery I Wiederherstellung der logischen Konsistenz (DB-Sicht): Wiederherstellung der physischen Konsistenz der DB-Dateien −→ Zurücksetzen auf letzte Sicherungskopie Wiederherstellung der logischen Konsistenz der Datenbank −→ Einspielen der Änderungen vom Redo-Logfile21 22 I Komplette Sicherungskopie (disk dump): Komplette Sicherungskopie aller Datenbank-Dateien Voraussetzung: kein Transaktions-Betrieb I Sicherung nur der Änderungen (incremental dumping): Nur die seit dem letzten Dump geänderten Seiten werden kopiert. Bitvektor hilft geänderte Seiten schnell zu lokalisieren. Bis zum nächsten kompletten Dump müssen alle Incremental Dumps aufbewahrt werden. Durchführung ggf. auch im laufenden Betrieb (z.B. als konkurrierende Transaktion) möglich. 21 Dies ist ein weiterer Grund, warum man stets ein Redo-Log haben sollte. 22 Man sagt in diesem Zusammenhang auch, dass die Transaktionen wiederholt“ werden. ” c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-72 9.4.6 Abschließende Bemerkungen I Synchronisations- und Logkomponente sehr performance-kritische DBMS-Teile I Bei Höchstleistungs-DBMSen u.U. mehrere tausend Synchronsiations- und Logaufrufe pro Sekunde! I Wahl des richtigen Synchronisations- und Recovery-Verfahrens daher sehr wichtig für Verlässlichkeit des DB-Systems Anwortzeitverhalten I Eignung der Verfahren nicht ganz unabhängig vom Anforderungsprofil der (typischen) Anwendungen I Neue DB-Anwendungsklassen/neue DB-Systemtechnologien stellen neue Herausforderungen c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-73 9.5 9.5.1 Verteilte Informationssysteme Grundlegende Konzepte Verteiltes Informationssystem besteht aus einer Menge von Informationseinheiten, die auf mehreren über ein Kommunikationsnetzwerk (LAN, WAN, Internet) verbundenen Rechnern verteilt sind: I Autonomie: Auf jedem Server können lokale Anwendungen ohne die Daten der anderen Server arbeiten. I 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-74 9.5.1.1 Mögliche Architekturen I 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-75 I Ö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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-76 I Client-/Server- oder Server-Workstation-Kopplung WS WS S 1 WS 2 k Workstations für spezielle Aufgaben ausgestattet Anwendung: Reisebüros, Versicherungen,. . . c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-77 9.5.1.2 Grundlegender Aufbau eines VDBMS globales Schema Fragmentierungsschema Zuordnungsschema lokales Schema ... lokales Schema lokales DBMS ... lokales DBMS ... Station S1 Station Sn Abbildung 9-11: Aufbau eines verteilten DBMS c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-78 Ein wesentlicher Entwurfsaspekt besteht in der Entscheidung, wie die Daten auf den verschiedenen Rechnern fragmentiert und ggf. repliziert werden: I redunzfreie Allokation I Allokation mit Replikation Fragmentierung R Allokation R11 R1 Station S1 R12 R2 R21 R3 Station S2 R23 R33 Station S3 Abbildung 9-12: Fragmentierung und Allokation c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-79 I Fragmentierung kann auf verschiedene Weise geschehen: horizontal: Selektionen vertikal: Projektionen kombiniert I Transparenz: Verteilung nicht sichtbar. Dadurch können Benutzer/Anwendungsprogramme flexibler arbeiten. Transparenz ist auf verschiedenen Stufen möglich: Fragmentierungstransparenz Allokationstransparenz Lokale Schematransparenz I 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-80 9.5.2 Das Zwei-Phasen-Commit-Protokoll ( Two-Phase-Commit, 2PC“) ” I 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 LDBMS3 Notation: GSTi ist eine globale Subtransaktion, d.h. eine lokale Transaktion, die einen Teil einer globalen TX auf jeweils einem lokalen System realisiert. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-81 I 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-82 I Ü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 K CO Sende "COMMIT T" an alle Agenten c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-83 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-84 9.5.3 Synchronisation replizierter Daten I Einfache Möglichkeit: Wenn ein Datum geändert wird, so muss 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. I Alternative: Quorum-Consensus: Schreibtransaktionen verändern nur einen bestimmten Anteil Qw der beteiligten Fragmente. Lesetransaktionen lesen mindestens Qr Fragmente, um sicher zu sein, dass das gelesene Datum korrekt ist. Dabei können die Quoren flexibel gesetzt werden, damit sichere“ von unsicheren“ Servern ” ” unterschieden werden können. Dafür muss gelten: 1. Qw (A) + Qw (A) > W (A) und 2. Qr (A) + Qw (A) > W (A). I Beispiel 9-10: Station (Si ) S1 S2 S3 S4 Kopie (Ai ) A1 A2 A3 A4 Gewicht (wi ) 3 1 2 2 Mögliche Quoren: Qr (A) = 4 Qw (A) = 5 c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-85 9.6 Zusätzliche Literaturhinweise (Auswahl) I zu Architektur und Realisierung von DBSen: (Härder 1999; Heuer und Saake 1999; Ramakrishnan und Gehrke 2003; Mitschang 1995; Elmasri und Navathe 2000) I 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) I 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 (2000). Fundamentals of Database Systems. Addison-Wesley, Reading, MA., 3 Aufl. Titel der deutschen Ausgabe von 2002: Grundlagen von Datenbanken. 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. Kudlich, H. (1992). Verteilte Datenbanken, Systemkonzepte und Produkte. Siemens Nixdorf Informationssysteme AG. Kung, H.T. und J. Robinson (1981). On Optimistic Methods for Concurrency Control. ACM Transactions on Database Systems, 6(2):213–226. c M. Scholl, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-86 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. und J. Gehrke (2003). Database Management Systems. McGraw-Hill, New York, 3 Aufl. 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, 2003/04 – Informationssysteme: 9. Mehrbenutzeraspekte, Transaktionen, Parallelität und Fehlertoleranz 9-87