Vorlesung mit Übung Datenbanksysteme 2 Sommersemester 2015 Institut für Informatik Lehrstuhl für Datenbanken und Informationssysteme http://www.minet.uni-jena.de/dbis/lehre Prof. Dr. Klaus Küspert (Vorlesung) Dipl.-Inf. Bernhard Pietsch (Übung) 21.04.2015 Datenbanksysteme 2 1 Organisatorisches – 1 • Veranstaltung V3+Ü1 im aktuellen Sommersemester • Termine/Räume: - Vorlesung Di 08.15 - 09.45 - Vorlesung/Übung Do 08.15 - 09.45 SR 130 CZ3 Küspert SR 130 CZ3 Küspert / Pietsch Klarer ausgedrückt: 19 Vorlesungstermine geplant: 21.4., 23.4., 28.4., 30.4., 5.5., 12.5., 26.5., 28.5., 2.6., 9.6., 11.6., 16.6., 23.6., 25.6., 30.6., 7.7., 9.7., 14.7. 6 Übungstermine geplant: 7.5., 21.5., 4.6., 18.6., 2.7., 16.7. 4 der Vorlesungstermine werden von externen Referenten gehalten (IBM, etc.) Andere Termine sind leider, leider, leider belegt durch Feiertage etc. Datenbanksysteme 2 2 Organisatorisches – 2 Leistungsnachweis: • Durch Bestehen der Klausur am 21.07.2015, 16-18 Uhr, Jenoptik-Hörsaal, Helmholtzweg 5 In all diesen Fällen werden wieder schöne Scheine (d.h. informativ, inhaltsreich..) ausgegeben („Zertifikate“) • Folien „und mehr“: Jeweils im Web (sukzessive)! • Regelmäßiger Besuch von Vorlesung und Übung wird angeraten (einige Vorlesungsinhalte wird es bekanntlich zusätzlich geben nur in Vorlesung / an Tafel, also nicht auf den Folien). Übung wird ebenfalls die Vorlesung teils stofflich ergänzen Datenbanksysteme 2 3 Organisatorisches – 3 • Art der Übungsdurchführung: - Ausgabe von Übungsblättern (jeweils Woche x) - keine Abgabe von Lösungen - Besprechung/Vorrechnung jeweils Woche x+1 i.w. • Die Übungsblätter werden wie bei DBS1 jeweils ins Web gestellt. „Lehrveranstaltungen“ unter http://www.minet.uni-jena.de/dbis/ • Neben Folien, Übungsblättern ... werden gelegentlich noch weitere Materialien bereitgestellt, etwa Kopien von Veröffentlichungen („Milestone-Papieren“ im Datenbankbereich) etc. • Regelmäßige, aktive Teilnahme an Vorlesung und Übung sehr angeraten!! Datenbanksysteme 2 4 Literatur • Vorlesungsfolien sukzessive im Web • Weitere Veröffentlichungen/Kopien i.d.R. per Link im Web bereitgestellt • Die bereits im WiSem genannten Datenbank-Lehrbücher, à la Heuer/Saake, Lang/Lockemann, Vossen • Speziell für Datenbankimplementierungsaspekte (nur) zwei SEHR GUTE ! deutschsprachige Lehrbücher: Theo Härder, Erhard Rahm: Datenbanksysteme. Konzepte und Techniken der Implementierung. Springer-Verlag, Berlin Heidelberg, 2. Aufl. 2001 Gunter Saake, Andreas Heuer, Kai-Uwe Sattler: Datenbanken: Implementierungstechniken. mitp-Verlag, Bonn, 2. Aufl. 2005 Datenbanksysteme 2 5 Gliederung Datenbanksysteme 2 (in Fortsetzung/Überarbeitung der DBS1-Gliederung vom Okt. ´14) 6. Transaktionen / Fehlerbehandlung 7. Synchronisation im Mehrbenutzerbetrieb 8. Embedded SQL / API 9. Normalformen / Erweiterungen 10. DBMS-Architektur (open end ...) Datenbanksysteme 2 6 6. Einführung zum Thema Transaktionsverwaltung / Fehlerbehandlung (/ Synchronisation in Datenbanksystemen) 6.1 Was ist eine Transaktion und wozu braucht man sie? Transaktion = Folge zusammengehöriger Operationen (bei relationalen Datenbanksystemen: SQL-Anweisungen) auf der Datenbank – wobei es sich um Lese- und Schreiboperationen handeln kann – für die bestimmte Eigenschaften gelten sollen (s.u.) M.a.W.: Eine Art „Klammerung“ von Operationen, wobei die „öffnende“ (Begin of Transaction) und „schließende“ (End of Transaction, Commit Transaction, Abort Transaction ) Klammer vom Benutzer bzw. der Anwendung – ROLLBACK bei eingebettetem SQL – gesetzt wird. OP1 OP2 BOT OP3 OP4 OP5 OP6 OP7 OP8 OP9 t EOT Die Operationen (SQL-Anweisungen) bilden eine Transaktion Datenbanksysteme 2 7 Operationen auf Datenbanken finden ausschließlich im Rahmen von Transaktionen statt, d.h. es gibt keine Operationen „außerhalb“ von TAen! (Im Extremfall bildet jede Operation für sich eine Transaktion.) implizite Op-Klammerung als Transaktion, DBMS veranlasst OP1 OP2 OP3 OP4 OP5 OP6 OP7 t eine eigene Transaktion pro Operation (der nicht so interessante Fall ...) Transaktionseigenschaften (ACID-Eigenschaften (Härder/Reuter 1983)) • A = Atomarität (atomicity) Eine Transaktion wird entweder komplett oder gar nicht ausgeführt: all or nothing – Prinzip M.a.W.: Es darf nicht passieren, dass eine Transaktion im „halbfertigen“ Zustand verbleibt (durch Abbruch, „Absturz“ o.ä.), d.h. einige Änderungen auf der Datenbank ausgeführt wurden, andere hingegen nicht Datenbanksysteme 2 8 • C = Konsistenz (consistency) Eine Transaktion überführt die Datenbank per Definition von einem logisch konsistenten Zustand (alle Integritätsregeln gelten) in einen logisch konsistenten Zustand (alle Integritätsregeln gelten), bildlich: OP1 OP2 OP3 OP4 OP5 BOT Datenbank logisch konsistent (integer) mindestens 2 OPi ändern (sonst langweilig) OP6 t EOT Datenbank hier möglicherweise inkonsistent (nicht alle Integritätsregeln erfüllt) Bsp.: Umbuchung von einem Konto auf ein anderes Datenbank logisch konsistent (integer) • I = Isolation Im Mehrbenutzerbetrieb Das, was innerhalb einer Transaktion geschieht (d.h. die durchgeführten Datenbankänderungen), wird erst bei EOT nach außen hin sichtbar (d.h. für andere, parallel ablaufende Transaktionen im Mehrbenutzerbetrieb) Datenbanksysteme 2 9 Bsp.: a) Transaktion T1 macht Umbuchung von einem Konto auf ein anderes, T2 läuft parallel T1 OP1 OP2 ändert OP1 T2 liest ... t ohne Isolation würde T2 hier inkonsistente Datenbank sehen!! b) Gleiches Szenarium wie bei a), aber Transaktion T1 wird nach OP2 abgebrochen (Abort) T1 T2 OP1 OP2 Abort OP1 ... ändert liest t Isolation ermöglicht u.a. das isolierte Zurücksetzen einer Transaktion im Fehlerfall!! Datenbanksysteme 2 ohne Isolation würde T2 hier Datenbankzustand sehen, der von T1 anschließend (durch Abort) wieder „zurückgenommen“ wurde, also so nicht für die Außenwelt bestimmt war T2 wäre u.U. ebenfalls zum Abort (Transaktionsabbruch) gezwungen!! 10 • D = Dauerhaftigkeit (durability) Wenn eine Transaktion erfolgreich zum Ende gekommen ist, d.h. mit commit transaction abgeschlossen hat, dann müssen die von ihr durchgeführten Änderungen auch im evtl. nachfolgenden Fehlerfall („Systemabsturz“, Platten-Crash) überleben* erfolgreiche Ende OP1 OP2 OP3 OP4 OP5 BOT t Commit *bzw. vom DBVS automatisch rekonstruierbar sein M.a.W.: Benutzer muss sich darauf verlassen können, dass seine durchgeführten und mit Commit „freigegebenen“/„festgeschriebenen“ Änderungen auch wirklich Bestand haben ACID-Eigenschaften von Transaktionen erstmals formuliert von Härder/Reuter 1983 (ACM Computing Surveys) Jim Gray = „Erfinder“ des Transaktionskonzept bzw. erste wissenschaftliche Veröffentlichungen dazu in den 1970ern Datenbanksysteme 2 11 6.2 Fehlerszenarien zunehmende Disaster Transaktionsversagen a) Systemversagen b) Externspeicherversagen c) a) Transaktionsversagen (TA-Abbruch, Transaction Failure) Eine einzelne Transaktion erreicht nicht ihr normales Ende, sondern bricht ab (Abort Transaction durch Benutzer/Anwendung oder durch DBVS) häufig hoffentlich nicht so häufig Gründe: - Benutzer hat sich´s anders überlegt, hat Fehler bemerkt o.ä. - „Absturz“ eines Anwendungsprogramms (mit eingebettetem SQL) - Inkorrekte Eingabedaten Benutzer/Anwendung beschließt daraufhin Abbruch - Anwendungsprogramm „meldet sich nicht mehr“ - Deadlock (Verklemmung) o.ä. - ... Datenbanksysteme 2 12 b) Systemversagen (Systemausfall, System Failure (Crash)) Das DBVS „stürzt ab“, d.h. die gesamte DB-Verarbeitung wird abrupt unterbrochen (alle lfd. Transaktionen (und „mehr“) betroffen, ggf. auch bereits abgeschlossene TA betroffen) Gründe: - DBVS-Fehler - BS-Fehler - Hardware-Versagen (Defekt, Stromausfall ...) Konsequenz: Hauptspeicherinhalt geht verloren (Systempuffer, Sperrtabellen ...), Platteninhalte bleiben jedoch erhalten + intakt (Annahme) c) Externspeicherversagen (Media Failure) Datenverlust auf Externspeicher; Datenbank ganz oder teilweise zerstört Gründe: - Head Crash, „magnetische Alterung“, alle möglichen Ursachen für Plattendefekt Frage nun: Wie lassen sich ACID-Eigenschaften trotzdem garantieren (vor allem „A“ und „D“) Fehlerbehandlungsmaßnahmen Datenbank-Recovery Datenbanksysteme 2 13 6.3 Klassifikation von Fehlerbehandlungsmaßnahmen Datenbank-Recovery a) Fehlerbehandlung für Transaktionsversagen DBVS setzt betroffene TA auf ihren Anfangszustand zurück, d.h. alle Änderungen am DB-Zustand, die von der TA bereits vorgenommen wurden, werden rückgängig gemacht (Transaction Rollback) Warum?: Garantieren von A tomarität Wie?: DBVS protokolliert i.d.R. die Änderungen am Datenbankzustand (z.B. Tupelmodifikation) in Form von before images (Tupel vor der Modifikation) und after images (Tupel nach der Modifikation) sog. Protokoll(datei) (Log[File]) auf Platte before images aus Protokoll(datei) können zum Rücksetzen der Änderungen (Rollback) benutzt werden: automatisch durchs DBVS!!! Datenbankfehlerbehandlung erfordert Redundanz (natürlich!) Datenbanksysteme 2 14 b) Fehlerbehandlung für Systemversagen Szenarium: (Bsp.) D T1 D! T2 T3 T4 „Nachgefahren“ CP CP-Int. CP Crash t DBVS führt (automatisch oder vom DBA veranlasst) Wiederanlauf (Restart, ´Warmstart´) durch verbunden mit Crash Recovery Was ist zu tun? - T3 und T4 müssen zurückgesetzt werden wg. A tomarität mit Hilfe der before images in der Protokolldatei - T1 und T2 müssen (u.U.) „nachgefahren“ (REDO) werden, d.h. die von ihnen vorgenommenen Änderungen am DB-Zustand müssen persistent gemacht, d.h. auf Platte geschrieben werden (sie können! nämlich – trotz Commit – ggf. noch im Systempuffer stehen und (noch) nicht auf Platte geschrieben worden sein) „Nachfahren“ (wg. D auerhaftigkeit) mit Hilfe der after images in der Protokolldatei Datenbanksysteme 2 15 Problem hinsichtlich des „Nachfahrens“: Wie weit in der Vergangenheit muss begonnen werden? Ab Zeitpunkt des DBVS-Starts? sehr aufwendig! Lösung: Sog. Checkpoints (Sicherungspunkte) in regelmäßigen Zeitabständen (z.B. alle 10 Minuten ... (sog. Checkpoint-Intervall)) Pufferinhalt wird komplett in die Datenbank geschrieben („flush buffer“) „Nachfahren“ braucht nicht über den aktuellsten Checkpoint hinaus in die Vergangenheit gehen (z.B. alle Änderungen von T1 in obigem Bild bereits auf Platte) R2-Aufwandsbegrenzung. c) Fehlerbehandlung für Externspeicherversagen Ausgangspunkt für Fehlerbehandlung: - Gelegentliches Erstellen von Datenbankkopien (sog. „Archivkopien“) Backup-Durchführung - Protokollieren der Änderungen aller (zumindest aller abgeschlossenen) Transaktionen in Form von after images in Protokolldatei Datenbanksysteme 2 16 T1 T2 „D“ T3 T4 müssen zur R4-Recovery (Behandlung von Externspeicherversagen) „nachgefahren“ werden. ... Zeitpunkt des Erstellens einer Archivkopie der Datenbank t Externspeicherversagen DBA lädt Archivkopie (i.d.R. Band Platte) und veranlasst das DBVSseitige Nachfahren aller abgeschlossenen Transaktionen ( R4-Recovery) wg. D auerhaftigkeit DB anschließend wieder in aktuellem konsistentem Zustand (es sind keine Änderungen abgeschlossener TAen verlorengegangen!) Hinweis: Die Fehlerbehandlungsmaßnahmen sind etwas vereinfacht dargestellt worden (z.B. R2- und R3-Recovery bei bestimmten DBVS-Implementierungen nicht erforderlich) Datenbanksysteme 2 17 Bemerkungen zur Transaktionsthematik und deren Implementierung etc. - 1 • Blockschreiben in die Datenbank erfolgt natürlich nicht nur beim Checkpoint, sondern auch sonst zu beliebigen, nicht vorplanbaren Zeitpunkten (nämlich wenn im Puffer (Größe << Datenbankgröße) kein Platz mehr vorhanden ist für neuen Block). In Wahrheit wird sogar teils ´proaktiv´ geschrieben (DB2 etwa). Sog. STEAL-Strategie: (geänderte, „schmutzige“) Daten können sich aus dem Puffer in die Datenbank „davonstehlen“ (vor Transaktionsende). („Schmutzige“ Daten werden erst durch Transaktionsende (Commit) „sauber“.) • Datenblöcke, die aus dem Puffer verdrängt werden, enthalten oft „schmutzige“ und „saubere“ Daten gemischt: Mehrere Transaktionen können parallel auf einem Datenblock herumgeändert haben: die eine ist schon fertig (Commit), die andere noch nicht zum Zeitpunkt des Blockschreibens. Wie könnte man´s etwa verhindern: Blocksperren (siehe Folgeabschnitt über Synchronisation), die will man aber nicht ... Datenbanksysteme 2 18 • DBMS sorgt mittels Write-Ahead Logging (WAL) dafür, dass jeweils vor Schreiben eines Datenblocks in die DB (auf Platte) zugehörige Log-Einträge ebenfalls auf Platte gelangen, also zugehörige Blöcke des Log-Puffers geschrieben werden (wegen Atomaritätseigenschaft, Rücksetzbarkeit der Transaktion). Prinzip Log-Puffer: Tafelbild!! • Datenblöcke im Log-Puffer sind nicht immer ganz gefüllt (mit Log-Einträgen) zum Zeitpunkt ihres Schreibens auf Platte: Log-Block muss raus auf Platte (ob voll oder nicht voll), wenn - Commit Transaction erfolgt (wegen Durability-Eigenschaft) – wenn man von gewissen (kleinen) erlaubten zeitlichen Verzögerungen ab-sieht, wie sie wegen Group Commit zustande kommen - (wegen WAL-Prinzip) Datenblock rausgeschrieben wird und sich zugehörige Log-Einträge (noch) im Log-Block im Puffer befinden (Atomaritätseigenschaft) • Hinweis: Über Teilnahme am Group Commit („Bündelung“ der Commits, vor allem des Log-Schreibens) wird zum Commit-Zeitpunkt entschieden, d.h. das System fasst mehrere Commits zusammen, sofern sie zeitlich „dicht“ liegen natürlich nur aus PerformanceGründen, kleine Nachteile können akzeptiert werden. Datenbanksysteme 2 19 Bemerkungen ... - 2 Volumen der Log-Daten (Protokolldaten) • Log (auf der Platte) wächst mit der Zeit „beliebig“ an über alle maßen?? ... muss natürlich verhindert werden! Wie? 1. UNDO-Log-Daten (BFIM) von abgeschlossenen Transaktionen werden im Prinzip nicht mehr benötigt (für R1-/R3-Recovery)... wir können abgeschlossene Transaktionen nicht mehr zurückrollen (wegen D!) 2. REDO-Log-Daten (AFIM) von Transaktionen, die vor aktuellem Checkpoint erfolgreich beendet worden sind, werden nicht mehr benötigt für R2-Recovery (denn Checkpoints begrenzen ja gerade das Nachfahren nach hinten, deshalb wurden Checkpoints ja eingeführt!) Datenbanksysteme 2 20 • Konsequenz also: BFIM und AFIM können unter Beachtung jener Regeln kontinuierlich weggeworfen werden(?) Jein: 0. Ein Log transaktionsübergreifend 1. BFIM und AFIM stehen üblicherweise gemeinsam in einem Log (Datei), selektives Wegwerfen also nicht möglich 2. REDO-Log-Daten werden nicht nur für R2-, sondern auch für R4Recovery benötigt also kann nicht ganz sooo schnell weggeworfen werden, wie erhofft • Lösung (in DB2) z.B.: Volumen der online (Platte) gehaltenen LogDaten begrenzen durch (automatisches) Archivieren: Auf schnellem Medium (Platte) werden die Log-Daten nur für R1-/R2-/R3-Recovery gebraucht. Langfristiges Aufheben für R4-Recovery also durch Kopieren des Logs (z.B.) auf langsamen Tertiärspeicher („Verschieben“ auf Tertiärspeicher) ermöglicht „reuse“ des Log-Datenplatzes auf dem Sekundärspeicher (Platte), zyklisches Be- oder Überschreiben des Log-Datenplatzes Datenbanksysteme 2 21 Bemerkungen ... - 3 Logging, Backup, Recovery Probleme im Zusammenhang mit Backup (DB-Sicherung): • Kopieren sehr großer Datenmengen (Tera..) • Behinderung des lfd. DB-Betriebs Lösungen: • Offline- vs. Online-Backup: Normaler DB-Betrieb läuft bei Onlineweiter während des Backup-Vorgangs (Probleme?) • Paralleles Backup: Paralleles Datenschreiben von mehreren Datenbank-Devices auf mehrere Sicherungs-Devices (Diplomarbeit Ch. Gollmick 1999 ) (Fragestellungen?) • Inkrementelles Backup: Sichern nur des Delta, d.h. der DBVeränderungen seit letztem Backup (Probleme?) • Partielles Backup: Sichern nur von Datenbankteilen, etwa einzelnen Table Spaces, andere dann zu anderen Zeitpunkten Im Prinzip alles orthogonal verwendbar und weitgehend verfügbar in heutigen DBMS-Produkten Datenbanksysteme 2 22 Bemerkungen ... - 4 Schreibstrategien des DBMS Herausgegriffene Klassifikationsmerkmale (siehe Härder/Reuter-ACID-Papier): • Force vs. no-force: Wann werden geänderte Daten (zurück) auf die Platte geschrieben („gezwungen“): (Spätestens) bei EOT (force) oder ggf. auch irgendwann erst später (no-force)? Reale Produkte bevorzugen no-force (aus diskutiertem Grunde) • Steal vs. no-steal: Wann „stehlen“ sich geänderte Daten aus dem Puffer davon (zurück auf Platte): Jederzeit, insb. also auch schon, während die verursachende Transaktion noch läuft (steal) – also auch „schmutzig“ – oder erst nach Transaktionsende (no-steal, also nur sauber)? Reale Produkte bevorzugen steal (warum?) • Atomic vs. not-atomic: Wie wird der Datenbankzustand auf Platte fortgeschrieben: Atomar (´punktuelles´ Fortschreiben) oder nicht atomar (kontinuierliches Fortschreiben)? Bei atomarem Fortschreiben ist die Datenbank auf Platte bei Crash (Systemversagen, System Failure) immer in einem wohldefinierten Zustand – freilich nicht unbedingt transaktionskonsistent -, bei nicht atomarem Fortschreiben ist sie in irgendeinem (indifferenten) Zustand. Reale Produkte bevorzugen not-atomic, es gibt aber in Forschung (sowieso) und Produkten auch atomic (Schattenspeicherkonzept) Datenbanksysteme 2 23 Zusammenfassung / ´Hilites´ zum Trans.-Konzept (Kap. 6) • Alle DB-Operationen laufen stets innerhalb von (DB)-Transaktionen • TA fassen logisch zusammengehörige DB-Operationen zusammen, „klammern“ sie also (BOT, EOT) • Für TA gelten die ACID-Eigenschaften, diese legen die Semantik der Klammerung fest • TA enden entweder erfolgreich (TA-Commit) oder erfolglos (TA-Abbruch, Abort, Rollback synonym) • Beendet ist eine TA erst dann „richtig“, wenn das TA-Ende vom DBMS quittiert wurde (Quittung bestätigt die Dauerhaftigkeit der durchgeführten Änderungen) • ACID muss DBMS implementierungstechnisch umgesetzt werden, Mechanismen/Automatismen sind gefordert: - Logging/Recovery für A + D - Synchronisation für I (z.B. Sperren) - Integritätsüberwachung für C • ACID „kostet etwas“ in bezug auf DBMS-Implementierungsaufwand und in bezug auf Performance zur Laufzeit und in bezug auf DB-Administration aber es lohnt sich! Kosten (Performance) können durchaus vom Administrator/Benutzer beeinflusst werden Datenbanksysteme 2 24 !