Datenbanksysteme Donald Kossmann TU München Ü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 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) 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.