Daten- und Transaktionskontrolle mit SQL DCL, TCL Wintersemester 16/17 DBIS 1 Zugriffsrechte für Datenbankobjekte • Zugriff zu einer Relation (inkl. Daten) mit allen Rechten hat zunächst nur der Benutzer, der sie erzeugt hat • Situation in realen Anwendungen • Datenbankadministrator ist „Eigentümer“ der DB und damit Inhaber aller Rechte auf allen Relationen • Notwendigkeit zur selektiven, zielgerichteten Weitergabe von Rechten • Syntax zur Rechtevergabe (ausführlich nächste Folie): GRANT <privileges> ON <object> TO <grantee> [WITH GRANT OPTION] • Syntax zum Rechteentzug: REVOKE <privileges> FROM <grantee> <drop_behaviour> • Angabe <drop_behaviour> steuert Verhalten bei abhängigen Objekten • CASCADE: vererbte Rechte werden entzogen • RESTRICT: Rechteentzug schlägt fehl Wintersemester 16/17 DBIS 2 Ausführliche Syntax für GRANT relation GRANT ALL ON PUBLIC TO view DELETE benutzer , SELECT WITH GRANT OPTION INSERT ( UPDATE attribut ) , , • Privileges: ALL, SELECT, INSERT, DELETE, UPDATE, ... • Object: TABLE, DOMAIN, TYPE, ... • Grantee: PUBLIC, Role, User • WITH GRANT OPTION: Möglichkeit für den berechtigten Nutzer, das empfangene Recht an andere Nutzer weiterzugeben Wintersemester 16/17 DBIS 3 GRANT und REVOKE – Beispiele • Beispiel 1: Benutzer „KK“ soll die Berechtigung zum Lesen der „Angest“-Relation erhalten und die Möglichkeit, diese Berechtigung weiterzugeben: GRANT SELECT ON Angest TO KK WITH GRANT OPTION • Beispiel 2: Benutzer „ML“ soll nur die Spalte „Wohnort“ von „MeineSichtderDinge“ ändern dürfen, Weitergabe dieser Berechtigung sei unzulässig: GRANT UPDATE (Wohnort) ON MeineSichtderDinge TO ML • Beispiel 3: Jedermann soll das Recht erhalten, die „Projekt“-Relation zu lesen: GRANT SELECT ON Projekt TO PUBLIC • Beispiel 4: Benutzer „KK“ wird das Leserecht auf „Angest“ entzogen, anderen durch „KK“ berechtigten Nutzern ebenfalls: REVOKE SELECT ON Angest FROM KK CASCADE Wintersemester 16/17 DBIS 4 Transaktionsverwaltung/Fehlerbehandlung • Transaktionsbegriff • Was ist eine Transaktion • Wozu braucht man Transaktionen • ACID-Eigenschaften • Fehlerszenarien • Klassifikation • Fehlerursachen • Fehlerbehandlungsmaßnahmen • Klassifikation • Lösungen für verschiedene Fehlerszenarien Wintersemester 16/17 DBIS 5 Der Transaktionsbegriff I • Definition: eine Transaktion ist eine Folge zusammengehöriger Operationen (SQL-Anweisungen) auf der Datenbank (Lese- und Schreiboperationen, DML!) für die gewisse Eigenschaften gelten sollen OP1 OP2 • Bemerkung: OP3 OP4 OP5 OP6 BOT OP7 OP8 OP9 t EOT • Publiziert in den 1970er Jahren durch Jim Gray • Veranschaulichung als „Klammerung“ von Operationen, wird explizit vom Benutzer bzw. der Anwendung gesetzt • Öffnende Klammer: BOT (Begin of Transaction) • Schließende Klammer: EOT (End of Transaction) • COMMIT: Durchführung aller Operationen seit BOT • ROLLBACK: Zurücksetzen aller Operationen seit BOT Wintersemester 16/17 DBIS 6 Der Transaktionsbegriff II • Operationen auf Datenbanken finden ausschließlich im Rahmen von Transaktionen statt • Es gibt keine Operationen „außerhalb“ von Transaktionen! • Im Extremfall veranlasst das DBMS die implizite Klammerung, jede Operation bildet dann eine Transaktion für sich (wenig spannend...) • Transaktionseigenschaften (ACID-Eigenschaften) • Erstmals formuliert von Härder/Reuter 1983 (ACM Computing Surveys) • ACID: Atomicity – Consistency – Isolation – Durability OP1 OP2 OP3 OP4 OP5 OP6 OP7 t Wintersemester 16/17 DBIS 7 Das ACID-Prinzip I • Atomariät (A = atomicity): Eine Transaktion wird entweder komplett oder gar nicht ausgeführt („All or nothing“-Prinzip) • Genauer: eine Transaktion darf nicht im „halbfertigen“ Zustand verbleiben (bei Abbruch, Absturz, etc.), d.h. einige Änderungen auf der Datenbank wurden ausgeführt, andere hingegen nicht • Konsistenz (C = consistency): Eine Transaktion überführt die Datenbank per Definition von einem logisch konsistenten Zustand in einen logisch konsistenten Zustand • Logisch konsistenter Zustand: alle Integritätsregeln gelten OP1 OP2 OP3 OP4 OP5 BOT Datenbank logisch konsistent Wintersemester 16/17 OP6 t EOT Datenbank hier möglicherweise inkonsistent Bsp.: Umbuchung von einem Konto auf ein anderes DBIS Datenbank logisch konsistent 8 Das ACID-Prinzip II • Isolation (I = isolation): Ergebnisse innerhalb einer Transaktion (durchgeführte DBÄnderungen) werden erst bei EOT nach außen hin sichtbar (d.h. für andere, parallel laufende Transaktionen im Mehrbenutzerbetrieb) • Isolation ermöglicht u.a. isoliertes Zurücksetzen einer Transaktion! • Probleme bei unvollständiger/fehlender Isolation • Lost Update: Verlust gleichzeitiger Änderung paralleler Transaktionen • Dirty Read: Lesen von Daten nicht abgeschlossener paralleler Transaktionen • Nonrepeatable Read: Wiederholtes Lesen liefert verschiedene Ergebnisse OP1 T1 T2 • Lösung: • „Isolation level“ seit SQL-92 OP2 OP1 ändert ... liest t ohne Isolation würde T2 hier inkonsistente Datenbank sehen!! • Gratwanderung zwischen Problemlösung vs. Performance • Beispiel: Transaktion T1 buchten Konten um, Transaktion T2 liest parallel die Kontenstände Wintersemester 16/17 DBIS 9 Das ACID-Prinzip III • Dauerhaftigkeit (D = durability): Bei erfolgreichem Ende einer Transaktion (COMMIT) müssen die von ihr durchgeführten Änderungen auch nachfolgende Fehlerfälle überleben • Fehlerfälle: „Systemabsturz“, Platten-Crash • Überleben kann auch heißen: automatisch vom DBMS rekonstruierbar • Benutzer muss sich darauf verlassen können, dass seine durchgeführten und mit COMMIT „freigegebenen/festgeschriebenen“ Änderungen auch wirklich Bestand haben • Beispiel: OP1 OP2 OP3 BOT OP4 Fehlersituation t COMMIT • Transaktion zur Eheschließung, d.h. Änderung des Familienstandes an zwei Personen • Nach erfolgreicher Eintragung fällt der Strom aus (schlechtes Omen!) Ehe sollte deswegen nicht nochmal geschlossen werden müssen! Wintersemester 16/17 DBIS 10 Fehlerszenarien I • Klassifikation (mit zunehmendem Disaster): • Transaktionsversagen • Systemversagen • Externspeicherversagen • Transaktionsversagen (Transaction Failure) • Symptom: Eine einzelne Transaktion erreicht nicht ihr normales Ende (COMMIT) sondern bricht vorzeitig ab • Gründe aus Benutzersicht: • Anwender hat es sich anders überlegt (z.B. Reiseplanung beendet) • Anwender bricht ab aufgrund falscher Eingabedaten / Fehler • Gründe aus Sicht des DBMS: • „Absturz“ eines Anwendungsprogramms • Timeout beim Anwendungsprogramm (z.B. Verbindungsproblem) • Deadlock (Verklemmung) paralleler Transaktionen Wintersemester 16/17 DBIS 11 Fehlerszenarien II • Systemversagen (System Failure, Crash) • Symptom: Das DBMS „stürzt ab“, d.h. die gesamte DB-Verarbeitung wird abrupt unterbrochen; alle laufenden und ggf. auch abgeschlossene Transaktionen betroffen • Gründe z. B. : Fehler in der DBMS-Software, Betriebssystem-Fehler, Hardware-Versagen (Defekt, Stromausfall, ...) • Konsequenz: Inhalt des Hauptspeichers geht verloren (Systempuffer, Sperrtabellen, ...), Platteninhalte bleiben jedoch erhalten + intakt • Externspeicherversagen (Media Failure) • Symptom: Datenverlust auf Externspeicher, Datenbank ganz oder teilweise zerstört • Gründe: Head Crash, „magnetische Alterung“, Plattendefekte aller Art • Wie lassen sich die ACID-Eigenschaften (vorallem „A“ und „D“) trotzdem garantieren? Fehlerbehandlungsmaßnahmen (Datenbank-Recovery) Wintersemester 16/17 DBIS 12 Fehlerbehandlung bei Transaktionsversagen • DBMS setzt betroffene Transaktion auf ihren Anfangszustand zurück, d.h. alle Änderungen am DB-Zustand, die von der Transaktion bereits vorgenommen wurden, werden rückgängig gemacht (ROLLBACK) • Sogenannte R1-Recovery • Gewährleistung der Atomarität • Mögliches Vorgehen: • DBMS protokolliert die Änderungen am Datenbankzustand in Form von „before images“ (z.B. Tupel vor der Modifikation) und „after images“ (z.B. Tupel nach der Modifikation) • Speicherung in sogenannten Protokolldateien (Log) auf der Platte • Durchführung eines ROLLBACK mit den before images aus der Protokolldatei automatisch vom DBMS möglich • Konsequenz: Aufwand zur Verwaltung der Log-Datei und Redundanz erforderlich! Wintersemester 16/17 DBIS 13 Fehlerbehandlung bei Systemversagen I • Beispielszenario: D T1 D T2 T3 T4 „Nachgefahren“ CP1 CP2 CP-Intervall Crash t • DBMS führt automatisch oder vom DBA veranlasst einen Wiederanlauf (Restart) durch verbunden mit Crash Recovery • „Nachfahren“ (REDO) von Transaktionen mit COMMIT vor dem Systemversagen • Sogenannte R2-Recovery (wegen Dauerhaftigkeit) • Grund: trotz COMMIT können die Änderung einer Transaktion noch im Systempuffer stehen und noch nicht auf Platte persistiert sein • Verwendung der after images aus der Logdatei • Beispiel: Änderung der Transaktionen T1 und T2 nachfahren Wintersemester 16/17 DBIS 14 Fehlerbehandlung bei Systemversagen II • Zurücksetzen (ROLLBACK) von unterbrochenen Transaktionen • Sogenannte R3-Recovery (wegen Atomarität, analog R1-Recovery) • Verwendung der before images aus der Logdatei • Beispiel: Änderungen der Transaktionen T3 und T4 zurücksetzen • Problem bezüglich des Nachfahrens: • Wie weit in der Vergangenheit muss begonnen werden? • Theoretisch ab Zeitpunkt des DBMS-Starts sehr aufwändig für R2! • Lösung: • Sicherungspunkte (Checkpoints, CP) in regelmäßigen Abständen (Checkpoint-Intervall), z.B. alle 10 Minuten • Inhalt des Systempuffers wird komplett in die Datenbank geschrieben, d.h. auf Platte persistiert („flush buffer“) • Nachfahren braucht nicht über den aktuellsten Checkpoint hinaus in die Vergangenheit (Logfile!) gehen • Beispiel: T1 muss nicht mehr nachgefahren werden, nur noch ab CP2 Wintersemester 16/17 DBIS 15 Fehlerbehandlung bei Externspeicherversagen • Ausgangspunkt / Voraussetzung: • Gelegentliches Erstellen von Datenbankkopien („Archivkopien“), d.h. Planung und Durchführung von Backup-Strategien • Protokollieren der Änderungen aller (zumindest abgeschlossenen) Transaktionen in Form von after images in Protokolldatei (Log) • Vorgehen: • Datenbankadministrator lädt Archivkopie, meist von Band auf Platte • Start DBMS-seitigen Nachfahrens aller abgeschlossenen Transaktionen (R4Recovery) wegen Dauerhaftigkeit • DB anschließend wieder in aktuellem konsistentem Zustand, keine Änderungen abgeschlossener Transaktionen verlorengegangen • Beispiel: T1 T2 T3 T4 R4-Recovery für T2 und T3 t Externspeicherversagen Archivkopie Wintersemester 16/17 DBIS 16 Sonstiges Wintersemester 16/17 DBIS 17 Das Feld der Datenbanken ist noch viel weiter… • Data Mining • Slices and Dices • Data Integration • Procedures • Mapping & Matching • Trigger • Data Warehouse • SQL-Injections • Data Mart • Structured Storage • Data Quality • NoSQL • Data Profiling … • Data Cleansing Wintersemester 16/17 DBIS 18 Letzte Termine • Gastvorträge: • Di. 24.01.2017: Michael Burwig (SAP) 12:15 Uhr, CZ 3, SR 308 • Do. 26.01.2017: Dr. Markus Döhring (BASF) 16:15 Uhr, CZ 3, SR 314 • Probeklausur: • Di. 31.01.2017, 12:15 o Wintersemester 16/17 DBIS 19