Informationsintegration Eine sehr kurze Übersicht über relationale Datenbanken Ulf Leser Wissensmanagement in der Bioinformatik Was ist Informationsintegration? • Informationsintegration bezeichnet die Zusammenführung des Inhalts verschiedener Datenquellen an einer Stelle? • Informationsintegration bezeichnet die korrekte, vollständige und effiziente Zusammenführung des Inhalts verschiedener, verteilter, autonomer und heterogener Quellen an einer Stelle zu einer einheitlichen und strukturierten Informationsmenge mit dem Ziel, eine effektiven Nutzung durch Nutzer und Anwendungen zu ermöglichen. Ulf Leser: Informationsintegration, Wintersemester 2006/2007 2 EAI versus Informationsintegration SCM ERP Message Broker E-Commerce Anfrage CRM E-Procurement Integriertes Informationssystem Oracle, DB2… Dateisystem Web Service Anwendung HTML Form Integriertes Info.-system Ulf Leser: Informationsintegration, Wintersemester 2006/2007 3 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 4 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 5 Warum ist es so schwer? • System-bedingte Gründe – Verschiedene Plattformen – Anfragebearbeitung über mehrere Systeme • Soziale Gründe – Finden relevanter Daten in Unternehmen – Beschaffen relevanter Daten in Unternehmen – Menschen zur Zusammenarbeit überreden • Logik-bedingte Gründe – Schema- und Datenheterogenität – Semantik von Begriffen ist immer kontextabhängig Ulf Leser: Informationsintegration, Wintersemester 2006/2007 6 Eine Schnittstelle • Integration durch Mediator – Nimmt Anfrage und berechnet Ergebnis unter Zugriff auf Quellen Ulf Leser: Informationsintegration, Wintersemester 2006/2007 7 Ablauf 1 Globale Anfrage Integrationssystem Datenquelle 1 Datenquelle 2 Datenquelle 3 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 8 Ablauf 2 Globale Anfrage Integrationssystem Anfrageübersetzung, -optimierung und -ausführung Datenquelle 1 Datenquelle 2 Datenquelle 3 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 9 Ablauf 3 Globale Anfrage Integrationssystem Anfrageübersetzung, -optimierung und -ausführung Datenquelle 1 Ergebnisintegration Datenquelle 2 Datenquelle 3 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 10 Ablauf 4 Anfrageergebnis Globale Anfrage Integrationssystem Anfrageübersetzung, -optimierung und -ausführung Datenquelle 1 Ergebnisintegration Datenquelle 2 Datenquelle 3 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 11 Inhalt dieser Vorlesung • • • • • • Relationale Datenbanken Relationales Modell und Datenbankentwurf Relationale Operatoren & Algebra SQL Anfragebearbeitung Integrität und Normalformen Ulf Leser: Informationsintegration, Wintersemester 2006/2007 12 Relationale Datenbank • Relationale Datenbank Management Systeme (RDBMS) – Serverbasierte Software – Ein RDBMS – viele RDB – Aufgaben des Servers • • • • • • Hauptspeicher- und Sekundärspeicherverwaltung Transaktionsmanagement Anfragebearbeitung und –optimierung Backup und Recovery Datenkonsistenz Userverwaltung – Systeme • Oracle, DB2 (Informix), Sybase, NCR Teradata, SQL-Server • PostgreSQL, Interbase, Berkeley-DB, DB4Objects, MySQL, Ingres, SAP-DB, Monet-DB, ... Ulf Leser: Informationsintegration, Wintersemester 2006/2007 13 Client-Server JAVA (JDBC) JAVA (JDBC) JAVA (JDBC) Native (SQL*Plus, Native (SQL*Plus, OCI) Native (SQL*Plus, OCI) OCI) Andere Datenbank Listener DB1Server Sekundärspeicher DB2Server Sekundärspeicher Konsistenz Parallelisierung Recovery Lastverteilung Authentifizierung Autorisierung .... Ulf Leser: Informationsintegration, Wintersemester 2006/2007 14 Ein Oracle-Server Ulf Leser: Informationsintegration, Wintersemester 2006/2007 15 Relationales Datenmodell • Repräsentation aller Daten in Tabellen – Tabellenname – Attribute – Datentypen • Vergleich zu UML Datenmodellen? Spalten/Attribute Mitarbeiter P_ID Zeilen/ Rows/ Tupel Vorname Nachname Alter Adresse 1 Peter Müller 32 10101 Berlin 2 Stefanie Meier 34 11202 Berlin 5 Petra Weger 28 80223 München 7 Andreas Zwickel 44 80443 München ... ... Wintersemester ...2006/2007 ... Ulf Leser: Informationsintegration, ... 16 ER-Modellierung • • • • Relationales Modell „semantikarm“ Modellieren in Tabellen wenig intuitiv Modellierungssprachen: ER, EER, UML, ... Entity-Relationship Modell Mitarbeiter – Entitytypen Projekte p_id proj_id vorname start – Attribute – Beziehungen nachname arbeitet_in Ulf Leser: Informationsintegration, Wintersemester 2006/2007 kunde 17 Uni-Schema voraussetzen Nachfolger Vorgänger MatrNr N Name Semester hören Studenten N N Titel M lesen prüfen 1 Assistenten N Fachgebiet SWS M PersNr Name M Vorlesungen N Note VorlNr arbeitenFür Rang 1 Professoren 1 PersNr Ulf Leser: Informationsintegration, Wintersemester 2006/2007 Stimmt das gerade? Name Raum 18 Entwicklung des relationalen Schemas Professoren 1 lesen N Vorlesungen 1:N-Beziehung • Initial-Entwurf Vorlesungen : {VorlNr, Titel, SWS} 1 Professoren : {PersNr, Name, Rang, Raum} lesen: {VorlNr, PersNr} Ulf Leser: Informationsintegration, Wintersemester 2006/2007 19 Verfeinerung des relationalen Schemas 1:N-Beziehung • Initial-Entwurf Vorlesungen : {VorlNr, Titel, SWS} Professoren : {PersNr, Name, Rang, Raum} lesen: {VorlNr, PersNr} • Verfeinerung durch Zusammenfassung Vorlesungen : {VorlNr, Titel, SWS, gelesenVon} Professoren : {PersNr, Name, Rang, Raum} Regel Relationen mit gleichem Schlüssel kann man zusammenfassen aber nur diese und keine anderen! Ulf Leser: Informationsintegration, Wintersemester 2006/2007 20 Ausprägungen Vorlesungen VorlNr Titel SWS Gelesen Von Professoren 5001 Grundzüge 4 2137 PersNr Name 5041 Ethik 4 2125 2125 Sokrates C4 226 5043 Erkenntnistheorie 3 2126 2126 Russel C4 232 5049 Mäeutik 2 2125 2127 Kopernikus C3 310 4052 Logik 4 2125 2133 Popper C3 52 5052 Wissenschaftstheorie 3 2126 2134 Augustinus C3 309 5216 Bioethik 2 2126 2136 Curie C4 36 5259 Der Wiener Kreis 2 2133 2137 Kant C4 7 5022 Glaube und Wissen 2 2134 4630 Die 3 Kritiken 4 2137 Professoren Rang Raum 1 lesen Ulf Leser: Informationsintegration, Wintersemester 2006/2007 N Vorlesungen 21 So geht es NICHT Vorlesungen Professoren PersNr Name 2125 Sokrates C4 226 5041 2125 Sokrates C4 226 5049 2125 Sokrates C4 226 4052 ... ... ... ... ... 2134 Augustinus C3 309 5022 2136 Curie C4 36 ?? Professoren Rang Raum 1 liest VorlNr Titel SWS 5001 Grundzüge 4 5041 Ethik 4 5043 Erkenntnistheorie 3 5049 Mäeutik 2 4052 Logik 4 5052 Wissenschaftstheorie 3 5216 Bioethik 2 5259 Der Wiener Kreis 2 5022 Glaube und Wissen 2 4630 Die 3 Kritiken 4 lesen Ulf Leser: Informationsintegration, Wintersemester 2006/2007 N Vorlesungen 22 Folgen: Anomalien Professoren Vorlesungen VorlNr Titel SWS 5001 Grundzüge 4 5041 Ethik 4 5043 Erkenntnistheorie 3 5049 Mäeutik 2 PersNr Name Rang Raum liest 2125 Sokrates C4 226 5041 2125 Sokrates C4 226 5049 4052 Logik 4 2125 Sokrates C4 226 4052 5052 Wissenschaftstheorie 3 ... ... ... ... ... 5216 Bioethik 2 2134 Augustinus C3 309 5022 5259 Der Wiener Kreis 2 2136 Curie C4 36 ?? 5022 Glaube und Wissen 2 4630 Die 3 Kritiken 4 • Update-Anomalie – Was passiert wenn Sokrates umzieht? • Lösch-Anomalie – Was passiert wenn „Glaube und Wissen“ wegfällt • Einfügeanomalie Ulf Leser: Informationsintegration, Wintersemester 2006/2007 – Curie ist neu und liest noch keine Vorlesungen 23 Beziehung „hören“ • m:n Beziehung • „Brückentabelle“ mit zwei Fremdschlüsseln vorlesung Vorlesung Student M N hört v_id 10 11 name ... ... ... ... ... student s_id 1 2 name ... ... ... ... ... Ulf Leser: Informationsintegration, Wintersemester 2006/2007 hört s_id 1 2 1 2 v_id 10 10 11 11 24 Beziehung „betreuen“ 1 Studenten N betreuen 1 Professoren Seminarthemen Note betreuen : Professoren x Studenten → Seminarthemen betreuen : Seminarthemen x Studenten → Professoren Ulf Leser: Informationsintegration, Wintersemester 2006/2007 25 Erzwungene Konsistenzbedingungen 1. Studenten dürfen bei demselben Professor bzw. derselben Professorin nur ein Seminarthema „ableisten“ 2. Studenten dürfen dasselbe Seminarthema nur einmal bearbeiten – sie dürfen also nicht bei anderen Professoren ein schon einmal erteiltes Seminarthema nochmals bearbeiten. Es sind aber folgende Datenbankzustände möglich: – Professoren können dasselbe Seminarthema „wiederverwenden“ – also dasselbe Thema auch mehreren Studenten erteilen – Ein Thema kann von mehreren Professoren vergeben werden – aber an unterschiedliche Studenten Ulf Leser: Informationsintegration, Wintersemester 2006/2007 26 Wie sieht das relationale Schema aus? 1 Studenten N betreuen 1 Professoren Seminarthemen Note • betreuen{ student, professor, thema, note} • unique( student, professor) – Jeder Student nur ein Thema pro Professor • unique( student, thema) – Jedes Thema nur einmal pro Student Ulf Leser: Informationsintegration, Wintersemester 2006/2007 27 Ausprägung der Beziehung betreuen p1 Studenten b1 p2 b2 p3 s2 b3 p4 s3 b4 s1 s4 Professoren t1 b5 Gestrichelte Linien b6 markieren illegale Ausprägungen Ulf Leser: Informationsintegration, Wintersemester 2006/2007 t2 t3 t4 Seminarthemen 28 • Relationale Operationen proj_id p_id Mitarbeiter Projekte vorname start nachname arbeitet_in anteil Ulf Leser: Informationsintegration, Wintersemester 2006/2007 29 Operationen auf Relationen/Tabellen • Selektion – Alle Zeilen von Mitarbeiter mit Alter>40 und Name=„Müller“ • Projektion – Nur die Mitarbeiter-Spalten Vorname, Nachname • Kartesisches Produkt – Alle Zeilen von Mitarbeiter verknüpft mit jeweils allen Zeilen von Arbeitet_in • Komposition von Operationen – Die Spalten Nachname und Proj_id aller Zeilen des kartesischen Produkts von Mitarbeiter und Arbeitet_in, bei denen Mitarbeiter.P_ID=Arbeitet_in.P_ID mit Anteil größer als 10% Ulf Leser: Informationsintegration, Wintersemester 2006/2007 30 Die relationale Algebra • • • • • • • • • • • • • • σ Selektion π Projektion x Kreuzprodukt ⋈ Join (Verbund) ρ Umbenennung − Mengendifferenz ÷ Division ∪ Vereinigung ∩ Mengendurchschnitt ⋊ linker Semijoin ⋉ rechter Semijoin ⋈ Left outer join ⋈ Right outer join ⋈ Full outer join Ulf Leser: Informationsintegration, Wintersemester 2006/2007 31 Der natürliche Verbund (Join) Gegeben seien: •R(A1,..., Am, B1,..., Bk) •S(B1,..., Bk, C1,..., Cn) R ⋈ S = ΠA1,..., Am, R.B1,..., R.Bk, C1,..., Cn(σR.B1=S. B1 ∧...∧ R.Bk = S.Bk(RxS)) R⋈S R−S A1 A2 ... R∩S Am B1 B2 ... S−R Bk Ulf Leser: Informationsintegration, Wintersemester 2006/2007 C1 C2 ... Cn 32 Andere Join-Arten • Linker äußerer Join L R A B C a1 b1 c1 a2 b2 c2 ⋈ Resultat C D E c1 d1 e1 c3 d2 e2 = A B C D E a1 b1 c1 d1 e1 a2 b2 c2 - - • Rechter Semi-Join L R A B C a1 b1 c1 a2 b2 c2 ⋉ C D E c1 d1 e1 c3 d2 e2 = Resultat A B C a1 b1 c1 Ulf Leser: Informationsintegration, Wintersemester 2006/2007 33 SQL – Grundkonzepte SELECT FROM WHERE • • • • • • M.nachname, A.arbeitet_in mitarbeiter M, arbeitet_in A M.p_id = A.p_id AND A.anteil > 0.1 SQL: Structured Query Language ANSI-SQL, SQL-92, SQL-99, 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, Datalog Ulf Leser: Informationsintegration, Wintersemester 2006/2007 34 Insert • Einfügen von Werten in Tabelle • Prinzipiell ein Tupel pro Insert INSERT INTO mitarbeiter VALUES (1, „Peter“, „Müller“, 38, „10101 Berlin“); INSERT INTO projekte (proj_id, name, kunde) VALUES (1, „Stammhaus-BMW“, „BMW“); • Erweiterungen – Bulk-Insert INSERT INTO ... SELECT ... – Konditionales Insert in mehrere Tabellen INSERT INTO ... INTO ... INTO ... Ulf Leser: Informationsintegration, Wintersemester 2006/2007 35 Update • Ändern von Werten in Tabellen • Mengensemantik: Ändert mehrere Werte UPDATE projekte SET status = „abgebrochen“, kunde = kunde||“-insolvent“ WHERE kunde=„Grundig“ • Typisches Muster UPDATE tabelle SET ... = (SELECT ... FROM ... WHERE) WHERE id in (SELECT ... FROM ... WHERE) • Erweiterungen – UPSERT / MERGE Ulf Leser: Informationsintegration, Wintersemester 2006/2007 36 Delete • Löschen von Tupeln in einer Tabellen DELETE FROM projekte WHERE status=„abgeschlossen“ • Typisches Muster DELETE FROM projekte WHERE id in (SELECT ... FROM ... WHERE) • Löschen ist eine performancekritische Operation • DELETE, DROP TABLE, TRUNCATE, Partitionen, ... Ulf Leser: Informationsintegration, Wintersemester 2006/2007 37 Select • Selektieren von Werten aus mehreren Tabellen SELECT FROM WHERE M.nachname, A.anteil mitarbeiter M, arbeitet_in A M.p_id = A.p_id AND a.anteil > 0.1 SELECT FROM WHERE M.nachname, P.name, A.anteil mitarbeiter M, projekte P, arbeitet_in A M.p_id = A.p_id AND A.proj_id = P.proj_id SELECT FROM WHERE M.nachname, A.anteil mitarbeiter M, arbeitet_in A M.p_id = A.proj_id ? • Ergebnis ist immer eine Tabelle • Ausführung ist Sache des RDBMS - Optimierung Ulf Leser: Informationsintegration, Wintersemester 2006/2007 38 Varianten • Subqueries – Korreliert oder nicht – Unkorrelierte Form? • Self-Join – „Begrenzte Rekursion“ • SQL in FROM Klausel – „In-Line Views“ – Nützlich bei Top-Ten / Sortieranfragen – Top Ten Anfragen? SELECT FROM WHERE SELECT FROM WHERE vorname, nachname mitarbeiter M EXISTS ( A.p_id arbeitet_in A A.p_id = M.p_id SELECT P1.name, P2.name FROM projekte P1, projekte P2 WHERE P1.vorgaenger=p2.proj_id AND P2.status=„abgeschlossen“ SELECT X.nachname, X.status FROM ( SELECT M.nachname, p.status FROM mitarbeiter, projekte, arbeitet_in WHERE M.p_id=A.p_id AND A.proj_id=P.proj_id ) X WHERE X.status=„Akquisition“ Ulf Leser: Informationsintegration, Wintersemester 2006/2007 39 Unkorrelierte versus korrelierte Unteranfragen Korrelierte Formulierung – Umformung ? select s.* from Studenten s where exists (select p.* from Professoren where p.GebDatum > s.GebDatum); Besser: Äquivalente unkorrelierte Formulierung select s.* from Studenten s where s.GebDatum < (select max (p.GebDatum) from Professoren p); • Unteranfrageergebnis kann materialisiert werden • Unteranfrage braucht nur einmal ausgewertet werden Ulf Leser: Informationsintegration, Wintersemester 2006/2007 40 Weitere Operationen • Aggregation und GROUP BY ? SELECT FROM WHERE GROUP BY proj_id, COUNT(*), SUM(alter)/COUNT(*) mitarbeiter M, arbeitet_in A, projekte P M.p_id=A.p_id AND A.proj_id=P.proj_id P.proj_id SELECT FROM WHERE GROUP BY proj_id, P.name, COUNT(*) mitarbeiter M, arbeitet_in A, projekte P M.p_id=A.p_id AND A.proj_id=P.proj_id P.proj_id • ORDER BY SELECT FROM WHERE ORDER BY P.name, M.nachname mitarbeiter M, arbeitet_in A, projekte P M.p_id=A.p_id AND A.proj_id=P.proj_id P.name, M.nachname Ulf Leser: Informationsintegration, Wintersemester 2006/2007 41 Views • Definition von „benannten“ Queries CREATE VIEW proj_pers AS SELECT P.proj_id, P.name, M.P_id, M.name, M.alter, FROM mitarbeiter M, arbeitet_in A, projekte P WHERE M.p_id=A.p_id AND A.proj_id=P.proj_id • Können viel Schreibarbeit sparen SELECT FROM GROUP BY proj_id, COUNT(*), SUM(alter)/COUNT(*) proj_pers proj_id • Verwendung für tupelgenauen Zugriffsschutz • Views werden i.d.R. syntaktisch expandiert • Erweiterungen – Materialisierte Sichten – Rekursive Views Ulf Leser: Informationsintegration, Wintersemester 2006/2007 42 DDL • DML: Data Manipulation Language • DDL: Data Definition Language • Definition von – Tabellen, Indexen, Views, ... – Administration: Tablespaces, Segmente, Rollen – Benutzerverwaltung: User, Gruppen, Rechte, ... CREATE TABLE mitarbeiter ( p_id NUMBER, vorname VARCHAR2(100), nachname VARCHAR2(100), alter NUMBER(2) CHECK (alter>0 AND alter<150), adresse VARCHAR2(1000) ); Ulf Leser: Informationsintegration, Wintersemester 2006/2007 43 Anfrageübersetzung und -optimierung • Prinzipieller Ablauf – – – – Parsen der Anfrage (Syntax) Überprüfen der Schemaelemente („Semantik“) Expandieren von Views Berechnung von Ausführungsplänen • Exponentiell viele – Wahl des optimalen Ausführungsplans • Regelbasierter Optimierer • Kostenbasierter Optimierer - Statistik – Ausführung • (Dynamisches Re-Planen?) Ulf Leser: Informationsintegration, Wintersemester 2006/2007 44 Ausführungspläne SELECT FROM WHERE M.nachname, A.anteil mitarbeiter M, arbeitet_in A M.p_id = A.p_id AND a.anteil > 0.1 π(nachname, anteil) π(nachname, anteil) NLJ(p_id=p_id) σ(anteil>0.1) NLJ(p_id=p_id) Arbeitet_in mitarbeiter σ(anteil>0.1) π(p_id,nachname) Arbeitet_in mitarbeiter Ulf Leser: Informationsintegration, Wintersemester 2006/2007 45 Ausführungspläne • Freiheitsgrade – – – – Algebraische Anfrageumformung Joinreihenfolge Joinmethode (Nested Loop, Sort-Merge, Hash ...) Access path: Indexzugriff (welcher?), Full-Table-Scan • 3, 5, 7% Regel – Operatorreihenfolge • Kostenbasierter Optimierung – Einbeziehung von Werteverteilungen, Tabellengrößen, Anzahl NULL-Werten, Histogrammen, Selektivität, ... • Heuristische Ziele – Minimierung von Zwischenergebnissen – Minimierung von Sekundärspeicherzugriff Ulf Leser: Informationsintegration, Wintersemester 2006/2007 46 Integrität • Semantisch konsistenter Zustand der Daten – Kann nur im Anwendungskontext definiert werden • Überwachung nach Möglichkeit durch RDBMS – – – – Datenmodell selber (Kardinalitäten) Referentielle Integrität (Fremdschlüssel) CHECK Constraints in DDL Trigger • Zeitpunkt der Überwachung? – Nach jeder Operation – Nach jeder Transaktion Ulf Leser: Informationsintegration, Wintersemester 2006/2007 47 Normalformen • Attribute hängen funktional voneinander ab – p_id → Vorname, Nachname, Alter ... – proj_id → Kunde, Status, ... • Schlüsselkandidaten – Minimale Menge von Attributen, die alle anderen Attribute einer Tabelle funktional bestimmen • Zerlegung nach funktionalen Abhängigkeiten – Datenbankentwurf – Ziel: Redundanzfreies Schema ohne Anomalien – Aber: Performanzsteigerung macht oftmals Denormalisierung notwendig Ulf Leser: Informationsintegration, Wintersemester 2006/2007 48 Normalformen • Relationenschema R, Schlüsselkandidaten P • Erste Normalform (1NF) – Alle Attribute von R sind atomar (Adresse!) – Kann man nicht automatisch überprüfen – Designentscheidung mit Auswirkung auf alle anderen NFs • Zweite Normalform (2NF) – R ist in 1NF – Kein Attribut A, A nicht Teil eines Schlüssels, hängt von Teilmenge P‘ ⊂ P funktional ab – Schlecht: lehrt(p_id,s_id,termin,stud_name) • Dritte Normalform (3NF) – R in 1NF – Kein Attribut A hängt von einem A‘∉P ab – Schlecht: mitarbeiter(p_id,plz,ort) Ulf Leser: Informationsintegration, Wintersemester 2006/2007 49