Einführung in Datenbanksysteme Donald Kossmann Systems Group ETH Zürich [email protected] www.systems.ethz.ch Termine • Vorlesungen – Mittwoch: 10 Uhr bis 12 Uhr • Übungen (Start am 3. März) – – – – Montag: 13 Uhr bis 14 Uhr (2 x) Montag: 16 Uhr bis 17 Uhr (2 x) Dienstag: 16 Uhr bis 17 Uhr Mittwoch: 13 Uhr bis 14 Uhr • Eintragen zur Übung bis 25. Februar 2008: www.dbis.ethz.ch/education/ss2008/ss08_dbs_introdb Literatur • Kemper, Eickler: Datenbanksysteme: Eine Einführung. Oldenbourg Verlag, 6. Auflage, 2006. (Kap. 1-6, 9, 12) oder • Elmasri, Navathe: Grundlagen von Datenbanksysteme (Ausgabe Grundstudium). Pearson Studium, 3. Auflage 2005. (praktisch komplett) Übersicht • Wie benutze ich ein Datenbanksystem? – Datenmodellierung (ER, UML, Theorie) – Datenbankprogrammierung (SQL) • Wie baue ich ein Datenbanksystem? – Anfrageoptimierung – Transaktionsverwaltung • Wie sieht die nächste Generation aus? – Objektorientierte, objektrelationale Datenbanken – Data Warehousing, Decision Support, Data Mining – XML, verteilte Datenbanken, WWW Vorlesungsplan Week No. Date (Mi) Topic Lecture Übungen Topic 1 20.2.2008 Einführung, DB Architekturen - 2 27.2.2008 ER Modellierung I - 3 5.3.2008 ER Modellierung II ER Modellierung, Start Projekt 4 12.3.2008 Relationales Modell ER, Modellierung 5 19.3.2008 SQL I Relationales Modell 6 2.4.2008 SQL II SQL 7 9.4.2008 SQL III SQL 8 16.4.2008 Integritätsbedingungen - (Sechseläuten) 9 23.4.2008 Entwurfstheorie I Projekt: Etappe I 30.4.2008 Entwurfstheorie II Integritätsbed. 10 11 7.5.2008 Entwurfstheorie III 12 14.5.2008 Transaktionsbegriff Entwurfstheorie (?) 13 21.5.2008 Sicherheit Transaktionen 14 28.5.2008 Ausblick Ende Projekt II 15 ??.?.2008 - Final Klausur Entwurfstheorie Hinweise zu Übungen • Kein Testat (!) • Projekt – Gruppen von ca. drei Studierenden – Pflicht (sonst keine Zulassung zur Klausur) – Keine Note • Übungen – Ausgabe in der Vorwoche – Besprechung in der Woche darauf – Bitte vorbereiten! Was ist ein Datenbanksystem? • Ein Datenbanksystem ist ein Werkzeug zur Entwicklung von datenintensiven Anwendungen: – großer Datenbestand – große Datenströme Vision • Alles Wissen dieser Welt elektronisch speichern und jederzeit und an jedem Ort jedem autorisierten Benutzer zur Verfügung stellen. • Status: Technologie ist da (Karteikästen). Das Modell fehlt (Beschriftung der Kästen). Typische Anwendungen • Bank (Buchungen Kontoverwaltung) • Bibliothek (Volltextsuche, Entleihe) • Redaktionssysteme im Internet (Dokumente erstellen, Struktur einer Website) • E-Business (Auftrag, Katalog) • ERP (Personal, Buchhaltung, Controlling) • Decision Support (statistische Auswertungen) Motivation für den Einsatz eines Datenbanksystems • Redundanz und Inkonsistenz • Beschränkte Zugriffsmöglichkeiten des Filesystems • Probleme beim Mehrbenutzerbetrieb • Verlust von Daten bei Systemausfällen • Sicherheitsprobleme / Authorisierung • Hohe Entwicklungskosten von Anwendungen Architekturen und Ausprägungen • • • • • Großrechner Client-Server Multi-Tier Architekturen Parallele Datenbanksysteme Verteilte, Peer-to-peer Datenbanken Großrechner einfache Textinterfaces zur Administration Terminals Hier spielt die ganze Musik Batch Jobs Großrechner (Anwendung + DB) Client-Server Anwendungslogik, GUIs Client Client Datenhaltung Datenbankserver Vorteile von Client/Server • Skalierbarkeit: Clientrechner übernehmen einen Teil der Last – je mehr Nutzer desto mehr Clientrechner • Verfügbarkeit: Hardware am Server kann redundant ausgelegt werden • Sicherheit: Beschütze Server und Zugang zum Server • Administrierbarkeit: Backups nur am Server • Nachteil: Komplexität (Caching, usw.) Three-Tier PC PC PC ApplicationServer PC ApplicationServer Datenbankserver PC Datenbanken im Web Browser Browser Browser Browser Browser Browser Internet Web-Server Web-Server ApplicationServer Web-Server ApplicationServer Datenbankserver Multi-Tier-Architekturen • Schichtenarchitektur: – Jede Ebene implementiert einen anderen Aspekt (Datenbank, Anwendungen, GUI, ...) – Unterschiedliche Anbieter für einzelnen Schichten (Oracle für die Datenbank, sd&m für die Anwendung, Apache für den Webserver, Microsoft fürs GUI) • Jede Schicht kann auf einem eigenen Rechner implementiert werden. Es können aber auch mehrere Schichten auf einem Rechner installiert werden. • Skalierbarkeit auf jeder Schicht bis auf Datenbank. Paralleles Datenbanksystem PC PC PC ApplicationServer DB1 PC ApplicationServer DB2 DB3 PC Paralleles Datenbanksystem • Das Datenbanksystem selber ist aus mehreren Knoten (Festplatten, CPUs) aufgebaut. Die Knoten sind durch ein schnelles Netzwerk verbunden. • Ziele: – – – – Höheren Durchsatz (Inter-Query Parallelität) Niedrigere Antwortzeiten (Intra-Query Parall.) Höhere Verfügbarkeit Kosten, Erweiterbarkeit, Skalierbarkeit • Wichtig: Transparenz Verteiltes Datenbanksystem DB1 Internet /Intranet Client DB2 Client DB3 Verteilte Datenbanken • Die einzelnen Datenbanken sind autonom und durch ein langsames, instabiles Netzwerk verbunden. Zugriff von überall auf alles möglich. • Großen Organisationen mit vielen Filialen. • Prinzip: Speichere Daten, wo sie gebraucht werden. Eventuell: Replikation. • Transparenz: – Benutzer weiß nicht, wo Kopien, welcher Daten liegen. Aus Sicht des Benutzers ist der Zugriff auf das gesamte System wie bei einem zentralen System. Stream Data Management (Hub) DB Stream Data Management • „Am Anfang war das Wasser…“ „Alles ist im Fluss …“ – Ursprung aller Daten ist ein „Eventstrom“ – (z.B. Clickstrom, Sensormessungen, …) • Daten werden „on the fly“ bearbeitet – Behandele Daten während sie fließen – Teilweise ohne Speicherung / Archivierung – Teilweise mit Speicherung und vorberechnete Reports • Selben Ziele und Abstraktionen – Z.B. SQL oder XQuery als Programmiersprache Die Abstraktionsebenen eines Datenbanksystems Datenunabhängigkeit Sicht1 Sicht 2 ... Logische Datenunabhängigkeit Logische Ebene Physische Datenunabhängigkeit Physische Ebene Änderungen auf einer Ebene betreffen die andere Ebene nicht! Sicht 3 Datenmodellierung Ausschnitt der Realen Miniwelt Manuelle/intellektuelle Modellierung Konzeptuelles Schema (ER-Schema) XML Relationales Schema Netzwerk Schema Halbautomatische Transformation Objektorientiertes Schema Modellierung einer kleinen Beispielanwendung Studenten Professoren Vorlesungen Reale Welt: Universität Konzeptuelle Modellierung MatrNr Studenten PersNr Professoren Name Name hören lesen VorlNr Vorlesungen Titel Logische Datenmodelle • Netzwerkmodell (z.B. CODASYL/COBOL) • Hierarchisches Datenmodell (IBM IMS/FastPath) • Relationales Datenmodell (SQL) • Objektorientiertes Datenmodell (ODMG 2.0) • Semistrukturiertes Datenmodell (XML) • Deduktives Datenmodell (Datalog) Das relationale Datenmodell Studenten MatrNr Name 26120 Fichte 25403 Jonas ... ... hören MatrNr VorlNr 25403 5022 26120 5001 ... ... Vorlesungen VorlNr Titel 5001 Grundzüge 5022 Glaube und Wissen ... ... Select Name From Studenten, hören, Vorlesungen Where Studenten.MatrNr = hören.MatrNr and hören.VorlNr = Vorlesungen.VorlNr and Vorlesungen.Titel = `Grundzüge´; update Vorlesungen set Titel = `Grundzüge der Logik´ where VorlNr = 5001; Architekturübersicht eines DBMS „Naive“ Benutzer Anwendung Fortgeschrittene Benutzer AnwendungsProgrammierer Datenbankadministratoren Interaktive Anfrage Präcompiler Verwaltungswerkzeug DML-Compiler DDL-Compiler Anfragebearbeitung Mehrbenutzersynchr. Fehlerbehandlung Datenbankmanager DBMS Schemaverwaltung Dateiverwaltung Logdateien Indexe Datenbasis Hintergrundspeicher Datenwörterbuch