19.01.2013 Aufrufe

Datenbanksysteme - of the AG Database-Systems - Philipps ...

Datenbanksysteme - of the AG Database-Systems - Philipps ...

Datenbanksysteme - of the AG Database-Systems - Philipps ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!