Datenbanksysteme - of the AG Database-Systems - Philipps ...
Datenbanksysteme - of the AG Database-Systems - Philipps ...
Datenbanksysteme - of the AG Database-Systems - Philipps ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Datenbanksysteme</strong><br />
Bernhard Seeger<br />
Fachbereich Ma<strong>the</strong>matik und Informatik<br />
<strong>Philipps</strong>-Universität Marburg<br />
Email: seeger@informatik.uni-marburg.de<br />
Tel.: 06421-28 21526<br />
Dieses “Skript” ist nur als eine Orientierungshilfe zur Vorlesung <strong>Datenbanksysteme</strong>. Die Kopien<br />
entsprechen zu einem großen Teil den Folien, die in den Vorlesungsstunden aufgelegt und erläutert<br />
werden.<br />
Seite 1
Organisation<br />
� Vorlesung<br />
– Mi. 11:15-13:00 HG 007, Fr. 9:15-11:00 HG 115<br />
� Übung<br />
– Übungsleiter: Sonny Vaupel<br />
– Übungsblätter<br />
– Ausgabe des Übungsblatts: in der Vorlesung am Freitag<br />
– Abgabe der Übungen in der kommenden Vorlesung am Freitag<br />
– Korrektur der Aufgaben<br />
– Mögliche Übungstermine: Mo 14-18, Di 14-18, Mi 14-18<br />
� Benoteter Schein:<br />
– 50% der Übungsaufgaben + Klausur<br />
– Note des Moduls = Note der Klausur<br />
� Web-Seite:<br />
– http://dbs.ma<strong>the</strong>matik.uni-marburg.de/teaching/vl/DBS1/08SS/<br />
� Forum: http://dbs.ma<strong>the</strong>matik.uni-marburg.de/forum/phpBB2/<br />
Seite 2
Basisliteratur<br />
Literaturliste<br />
� A. Kemper, A. Eikler: “<strong>Datenbanksysteme</strong>. Eine Einführung”, Oldenbourg, 2006 (6. Auflage).<br />
� G. Saake, A. Heuer: “Datenbanken Konzepte und Sprachen”, mitp. 2008.<br />
� G. Vossen: “Datenmodelle, Datenbanksprachen und Datenbankmanagement-Systeme”,<br />
Oldenbourg, 2000.<br />
� Jeffrey D. Ullman, Jennifer D. Widom: A First Course in <strong>Database</strong> <strong>Systems</strong>, Prentice Hall,<br />
2001.<br />
� Ramez A. Elmasri, Shamkant B. Nava<strong>the</strong>: Grundlagen von <strong>Datenbanksysteme</strong>n, Pearson<br />
Studium 2005.<br />
� Gunter Saake, Kai-Uwe Sattler: "Datenbanken und Java. JDBC, SQLJ und ODMG", dpunkt<br />
Verlag, 2003.<br />
Spezialliteratur<br />
� Gerhard Weikum, Gottfried Vossen: Transactional Information <strong>Systems</strong>: Theory, Algorithms,<br />
and <strong>the</strong> Practice <strong>of</strong> Concurrency Control, Morgan Kaufmann, 2001.<br />
� Serge Abiteboul, Richard Hull, Victor Vianu: Foundations <strong>of</strong> <strong>Database</strong> <strong>Systems</strong>, Addison-<br />
Wesley, 1995.<br />
Seite 3
Wichtige Zeitschriften und Konferenzen<br />
Zeitschriften:<br />
� ACM Transactions on <strong>Database</strong> <strong>Systems</strong> (TODS)<br />
� The VLDB Journal<br />
� IEEE Transactions on Knowledge and <strong>Database</strong> Engineering (TKDE)<br />
� Information <strong>Systems</strong><br />
Wichtige Konferenzen:<br />
� Int. Conf. on Very Large Data Bases (VLDB)<br />
� ACM SIGMOD Int. Conf. on Management <strong>of</strong> Data (SIGMOD)<br />
� ACM SIGACT-SIGMOD Principles <strong>of</strong> <strong>Database</strong> <strong>Systems</strong> (PODS)<br />
� IEEE Int. Conf. on Data Engineering (ICDE)<br />
� Int. Conf. on Extending <strong>Database</strong> Technology (EDBT)<br />
Online<br />
� http://citeseer.ist.psu.edu/<br />
Seite 4
Vorläufiges Inhaltsverzeichnis<br />
1. Einführung<br />
2. Konzeptioneller Datenbankentwurf<br />
3. Relationales Modell<br />
Relationale Algebra, Tupelkalkül, Erweiterte Relationale Algebra<br />
4. SQL: Die relationale Datenbanksprache<br />
5. Anwendungsprogrammierung<br />
6. Entwurfs<strong>the</strong>orie<br />
7. Transaktionskonzepte u. Fehlerbehandlung<br />
8. Indexstrukturen<br />
9. Anfrageverarbeitung<br />
10.Data Warehouse<br />
11.XML-Datenbanken<br />
Seite 5
1. Einführung<br />
Einführung<br />
� <strong>Datenbanksysteme</strong> (DBS) werden genutzt zur rechnergestützten Verwaltung großer<br />
Datenbestände, die auf nichtflüchtigen Speichermedien abgelegt werden.<br />
– Daten liegen i. A. auf großen Magnetplattenspeicher<br />
� Datenbanksystem besteht aus<br />
– Datenbankverwaltungssystem (engl. database management system, DBMS)<br />
Dahinter verbirgt sich die S<strong>of</strong>tware zur Verwaltung von Daten.<br />
– Datenbank<br />
Darunter versteht man die zu verwaltenden Daten und andere Hilfsdaten (z. B. Indexe und<br />
Metadaten). Eine Datenbank stellt eine logische Einheit dar.<br />
Benutzer<br />
Dateneingabe<br />
Anfragen Antworten<br />
<strong>Database</strong> Management System (DBMS)<br />
Datenbank<br />
Seite 6
Anwendungen von <strong>Datenbanksysteme</strong>n<br />
� Implementierung anwendungsspezifischer Informationssysteme durch <strong>Datenbanksysteme</strong><br />
– Beispiel: SAP<br />
� Klassische Anwendungen<br />
– Bankinformationssystem:<br />
Verwaltung der Kunden, ihre Konten, …<br />
– Versicherungsinformationssystem:<br />
Verwaltung der Kunden, ihre Verträge, …<br />
� Neuartige Anwendungen<br />
– Biologie:<br />
Gen-Datenbanken<br />
– Geo-Datenbanken<br />
Kataster, Leitungsnetzwerke wie z. B. bei Energieversorger<br />
– Content-Managementsysteme<br />
Text-Dokumente wie z. B. Artikel, Zeitschriften, Bücher<br />
– Multimedia-Informationssysteme:<br />
Bilder, Videos<br />
Einführung<br />
Seite 7
Einführung<br />
Als es noch keine <strong>Datenbanksysteme</strong> gab, …<br />
� Entwicklung von DBS setzte erst in den frühen 60er Jahre ein. Zuvor wurden vornehmlich<br />
einfache Dateisysteme benutzt.<br />
Beispiel für die Datenverarbeitung in einer Versicherung:<br />
� Drei Kundenberater Alfred, Beatrice und Carlo, die je nach Art des<br />
Versicherungstyps Kunden betreuen.<br />
� Jeder der Kundenberater benutzt für den Zugriff auf die<br />
Kundendaten ein eigenentwickeltes Programm<br />
� Jeder Berater hat seine eigene Kundendatei<br />
KB Alfred<br />
KB Beatrice<br />
KB Carlo<br />
Programm<br />
KundenVonA<br />
Programm<br />
KundenVonB<br />
Programm<br />
KundenVonC<br />
Seite 8
Anwendungsprogramme<br />
� Anwendungsprogramm (AWP)<br />
– Ein Programm, das direkt durch den Benutzer oder eine spezifische<br />
Anwendungskomponente aufgerufen wird.<br />
� Beispiel (statt wie früher üblich Cobol oder PL1 benutzen wir Java)<br />
import java.io.*;<br />
class Anfrage1 {<br />
public static void main(String[] args) throws IOException {<br />
int index = Integer.parseInt(args[0]);<br />
float tmp, limit = Integer.parseFloat(args[1]);<br />
}<br />
}<br />
Einführung<br />
RandomAccessFile raf = new RandomAccessFile("feld.myf", "r");<br />
while (index*4 < raf.length()) {<br />
raf.seek(index * 4);<br />
index++;<br />
tmp = raf.readFloat();<br />
if (tmp > limit)<br />
System.out.println(raf.readFloat());<br />
raf.close();<br />
Seite 9
Probleme der frühen Datenverarbeitung<br />
Einführung<br />
� Direkte Erzeugung und Verarbeitung der Daten erfolgte im AWP unter Verwendung von<br />
Dateien<br />
– kein standardisiertes Speicherungsformat<br />
– hoher Aufwand beim Austausch von Daten verschiedener Benutzern<br />
– mehrfache und unkoordinierte Verwaltung der Daten<br />
– häufige Inkonsistenzen im Datenbestand<br />
– hoher Aufwand bei der Verknüpfung von Daten aus mehreren Dateien<br />
� Zugriff auf Daten erfolgt explizit im AWP<br />
– hoher Aufwand für die Entwicklung einer großen Anzahl maßgeschneiderter, aber auch<br />
unflexibler Programme<br />
– Programmcode zur Optimierung des Datenzugriffs durch den Anwender<br />
� Dateninkonsistenzen bei gleichzeitigem Zugriff durch mehrere Benutzer<br />
� Unzureichende Möglichkeiten beim Datenschutz<br />
Seite 10
Anforderungen an ein Datenbanksystem<br />
Gemeinsame Datenbasis und Mehrbenutzerbetrieb<br />
� Gemeinsam genutzte, persistente Datenbasis auf dem Externspeicher<br />
– Zugriff der Benutzer und der AWP auf einen gemeinsam verwalteten Datenbestand<br />
� Kontrollierte Datenredundanz<br />
– Vermeidung von Kopien derselben Daten durch integrierte Verwaltung aller Daten.<br />
� Mehrbenutzerbetrieb<br />
– Gleichzeitiger Zugriff mehrerer Benutzer auf ihre Daten<br />
– Virtuelles Einbenutzersystem<br />
Korrek<strong>the</strong>it und Qualität der Daten<br />
Einführung<br />
� Datenintegrität<br />
– Unterstützung von Integritätsbedingungen zur Gewährleistung der Korrek<strong>the</strong>it und<br />
Vollständigkeit der Daten<br />
– Automatische Überprüfung der Bedingungen beim Einfügen, Ändern und Löschen der<br />
Daten<br />
Seite 11
Einführung<br />
� Datenkonsistenz<br />
– Automatische Sicherstellung der Datenkonsistenz auf Basis der Integritätsbedingungen<br />
� Datenschutz<br />
– Zugriffskontrolle durch Au<strong>the</strong>ntisierung und Verschlüsselung<br />
– Schutz der Datenbank vor nicht-autorisierten Zugriff<br />
� Fehlerbehandlung<br />
– Schutz vor den Auswirkungen von Systemfehlern<br />
– Wiederanlauf des <strong>Systems</strong> (Recovery): automatisches Wiederherstellen des zuletzt<br />
aktuellen, konsistenten Datenbankzustands mittels von Log-Dateien<br />
– Anlegen von Sicherungskopien für den Fall der Zerstörung eines Speichermediums<br />
S<strong>of</strong>twareentwicklung mit DBMS<br />
� Schnelle Entwicklung von neuen Anwendungen<br />
– unter Ausnutzung einer mächtigen Infrastruktur<br />
� Flexible und schnelle Anpassung von Programmen bei Änderungen im Datenbestand<br />
– Verteilung der Daten über mehrere Platten<br />
– Änderung der Speicherorganisation<br />
– Änderung des Typs der Daten<br />
Seite 12
� Bereitsstellung verschiedener Benutzerschnittstellen<br />
– Ad-hoc Anfragesprachen für interaktive Benutzer<br />
– Programmierschnittstellen für die Erstellung von AWP<br />
– Menügesteuerte, einfach zu benutzende Schnittstelle (GUI)<br />
– Spezieller Zugang für Administrator (z. B. zur Datendefinition)<br />
Performanz<br />
� Schneller Datenzugriff<br />
– Mächtige Sammlung von Werkzeugen zur effizienten Speicherung und<br />
Anfrageverarbeitung externer Datenquellen.<br />
– Indexstrukturen für Plattenspeicher<br />
– Effiziente Algorithmen zum externen Sortieren<br />
� Effektive Anfragebearbeitung<br />
– Übersetzung und Optimierung von Anfragen<br />
– Anfrageoptimierung mit dem Ziel eines hohen Durchsatzes (Anfragen/Sekunde)<br />
Einführung<br />
Seite 13
Nach einer Umstrukturierung ...<br />
� Zugriff auf die Datenbank nur über ein DBMS<br />
� Es gibt nur einen zentralen Datenbestand<br />
– (eigentlichen) Daten<br />
– Metadaten (Daten über die Daten)<br />
– Funktionen<br />
Alfred Carlo Beatrice<br />
DBMS<br />
DB<br />
Einführung<br />
Seite 14
Datenabstraktion<br />
DBS besitzt mehrere Abstraktionsstufen:<br />
� Externe Ebenen: beschreiben den Teil der DB, der für<br />
einen Benutzer (oder eine Benutzergruppe) relevant ist.<br />
� Konzeptionelle Ebene gibt an, welche Daten und<br />
welche Beziehungen in der DB vorhanden sind<br />
� Physisches Ebene beschreibt, wie die Daten<br />
physisch abgelegt sind (physisches Datenmodell)<br />
Datenbankschema<br />
� Enwurf der Datebank bzgl. der drei Ebenen:<br />
– externe Schemata<br />
– ein konzeptionelle Schema<br />
– ein physisches Schema.<br />
� AWP greifen über ein externes Schema auf die Daten eines DBS zu.<br />
Datenbankzustand<br />
� Konkrete Instanz, die dem Datenbankschema folgt.<br />
AWP<br />
externe<br />
Ebenen<br />
konzeptionelle<br />
Ebene<br />
physische<br />
Ebene<br />
Einführung<br />
Seite 15
Datenunabhängigkeit<br />
Einführung<br />
� bezeichnet die Eigenschaft, das Schema in einer Ebene zu ändern, ohne dabei das Schema der<br />
Daten in der darüber liegenden Ebene zu beeinflussen.<br />
� Logische Datenunabhängigkeit:<br />
– Änderungen an der konzeptionellen Ebene haben keine<br />
Auswirkungen auf die externe Ebene und damit auch<br />
nicht auf die AWP.<br />
– Beispiel:<br />
Daten bei der Kont<strong>of</strong>ührung sollen um das Attribut<br />
“Uhrzeit” erweitert werden.<br />
� Physische Datenunabhängigkeit:<br />
– Änderungen an der physischen Ebene haben keine<br />
Auswirkungen auf die konzeptionelle Ebene und<br />
damit auch nicht auf die externe Ebenen und die AWP.<br />
– Beispiele:<br />
Der Datenbestand “Kont<strong>of</strong>ührung” soll statt in einer<br />
Datei auf mehrere Dateien verteilt gespeichert werden.<br />
AWP<br />
externe<br />
Ebenen<br />
konzeptionelle<br />
Ebene<br />
physische<br />
Ebene<br />
Der Algorithmus für das externe Sortieren wird neu implementiert.<br />
Ein Suchbaum soll aufgebaut werden, um schneller Anfragen zu beantworten.<br />
Seite 16
Datenmodelle<br />
� Ein Datenmodell ist ein Formalismus zur Beschreibung und Definition<br />
– von Daten<br />
– und von Operationen zur Datenmanipulation.<br />
Dies beinhaltet nicht nur die Syntax, sondern insbesondere auch die Semantik!<br />
� Typischerweise besitzt ein DBS zumindest zwei Datenmodelle:<br />
– physisches Datenmodell: zur speicher-orientierten Repräsentation der Daten<br />
– logisches Datenmodell: zur benutzer-orientierten Repräsentation der Daten<br />
� logische Datenmodelle sind<br />
– objekt-orientiert, z. B.<br />
Entity-Relationship Modell<br />
objektorientiertes Modell<br />
– satz-orientiert, z. B.<br />
relationales Datenmodell<br />
Netzwerk-Datenmodel<br />
hierarchisches Datenmodell<br />
Einführung<br />
Seite 17
Sprachen in DBS<br />
Datendefinitionssprache (DDL = data definition language)<br />
� Sprache zur Manipulation des Datenbankschemas<br />
� Verwaltung von Meta-Daten zur Beschreibung des Schemas (data dictionary)<br />
� Spezifikation von “lästigen” Implementierungsdetails<br />
Datenmanipulationssprache (DML = data manipulation language)<br />
Einführung<br />
� Funktionalität:<br />
– Einfügen, Löschen und Ändern von Datenobjekten in (aus) der Datenbank<br />
– Suche nach Datenobjekten in der Datenbank<br />
� Anfragesprachen sind i.a. deklarativ<br />
– Benutzer spezifiziert nur, was für Daten gesucht werden, aber nicht wie die Daten<br />
gefunden werden sollen.<br />
� Herausforderung<br />
– Anfrage, die ein Benutzer auf seiner externen Ebene deklarativ formuliert hat, wird in<br />
eine effiziente, imperative Anfrage übersetzt, die auf Objekte der physischen Ebene<br />
aufsetzt.<br />
Seite 18
naiver<br />
Benutzer<br />
Code des<br />
Anwenderprogramms<br />
Komponenten eines DBMS<br />
Anwendungsprogrammierer<br />
Precompiler<br />
der DML<br />
Dateisystem<br />
Dateien Dateien Daten-<br />
Dictionary<br />
Compiler<br />
der DML<br />
ad-hoc<br />
Anfrager<br />
Datenbank<br />
Manager<br />
Datenbankadministrator<br />
Compiler der<br />
Datendefinitionssprache<br />
Einführung<br />
Seite 19
Probleme heutiger Datenbanken<br />
� Neue Formen der Datenerfassung<br />
– Sensoren<br />
– Ticker<br />
– Anbindung von Web-Datenquellen<br />
� Dadurch ergeben sich sehr große und ständig wachsende Datenbanken<br />
– AT&T (2005)<br />
Größe<br />
• 330 TByte<br />
• 1,8 Billionen Elemente<br />
– UPS (2005)<br />
Systemlast (Maximum)<br />
• 315000 Anfragen/Sekunde<br />
– Steigerungsrate von 2003 bis 2005: Faktor 10<br />
� Zentrale Fragestellung<br />
– Wie kann man solche Datenmengen beherrschen?<br />
– Wie kann man DBMS bauen, die solch eine hohe Last unterstützen?<br />
Einführung<br />
Seite 20