Universität Augsburg, Institut für Informatik Prof. Dr. W. Kießling Dr. A. Huhn, F. Wenzel, M. Endres WS 2009/2010 30. Okt. 2010 Lösungsblatt 1 Datenbanksysteme I Aufgabe 1: Motivation und Terminologie Antworten: 1. Ein DBS ist derjenige Teil eines computergestützten Informationssystems, der sich mit folgenden Aufgaben beschäftigt: • Beschreibung vorhandener Daten • Verwaltung vorhandener Daten • Zugriffsoperationen auf die Datenbank • Abgrenzung zu anderen Programmiersystemen: Sichere Verwaltung persistenter Daten, effiziente Verwaltung sehr großer Datenbestände für vielfältige Aufgaben 2. Probleme bei großen Datenmengen: • Redundanz und Inkonsistenz: Vermeidung von Duplikaten und Versionsfehler • Mehrbenutzerbetrieb: Bei DB-Systemen sind Parallelzugriffe durch Sperren möglich • Datenverlust: DB bietet Backup- und Recoveryverfahren zur Wiederherstellung eines konsistenten Zustandes • Integritätsverletzung: Eine DB überprüft die Einhaltung von Integritätsbedingungen • Sicherheitsprobleme: Datenbanken erlauben Rechtevergabe • Daten- und Anfrageformate: Datenbanken bieten eine standardisierte Anfragesprache • Performance: Datenbanken stellen Tuning/Optimierung zur Verfügung 3. Durch das ACID-Transaktionskonzept können mehrere Benutzer effektiv gemeinsam die Datenbank nutzen. Concurrency Control regelt den gleichzeitigen Zugriff. • atomar: In relationale Datenbanksystemen kann eine Transaktion entweder vollständig oder gar nicht in einen persistenten Zustand überführt werden. Beispiel: Eine Überweisung findet nur statt, wenn sowohl das Abbuchen, als auch die Betragsverbuchung auf das neue Konto korrekt erfolgt ist. • korrekt: Integritätsbedingungen, festgelegt durch den DB Designer, müssen erhalten bleiben. Beispiel: In einem Buchungssystem einer Bank liefert eine Einzahlung auf ein Konto, unabhängig von der Transaktion, immer das gleiche Ergebnis. • isoliert: konkurrent ausgeführte Transaktionen führen zum selben Ergebnis wie einzeln hintereinander ausgeführte Transaktionen. Beispiel: Parallel verlaufende Buchungen führen zum selben Ergebnis, wie einzeln hintereinander ausgeführte Buchungen. • dauerhaft: Nach Abschluß einer Transaktion mufl gewährleistet werden, daß auch bei einem Systemfehler kein Datenverlust eintritt. Beispiel: Nachdem eine Reise gebucht wurde, sind die Daten des Reiseteilnehmers im jeweiligen Reisebüro dauerhaft gespeichert. 1 4. Der DB-Administrator ist zuständig für: • • • • • • • Schema-Definition Verwaltung von Zugriffsrechten auf die DB Festlegung der Speicherstrukturen und der Zugriffsmethoden Modifikation des DB-Schemas und der physikalischen Speicherstrukturen Spezifikation von Integritätsbedingungen Backups/Recovery Tuning, Performance-Monitoring 5. Datenunabhängigkeit • physikalische Datenunabhängigkeit: Physikalische Organisation der DB kann geändert werden, ohne das logische Schema oder Anwendungsprogramme ändern zu müssen. • logische Datenunabhängigkeit: Das logische DB-Schema kann geändert werden, ohne externe Sichten oder Anwendungsprogramme ändern zu müssen. • Unterschiede: – Die beiden Varianten der Datenunabhängigkeit betreffen verschiedene Schnittstellen des 3-Ebenen-Modells. – Physikalische Datenunabhängigkeit kann in der Regel erreicht werden. Die logische Datenunabhängigkeit läßt sich normalerweise nur mit Einschränkung erreichen. – Die physikalische Datenunabhängigkeit betrifft hauptsächlich den DB-Administrator; die logische Datenunabhängigkeit betrifft u.U. auch den Anwendungsprogrammierer. Aufgabe 2: Schichten eines DB-Systems Antworten: 1. Zuordnung von Aufgaben zu Schichten: • Anlegen eines neuen Feldes Abteilungsnummer im Mitarbeiter-Schema stellt eine Manipulation des zugrundeliegenden Schemas (mittel DDL) dar und ist somit der konzeptionellen Schicht zuzuordnen. • Erstellung von Relationen-Schemata für ein neues Warenwirtschaftssystem erfolgt durch CREATE Statements (DDL) und gehört somit ebenso zur konzeptionellen Schicht. • Die Optimierung der Festplattenzugriffszeiten des DB-Systems gehört zur Domäne der physischen DB und somit in die interne Schicht. • Ein Mindestlohn für neue Mitarbeiter lässt sich über Integritätsbedingungen steuern. Dies erfolgt in der konzeptionellen Schicht. • Die Verwaltung von Zugriffsrechten auf die Datenbank wird vom DB-Administrator vorgenommen und betrifft die konzeptionelle Schicht (siehe auch Abbildung Skript Seite 14). • Eine sofortige Gehaltserhöhung lässt sich mittels eines einfachen UPDATE Statements erzielen und ist somit Teil der Datenmanipulation (mittels DML). Diese erfolgt idealerweise in der externen Schicht. • Eine View wird in der Regel vom DB-Administrator mittels des CREATE VIEW Statements erzeugt. Somit ist diese Operation der konzeptionellen Schicht zugehörig. Endanwender greifen dagegen meist nur lesend auf die View durch SELECT Statements zu. 2 2. DML: Abfragen, Einfügen, Ändern, Löschen von Daten (SELECT, INSERT, UPDATE, DELETE) DDL: Anlegen, Ändern, Löschen von Relationen-Schemata (CREATE, ALTER, DROP) Aufgabe 3: Transaktionen Antworten: 1. Grundoperationen für das Transaktionsmanagement: • COMMIT - erfolgreiches Ende, persistente Änderungen • ROLLBACK - fehlerhaftes Ende, bisherige Änderungen werden rückgängig gemacht 2. Probleme bei simultaner Ausführung: Bei unzureichender Ablaufsteuerung kann es zu Inkonsistenzen in der Datenbank kommen. Deshalb ist eine konsistente Ablaufsteuerung notwendig. Dabei ist eine Ablaufsteuerung konsistent, wenn die Wirkung der parallelen Ausführung der Transaktionen gleich derer einer sequentiellen Ausführung einer Permutation der Transaktionsabfolge ist. Transaktionen, die parallel ausgeführt werden sollten also auch mit dem selben Ergebnis hintereinander ausgeführt werden können. Jede Transaktion muss als Bedingung also so geschrieben werden können, als würde sie allein auf der Datenbank arbeiten. 3. Bewertung der Ablaufpläne: • Problem a liefert unterschiedliche Werte in serieller und paralleler Ausführung. Für einen Anfangswert F = 10 ergibt der vorliegende parallele Ablaufplan einen Endwert von F = 15, bei serieller Ausführung T 1 → T 2 (erste T1, dann T2) bzw. T 2 → T 1 (erst T2, dann T1) einen Wert von F = 18. • Problem b liefert sowohl in serieller als auch in paralleler Ausführung für einen Startwert F = 10 einen Endwert F = 11. Dies liegt am ROLLBACK in T2. Würde T2 stattdessen als Variante mit einem COMMIT enden, so würden sich durchaus unterschiedliche Werte ergeben, nämlich F = 12 für T 1 → T 2 und T 2 → T 1 im Gegensatz zu F = 11 bei paralleler Ausführung. • Problem c liefert auch ein inkonsistentes Ergebnis. Dies liegt daran, dass vor dem READ in T2 ein WRITE in T1 erfolgt, welches anschließend aber wieder durch ein ROLLBACK zurückgezogen wird. Somit geht T2 von einem falschen Wert für F aus. Bei F = 10 liefert der parallele Ablauf einen Wert F = 21, bei den seriellen Ablaufplänen T 1 → T 2 und T 2 → T 1 einen Wert von F = 30. 3