Einführung in Datenbanksysteme
Transcrição
Einführung in Datenbanksysteme
Einführung in Datenbanksysteme Donald Kossmann Institut für Informationssysteme ETH Zürich [email protected] www.dbis.ethz.ch Termine • Vorlesungen – Mittwoch: 10 Uhr bis 12 Uhr • Übungen (Start am 2. April) – – – – Montag: 13 Uhr bis 14 Uhr (3 x) Dienstag: 15 Uhr bis 16 Uhr Dienstag: 16 Uhr bis 17 Uhr Mittwoch: 13 Uhr bis 14 Uhr • Eintragen zur Übung bis 28. März 2006: www.dbis.ethz.ch/education/ss2007/07_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 21.3.2007 Einführung, DB Architekturen - 2 28.3.2007 ER Modellierung I - 3 4.4.2007 ER Modellierung II ER Modellierung, Start Projekt 4 11.4.2007 Relationales Modell - 5 18.4.2007 SQL I - 6 25.4.2007 SQL II ER, Relat. Modell 7 2.5.2007 SQL III SQL (Maifeiertag!) 8 9.5.2007 Integritätsbedingungen SQL 9 16.5.2007 Entwurfstheorie I Ende Projekt I 10 23.5.2007 Entwurfstheorie II Entwurfstheorie 11 30.5.2007 Entwurfstheorie III - 12 6.6.2007 Transaktionsbegriff Entwurfstheorie 13 13.6.2007 Sicherheit Transaktionen 14 20.6.2007 Ausblick Ende Projekt II 15 ??.?.2007 - Final Klausur 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) Anwendungslogik, GUIs Client-Server 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. 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 Vorlesungen Professoren Reale Welt: Universität Konzeptuelle Modellierung MatrNr Name Studenten Professoren hören Name lesen VorlNr Vorlesungen PersNr 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 hören Vorlesungen MatrNr Name 26120 Fichte 25403 Jonas ... ... MatrNr VorlNr 25403 5022 26120 5001 ... ... 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