Wissensmanagement in der Bioinformatik Ulf Leser Relationale Datenbanken Data Warehousing Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 2 Relationale Datenbanken Relationales Modell und relationale Operatoren SQL Anfragebearbeitung Indexstrukturen ER-Modellierung Normalformen • Wer das kennt ... • • • • • • • Inhalt dieser Vorlesung Speicherverwaltung Transaktionsmanagement Anfragebearbeitung Userverwaltung Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 • Oracle, DB2, Informix, Sybase, NCR Terada, SQL-Server • PostGreSQL, Interbase, mySQL, ... – Systeme • • • • – Serverbasierte Software – Ein RDBMS – viele RDB – Aufgaben 3 • Relationale Datenbank Management Systeme (RDBMS) Relationale Datenbank Externes Schema Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 4 Physisches Modell (Indexierung, Speicherung) Internes Schema Sichten Logisches Modell (Tabellen, Attribute, Anfragen Externes Schema Konzeptionelles Schema Externes Schema Schichtenmodell Listener Server Konsistenz Multiplexing Parallelisierung Lastverteilung Verwaltung .... Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 Andere Datenbank Native (SQL*Plus, Native (SQL*Plus, OCI) Native (SQL*Plus, OCI) OCI) JAVA (JDBC) JAVA (JDBC) JAVA (JDBC) Client-Server Konzept Sekundärspeicher 5 Tupel Rows Zeilen Stefanie Petra Andreas 2 5 7 ... Zwickel Weger Meier Müller Nachname Spalten Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 ... Peter Vorname 1 ... P_ID Mitarbeiter – Tabellenname – Attribute – Datentypen ... 44 28 34 32 Alter ... 6 80443 München 80223 München 11202 Berlin 10101 Berlin Adresse Attribute • Repräsentation aller Daten in Tabellen Relationales Datenmodell Andreas 7 7 5 ... p_id SAP ... eCommerce DWH name ... Zwickel Weger Meier Müller nachname ... RAG Metro BMW kunde ... 44 28 34 32 alter Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 1 2 ... 1 1 proj_id projekte Petra 5 ... Stefanie 2 ... Peter vorname 1 p_id mitarbeiter Tabellen ... Abgeschlossen Läuft Akquisition status ... 80443 München 80223 München 11202 Berlin 10101 Berlin adresse 7 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 8 – Die Spalten Vorname und Nachname aller Zeilen des kartesischen Produkts von Mitarbeiter und Projekte, bei denen Mitarbeiter.P_ID=Projekte.P_ID und Status=„Läuft“ • Komposition von Operationen – Alle Zeilen von Mitarbeiter verknüpft mit jeweils allen Zeilen von Projekte • Kartesisches Produkt – Alle Mitarbeiter-Spalten Vorname, Nachname • Projektion – Alle Zeilen von Mitarbeiter mit Alter>40 und Name=„Müller“ • Selektion Operationen • • • • • • M.nachname, M.vorname mitarbeiter M, projekte P M.p_id = P.p_id AND P.status=„läuft“ Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 SQL: Structured Query Language ANSI-SQL, SQL-92, SQL-3 Deklarativer Charakter: Was, nicht wie Vier Grundbefehle: Insert, Update, Delete, Select DDL versus DML Andere Sprachen: Tupel/Domänenkalkül, relationale Algebra, QBE SELECT FROM WHERE SQL – Grundkonzepte 9 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – Bulk-Insert INSERT INTO ... SELECT ... – Insert in mehrere Tabellen: INSERT INTO ... INTO ... INTO ... • Erweiterungen INSERT INTO projekte (proj_id,p_id,name) VALUES (1, 3, „BMW“); INSERT INTO mitarbeiter VALUES (1, „Peter“, „Müller“, 38, „10101 Berlin“); • Einfügen von Werten in Tabelle • Prinzipiell ein Tupel pro Insert Insert 10 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – UPSERT • Erweiterungen UPDATE tabelle SET ... = (SELECT ... FROM ... WHERE) WHERE id in (SELECT ... FROM ... WHERE) • Typisches Muster UPDATE projekte SET status = „abgebrochen“, kunde = kunde||“-insolvent“ WHERE kunde=„Grundig“ • Ändern von Werten in Tabellen • Ändert mehrere Werte in einer Tabelle Update 11 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 12 • Löschen ist eine performancekritische Operation DELETE FROM projekte WHERE id in (SELECT ... FROM ... WHERE) • Typisches Muster DELETE FROM projekte WHERE status=„abgeschlossen“ • Löschen von Tupeln in einer Tabellen Delete M.nachname, M.vorname mitarbeiter M, projekte P M.p_id = P.p_id AND P.status=„läuft“ M.nachname, M.vorname mitarbeiter M, projekte P M.p_id = P.status SELECT FROM WHERE SELECT FROM WHERE ? Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 13 • Ergebnis ist Tabelle • Ausführung ist Sache des RDBMS - Optimierung vorname, nachname mitarbeiter alter<30 SELECT FROM WHERE • Selektieren von Werten aus mehreren Tabellen Select vorname, nachname mitarbeiter M EXISTS ( proj_id projekt P P.p_id = M.p_id 14 SELECT X.nachname, X.status FROM ( SELECT * FROM mitarbeiter M, projekte P WHERE M.p_id=P.p_id) X WHERE X.status=„Akquisition“ SELECT P1.vorname, P1.nachname FROM projekte P1, projekte P2 WHERE P1.vorgaenger=p2.proj_id AND P2.status=„abgeschlossen“ SELECT FROM WHERE SELECT FROM WHERE Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – „In-Line Views“ – Nützlich bei Top-Ten / Sortieranfragen • SQL in FROM Klausel – „Begrenzte Rekursion“ • Self-Join – Korreliert oder nicht – Umschreiben möglich? • Subqueries Varianten name, nachname, vorname mitarbeiter M, projekte P M.p_id=P.p_id P.name, M.nachname,M.vorname COUNT(*), SUM(alter)/COUNT(*) mitarbeiter M, projekte P M.p_id=P.p_id P.proj_id Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 SELECT FROM WHERE ORDER BY • ORDER BY SELECT FROM WHERE GROUP BY • Aggregation und GROUP BY Weitere Operationen 15 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 16 CREATE TABLE mitarbeiter ( p_id NUMBER, vorname VARCHAR2(100), nachname VARCHAR2(100), alter NUMBER(2) CHECK (alter>0 AND alter<150), adresse VARCHAR2(1000) ); – Tabellen, Indexen, Views, ... – Administration: Tablespaces, Segmente, Rollen – Benutzerverwaltung: User, Gruppen, Rechte, ... • DML: Data Manipulation Language • DDL: Data Definition Language • Definition von DDL • Exponentiell viele Expandieren von Views Parsen der Anfrage (Syntax) Überprüfen der Elemente (Semantik) Berechnung von Ausführungsplänen Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – Ausführung • Regelbasierter Optimierer • Kostenbasierter Optimierer – Wahl des optimalen Ausführungsplans – – – – • Prinzipieller Ablauf Anfrageübersetzung und -optimierung 17 mitarbeiter projekte σ(status=„abg.“) 18 mitarbeiter π(p_id,nachname, vrname) NLJ(p_id=p_id) π(name,nachname, vorname) name, nachname, vorname mitarbeiter M, projekte P M.p_id=P.p_id AND P.status=„abgeschlossen“ Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 projekte NLJ(p_id=p_id) σ(status=„abg.“) π(name, nachname) SELECT FROM WHERE Ausführungspläne Algebraische Anfrageumformung Joinreihenfolge Joinmethode (Nested Loop, Sort-Merge, Hash ...) Indexzugriff oder Full-Table-Scan (7% Regel) Operatorreihenfolge ... Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – Minimierung von Zwischenergebnissen – Minimierung von Sekundärspeicherzugriff • Heuristische Ziele 19 – Einbeziehung von Werteverteilungen, Tabellengrößen, Anzahl NULL-Werten, Histogrammen, Selektivität, ... • Kostenbasierter Optimierung – – – – – – • Freiheitsgrade Ausführungspläne AB GHIJ LMN Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 DE CF K PQRS OT UVW 20 • Knoten enthalten höchstens 2m Schlüssel • Knoten enthalten mindestens m Schlüssel, die Wurzel mindestens 1 Schlüssel • Knoten mit x Schlüsseln - x+1 Kinder • Balancierter Baum: Alle Blätter haben gleiche Tiefe • B*: Daten nur in Blättern Balancierter B und B* Baum - Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 21 Elemente müssen geordnet sein B Bäume degenerieren bei vielen Duplikaten Sequentieller Blockzugriff wird verhindert (7%) Zusammengesetzte Indexe duplizieren Tabellen Indexaktualisierung kostet Zeit + Sehr schneller Zugriff auf einzelne Elemente (O(log(n)) + Bereichsanfragen durch B* Baum + Indexierung von Attributkombinationen Indexstrukturen nachname arbeitet_in 22 kunde p_id vorname Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – Beziehungen – Attribute proj_id Projekte p_id Mitarbeiter Relationales Modell sehr semantikarm Modellieren in Tabellen und Joins wenig intuitiv Modellierungssprachen: ER, EER, UML, ... Entity-Relationship Modell – Entities • • • • ER-Modellierung Student Professor name ... ... s_id 1 2 name ... ... student p_id 10 11 professor ... ... ... ... ... ... s_id 1 2 1 2 lehrt P_id 10 10 11 11 23 Verschmelzen der Tabelle oder FK-Beziehung Fremdschlüsselbeziehung Brückentabelle mit zwei Fremdschlüsselbeziehungen Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 lehrt – 1:1 – 1:n – m:n • Entity – Tabelle • Attribute – Attribute dieser Tabelle • Beziehung Übersetzung in relationales Modell Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – Datenbankentwurf – Armstrongkalkül – Ziel: Redundanzfreies Schema • Zerlegung nach funktionalen Abhängigkeiten – Minimale Menge von Attributen, die alle anderen Attribute einer Tabelle funktional bestimmen • Schlüsselkandidaten – p_id → Vorname, Nachname, Alter ... – proj_id → Kunde, Status, ... • Attribute hängen funktional voneinander ab Normalformen 24 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 – R in 1NF – Kein Attribut A hängt von A‘∉P ab – Schlecht: mitarbeiter(p_id,plz,ort) • Dritte Normalform (3NF) – R ist in 1NF – Kein Attribut A hängt von P‘ ⊂ P funktional ab – Schlecht: lehrt(p_id,s_id,termin,stud_name) • Zweite Normalform (2NF) – Alle Attribute von R sind atomar (Adresse!) • Relationenschema R, Primärschlüssel P • Erste Normalform (1NF) Normalformen (nicht exakt ...) 25 Ulf Leser: Data Warehousing, Vorlesung, SoSe 2003 26 • Transaktionsverarbeitung, ACID • Datenintegrität • Theorie: Relationenkalkül, algebraische Umformungen, Armstrongkalkül, ... • Datensicherheit • Views • Block- / Buffer- / Speichermanagement, Caching • Datenmodellerweiterungen: EER, NF2, objektrelationale und objektorientierte Systeme • Programmierung: Trigger, PL/SQL, JDBC, ... Weitere Themen