Integritätsüberwachung des DBVS TA-orientierte Verarbeitung undefinierter DB-Zustand nach einem Systemausfall Transaktionsorientierte Fehlerbe- handlung (Recovery) Synchronisation Fehler auf den Externspeichern, Inkonsistenzen in den Zugriffspfaden Fehlertolerante Implementierung, Archivkopien (Backup) - erlaubt „Vertragsrecht“ in rechnergestützten IS zu implementieren • Gefährdung der DB-Konsistenz - ACID-Eigenschaften - Architektur - Integration heterogener Komponenten • Transaktionsablauf - SQL-Operationen: COMMIT WORK, ROLLBACK WORK (Beginn einer Transaktion implizit) - Zustände und Zustandsübergänge • Wie erreicht man Atomarität? - Einsatz von Commit-Protokollen (zentralisierter TA-Ablauf) - 2PC (Zweiphasen-Commit-Protokoll) • verteilter TA-Ablauf durch das Anwendungspro- • Fehleraspekte Gefährdung der DB-Konsistenz • Transaktionsverwaltung • Kostenbetrachtungen - Hierarchisches 2PC 5-1 gramm - ist Voraussetzung für die Abwicklung betrieblicher Anwendungen (mission-critical applications) Korrektheit der Abbildungshierarchie - führt ein neues Verarbeitungsparadigma ein Übereinstimmung zwischen DB und Miniwelt • Transaktionskonzept 5-2 durch das DBVS und die Betriebsumgebung unzulässige Änderungen Mehrbenutzer-Anomalien 5. Transaktionsverwaltung Transaktionsverwaltung Transaktionsverwaltung (2) • Ablaufkontrollstruktur: Transaktion T1 BOT T2 O11 BOT • DB-bezogene Definition der Transaktion: O12 O21 O13 O22 Eine TA ist eine ununterbrechbare Folge von DML-Befehlen, welche die Datenbank von einem logisch konsistenten Zustand in einen neuen logisch konsistenten Zustand überführt. EOT O23 EOT ➥ Diese Definition eignet sich insbesondere für relativ kurze TA, die auch als ACID-Transaktionen bezeichnet werden. • Welche Eigenschaften von Transaktionen sind zu garantieren? (zur Erinnerung) - Atomicity (Atomarität) • TA ist kleinste, nicht mehr weiter zerlegbare Einheit • Entweder werden alle Änderungen der TA festgeschrieben oder gar keine („alles-oder-nichts“-Prinzip) - Consistency • TA hinterläßt einen konsistenten DB-Zustand, sonst wird sie komplett (siehe Atomarität) zurückgesetzt • Wesentliche Abstraktionen aus Sicht der DB-Anwendung - Alle Auswirkungen auftretender Fehler bleiben der Anwendung verborgen (failure transparency) - Es sind keine anwendungsseitigen Vorkehrungen zu treffen, um Effekte der Nebenläufigkeit beim DB-Zugriff auszuschließen (concurrency transparency) ➥ Gewährleistung einer fehlerfreien Sicht auf die Datenbank im logischen Einbenutzerbetrieb • Zwischenzustände während der TA-Bearbeitung dürfen inkonsistent sein • Endzustand muß die Integritätsbedingungen des DB-Schemas erfüllen • Transaktionsverwaltung - Isolation - koordiniert alle DBS-seitigen Maßnahmen, um ACID zu garantieren • Nebenläufig (parallel, gleichzeitig) ausgeführte TA dürfen sich nicht gegenseitig beeinflussen • Parallele TA bzw. deren Effekte sind nicht sichtbar - Durability (Dauerhaftigkeit) - besitzt zwei wesentliche Komponenten • Synchronisation • Logging und Recovery - kann zentralisiert oder verteilt (z.B. bei VDBS) realisiert sein • Wirkung erfolgreich abgeschlossener TA bleibt dauerhaft in der DB - soll Transaktionsschutz für heterogene Komponenten bieten • TA-Verwaltung muß sicherstellen, daß dies auch nach einem Systemfehler (HW- oder System-SW) gewährleistet ist • Wirkung einer erfolgreich abgeschlossenen TA kann nur durch eine sog. kompensierende TA aufgehoben werden 5-3 5-4 Transaktionsverwaltung (3) • Abstraktes Architekturmodell für die Transaktionsverwaltung (für das Read/Write-Modell auf Seitenbasis) T1 T2 ... Tn Transaktionsverwaltung (4) • Einsatz kooperierender Ressourcen-Manager (RM) - RM sind Systemkomponenten, die Transaktionsschutz für ihre gemeinsam nutzbaren Betriebsmittel (BM) bieten - RM gestatten die externe Koordination von BM-Aktualisierungen durch spezielle Commit-Protokolle Transaktionsverwalter ➥ Gewährleistung von ACID für DB-Daten und auch für andere BM Scheduler (persistente Warteschlangen, Nachrichten, Objekte von persistenten Programmiersprachen) Speichersystem • Ziel: TA-orientierte Verarbeitung in heterogenen Systemen RecoveryKomponente DB-Pufferverwalter Server DB • Transaktionsverwalter - Verteilung der DB-Operationen in VDBS und Weiterreichen an den Scheduler - zeitweise Deaktivierung von TA (bei Überlast) - Koordination der Abort- und Commit-Behandlung • Scheduler (Synchronisation) kontrolliert die Abwicklung der um DB-Daten konkurrierenden TA • Recovery-Komponente sorgt für die Rücksetzbarkeit/Wiederholbarkeit der Effekte von TA • DB-Pufferverwalter stellt DB-Seiten bereit und gewährleistet persistente Seitenänderungen 5-5 Kontext TA-Program receive SQL call SQL store send DB X DB Y Sphere of Control (SoC), die z. B. durch einen TP-Monitor etabliert wurde ➥ Die gesamte verteilte Verarbeitung in einer SoC ist eine ACID-TA - alle Komponenten werden durch die TA-Dienste integriert - für die Kooperation ist eine Grundmenge von Protokollen erforderlich 5-6 erzwungenes abnormales Ende erzwungenes ROLLBACK DML3 DML2 DML1 BOT • Transaktionsprogramm – Beispiel: BOT UPDATE Konto ... UPDATE Schalter ... UPDATE Zweigstelle ... INSERT INTO Ablage (...) COMMIT; • Zustandsübergangs-Diagramm verdrängen inkarnieren potentiell aktiv wartend abnormales Ende ROLLBACK DMLn • • • DML3 DML2 DML1 BOT reaktivieren normales Ende COMMIT DMLn • • • DML2 DML1 DML3 5-7 neustarten beenden wiederholbar abgeschlossen BOT Mögliche Ausgänge einer Transaktion Systemausfall, Programm, fehler usw. Zustände einer Transaktion abbrechen rücksetzen gescheitert rücksetzen abbrechen festschreiben aufgegeben persistent 5-8 Zustände einer Transaktion (2) Schnittstelle zwischen AP und DBS transaktionsbezogene Aspekte • Transaktionsverwaltung - muß die möglichen Zustände einer TA kennen und - ihre Zustandsübergänge kontrollieren/auslösen Aktionen auf Seite des AP Aktionen auf Seite des DBS Sicherstellen der Rücksetzbarkeit von Änderungsoperationen BOT • TA-Zustände - potentiell • TAP wartet auf Ausführung • Beim Start werden, falls erforderlich, aktuelle Parameter übergeben - aktiv TA konkurriert um Betriebsmittel und führt Operationen aus - wartend • Deaktivierung bei Überlast • Blockierung z.B. durch Sperren • • • Befehle Op i Ausführen von DML-Befehlen (Überprüfen der unverzögerten Integritätsbedingungen) • • • EOT - abgeschlossen (Überprüfen der verzögerten Integritätsbedingungen) C • TA kann sich (einseitig) nicht mehr zurücksetzen O • TA kann jedoch noch scheitern (z.B. bei Konsistenzverletzung) - persistent (Endzustand) Wirkung aller DB-Änderungen werden dauerhaft garantiert - gescheitert Vielfältige Ereignisse können zum Scheitern ein TA führen (siehe Fehlermodell, Verklemmung usw.) 2PC Phase 1 Sicherstellen der Wiederholbarkeit aller Änderungen M Freigabe der Betriebsmittel M Phase 2 (Sperren) I - wiederholbar Gescheiterte TA kann ggf. (mit demselben Eingabewerten) erneut ausgeführt werden T Bestätigung über erfolgreiches Ende an das AP Weiterarbeit im AP - aufgegeben (Endzustand) 5-9 5 - 10 Verarbeitung in Verteilten Systemen • Ein verteiltes System besteht aus autonomen Subsystemen, die koordiniert zusammenarbeiten, um eine gemeinsame Aufgabe zu erfüllen Verarbeitung in Verteilten Systemen (2) • Erweitertes Transaktionsmodell verteilte Transaktionsbearbeitung (Primär-, Teiltransaktionen) - Client/Server-Systeme - Mehrrechner-DBS, . . . C 1 Koordinator • Beispiel: The „Coordinated Attack“ Problem N Teiltransaktionen (Agenten) A1 A2 . . . AN attack at dawn blue general red general ➥ rechnerübergreifendes Mehrphasen-Commit-Protokoll notwendig, um Atomarität einer globalen Transaktion sicherzustellen • Anforderungen an geeignetes Commit-Protokoll: - Geringer Aufwand (#Nachrichten, #Log-Ausgaben) Generals-Paradoxon - Minimale Antwortzeitverlängerung (Nutzung von Parallelität) - Robustheit gegenüber Rechnerausfällen und Kommunikationsfehlern ➥Zentralisiertes Zweiphasen-Commit-Protokoll stellt geeignete Lösung dar • Grundproblem verteilter Systeme • Erwartete Fehlersituationen Das für verteilte Systeme charakteristische Kernproblem ist der Mangel an globalem (zentralisiertem) Wissen ➥ symmetrische Kontrollalgorithmen sind oft zu teuer oder zu ineffektiv ➥ fallweise Zuordnung der Kontrolle 5 - 11 - Transaktionsfehler - Systemfehler (Crash) ➥ i. allg. partielle Fehler (Rechner, Verbindungen, ...) - Gerätefehler ➥ Fehlererkennung z. B. über Timeout 5 - 12 Zentralisiertes Zweiphasen-Commit Zustandsübergang Nachricht 2PC: Zustandsübergänge Zustandsübergang Koordinator C Ai C INITIAL EOT Log-Write: Begin Sende PREPARE PREPARE Phase 1 READY / FAILED COMMIT / ABORT FAILED empfangen oder TIMEOUT Log-Write: Abort Sende ABORT BEGIN READY von allen empfangen Log-Write: Commit Sende COMMIT COMMITTING ABORTING alle ACK-Nachrichten empfangen alle ACK-Nachrichten empfangen Log-Write: End Phase 2 Log-Write: End TERMINATED ACK • Protokoll erfordert Folge von Zustandsübergängen Agent Ai - für Koordinator - für jeden Agenten ➥ Zustandsübergänge müssen auf „sicherem Platz“ (Log) vermerkt sein! (Übergang nach TERMINATED braucht nicht synchron zu erfolgen) ABORT empfangen oder TIMEOUT Log-Write: Abort ABORTED • Aufwand im Erfolgsfall: WAIT PREPARE empfangen Log-Write: Prepared sende READY PREPARED ABORT empfangen Log-Write: Abort Sende ACK COMMIT empfangen Log-Write: Commit Sende ACK COMMITTED - Nachrichten: PREPARE empfangen sende FAILED - Log-Ausgaben (forced log writes): 5 - 13 5 - 14 2PC: Fehlerbehandlung • Timeout-Bedingungen für Koordinator: - WAIT ➥ setze Transaktion zurück; verschicke ABORT-Nachricht - ABORTING, COMMITTING Commit: Kostenbetrachtungen • vollständiges 2PC-Protokoll (N = #Teil-TA, davon M = #Leser) - Nachrichten: 4 N ➥ vermerke Agenten, für die ACK noch aussteht - Log-Ausgaben: 2 + 2 N - Antwortzeit: • Timeout-Bedingungen für Agenten: längste Runde in Phase 1 (kritisch, weil Betriebsmittel blockiert) + längste Runde in Phase 2 - WAIT ➥ setze Teiltransaktion zurück (unilateral ABORT) - PREPARED ➥ erfrage Transaktionsausgang bei Koordinator (bzw. anderen Rechnern) • Aufwand bei spezieller Optimierung für Leser: • Ausfall des Koordinatorknotens: Vermerkter Zustand auf Log Lesende Teil-TA nehmen nur an Phase 1 teil, dann Freigabe der Sperren - Nachrichten: - TERMINATED: • UNDO bzw. REDO-Recovery, je nach Transaktionsausgang • keine "offene" Teiltransaktionen möglich - Log-Ausgaben: für N > M - ABORTING: • UNDO-Recovery • ABORT-Nachricht an Rechner, von denen ACK noch aussteht - COMMITTING: • REDO-Recovery • COMMIT-Nachricht an Rechner, von denen ACK noch aussteht • Läßt sich das zentralisierte 2PC-Protokoll weiter optimieren?1 - Sonst: UNDO-Recovery • Rechnerausfall für Agenten: Vermerkter Zustand auf Log - COMMITTED: REDO-Recovery - ABORTED bzw. kein 2PC-Log-Satz vorhanden: UNDO-Recovery - PREPARED: Anfrage an Koordinator-Knoten, wie TA beendet wurde (Koordinator hält Information, da noch kein ACK erfolgte) 5 - 15 1. Leseroptimierung läßt sich mit allen nachfolgenden Varianten kombinieren, wird jedoch nachfolgend nicht berücksichtigt 5 - 16 Commit: Kostenbetrachtungen (2) • Weglassen der expliziten Acknowledge-Nachricht Commit: Kostenbetrachtungen (3) • Ai geht beim letzten Auftrag in den PREPARED-Zustand - Ai fragt ggf. nach; "unendlich langes Gedächtnis" von C - Normaler Aufruf von Ai: Work - Letzter Aufruf von Ai: Work&Prepare; Läßt sich diese Art der Optimierung immer erreichen? - Nachrichten: - Nachrichten: - Log-Ausgaben: - Log-Ausgaben: • Ai geht nach jedem Auftrag in den PREPARED-Zustand - Jeder Aufruf von Ai: Work&Prepare Agent Ai • Spartanisches Protokoll PREPARE-Nachr. implizit Log-Write: Prepared vor der COMMIT/ABORT-Nachr. PREPARED ABORTED ABORT empf. Log-Write: Abort Sende ACK - Ai geht nach jedem Auftrag in den PREPARED-Zustand; Weglassen der expliziten Ack-Nachricht - Nachrichten: COMMIT empf. Log-Write: Commit Sende ACK - Log-Ausgaben: COMMITTED - Nachrichten: - Nur letzter Aufruf: Work&Prepare; Log-Ausgaben: - durchschnittlich K Aufträge pro Agent; Log-Ausgaben: ➥ Log-Aufwand bleibt gleich (oder erhöht sich drastisch) ! 5 - 17 5 - 18 Zusammenfassung Hierarchisches 2PC • Allgemeineres Ausführungsmodell • Transaktionsparadigma - beliebige Schachtelungstiefe, angepaßt an Client/Server-Modell - Verarbeitungsklammer für die Einhaltung von semantischen Integritätsbedingungen - Modifikation des Protokolls für “Zwischenknoten” C A1 A2 Initial Wait Wait - Verdeckung der Nebenläufigkeit (concurrency isolation) ➥ Synchronisation PREPARE Wait - Verdeckung von (erwarteten) Fehlerfällen (failure isolation) PREPARE Preparing (Aborting) ➥ Logging und Recovery Prepared/ Aborted - im SQL-Standard: COMMIT WORK, ROLLBACK WORK Phase 1 READY / FAILED ➥ Beginn einer Transaktion implizit Prepared (Aborted) • Zweiphasen-Commit-Protokolle READY / FAILED - Hoher Aufwand an Kommunikation und E/A Committing/ Aborting - Optimierungsmöglichkeiten sind zu nutzen COMMIT / ABORT Committed/ Aborted Phase 2 - Maßnahmen erforderlich, um Blockierungen zu vermeiden! COMMIT / ABORT ➥ Kritische Stelle: Ausfall von C Committed/ Aborted ACK • Einsatz in allen Systemen! ACK Terminated • Varianten des Commit-Protokolls: • Aufwand - Hierarchisches 2PC: - Optimierung für lesende Teil-TA Verallgemeinerung auf beliebige Schachtelungstiefe • kein Logging, Sperrfreigabe in Phase 1 (in ganzen Teilbäumen) • Kommunikation für zweite Phase wird vermieden - 3PC - Antwortzeit steigt mit Schachtelungstiefe • Problem bei 2PC: Koordinatorausfall 5 - 19 ➥ Blockierung möglich! 5 - 20