informationsintegration containment und local-as-view anfragebearbeitung 12.1.2006 felix naumann
TRANSCRIPT
Informationsintegration
Containment und Local-as-View
Anfragebearbeitung
12.1.2006
Felix Naumann
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 2
Überblick
Wiederholung Global-as-View (GaV) & GaV
Anfragebearbeitung Local-as-View (LaV)
LaV Anfragebearbeitung Containment
Definition Test
Nutzbarkeit und Nützlichkeit von Views
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 3
Global as View / Local as View
Global as View Relationen des globalen
Schemas werden als Sichten auf die lokalen Schemas der Quellen ausgedrückt
Local as View Relationen der Schemas der
Quellen werden als Sichten auf das globale Schema ausgedrückt.
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 4
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre)
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)S3: RegieDB(Titel, Regie)S4: GenreDB(Titel, Jahr, Genre)
CREATE VIEW Film ASSELECT * FROM IMDB
UNIONSELECT * FROM MyMovies
UNIONSELECT RegieDB.Titel, RegieDB.Regie, GenreDB.Jahr, GenreDB.GenreFROM RegieDB, GenreDBWHERE RegieDB.Titel = GenreDB.Titel
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 5
Anfragebearbeitung – GaV
Gegeben: Anfrage an globales Schema
Insbesondere: Auf Relationen des globalen Schemas Für jede globale Relation genau eine Sicht auf lokale
Quellen Gesucht:
Alle Tupel, die die Anfragebedingungen erfüllen Aber: Daten sind in lokalen Quellen gespeichert.
Idee: Ersetze jede Relation der Anfrage durch ihre Sicht
(View Expansion, Query Unfolding). Geschachtelte Anfrage
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 6
GaV – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
SELECT Titel, JahrFROM FilmWHERE Jahr = ‚2003‘
SELECT Titel, Jahr FROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
)WHERE Jahr = ‚2003‘
S1: IMDB(Titel, Regie, Jahr, Genre)S2: RegieDB(Titel, Regie)S3: GenreDB(Titel, Jahr, Genre)
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 7
GaV – Beispiel
SELECT F.Titel, P.KinoFROM Film F, Programm PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
SELECT F.Titel, F.Jahr FROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
) AS F, ( SELECT * FROM KinoDB ) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
S1: IMDB(Titel, Regie, Jahr, Genre)S2: RegieDB(Titel, Regie)S3: GenreDB(Titel, Jahr, Genre)S7: KinoDB(Kino, Genre, Zeit)
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 8
Global as View (GaV) Anfrageumschreibung entspricht Sichtentfaltung
Ersetze Sicht durch Sicht-Definition. Konzeptionell:
Ausführung der Anfragen von innen nach außen und Speicherung in temporären Relationen.
Tatsächlich: Optimierungspotential durch Umschreiben der Anfrage (Entschachtelung)
Konzeptionell simpel Neue Quellen hinzufügen ist schwierig.
Alle bisherigen Quellen müssen betrachtet werden. Geeignet für materialisierte Integration
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 9
Überblick
Wiederholung Global-as-View (GaV) & GaV
Anfragebearbeitung Local-as-View (LaV)
LaV Anfragebearbeitung Containment
Definition Test
Nutzbarkeit und Nützlichkeit von Views
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 10
Local as View (LaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre)
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)S3: RegieDB(Titel, Regie)S4: GenreDB(Titel, Jahr, Genre)
CREATE VIEW S1 ASSELECT * FROM Film
CREATE VIEW S2 ASSELECT * FROM Film
CREATE VIEW S3 ASSELECT Film.Titel, Film.RegieFROM Film
CREATE VIEW S4 ASSELECT Film.Titel, Film.Jahr,
Film.GenreFROM Film
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 11
Local as View (LaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre)
S9: ActorDB(Titel, Schauspieler, Jahr)
CREATE VIEW S9 ASSELECT Titel, NULL, JahrFROM Film
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 12
Local as View (LaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S7: KinoDB(Kino, Genre)
CREATE VIEW S7 ASSELECT Programm.Kino, Film.GenreFROM Film, ProgrammWHERE Film.Titel = Programm.Titel
Assoziationen des globalenSchemas können in derSicht hergestellt werden.
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 13
Local as View (LaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S8: NeueFilme(Titel, Regie, Genre)(Nebenbedingung: Jahr > 2000)
CREATE VIEW S8 ASSELECT Titel, Regie, NULL, GenreFROM FilmWHERE Jahr > 2000
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 14
Local as View (LaV) – Beispiel
Globales Schema NeuerFilm(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit) Nebenbedingung: Jahr > 2000
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)
CREATE VIEW S1 ASSELECT * FROM NeuerFilm
CREATE VIEW S2 ASSELECT * FROM NeuerFilm
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 15
Local as View (LaV)
Flexibel Beschreibung der Quellen mit voller Mächtigkeit
der Anfragesprache Quellen können leicht hinzugefügt werden
(unabhängig von bisherigen Quellen) Anfrageumschreibung schwierig
Answering Queries using Views Viele potentielle (und überlappende) Pläne
Geeignet für virtuelle Integration
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 16
Überblick
Wiederholung Global-as-View (GaV) & GaV
Anfragebearbeitung Local-as-View (LaV)
LaV Anfragebearbeitung Containment
Definition Test
Nutzbarkeit und Nützlichkeit von Views
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 17
Problem Anfrageverarbeitung
Globales Schema Film(Titel, Regie, Jahr, Genre)
S1: IMDB(Titel, Regie, Jahr, Genre)S2: RegieDB(Titel, Regie)S3: GenreDB(Titel, Jahr, Genre)
GaVCREATE VIEW Film ASSELECT * FROM IMDB
UNIONSELECT R.Titel, R.Regie, G.Jahr, G.GenreFROM RegieDB R, GenreDB GWHERE R.Titel = G.Titel
LaVCREATE VIEW S1 ASSELECT * FROM Film
CREATE VIEW S2 ASSELECT Film.Titel, Film.RegieFROM Film
CREATE VIEW S3 ASSELECT Film.Titel, Film.Jahr,
Film.GenreFROM Film
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 18
Anfragebearbeitung – LaV Gegeben:
Anfrage an globales Schema Insbesondere: Auf Relationen des globalen Schemas
Für jede lokale Relation genau eine Sicht auf globales Schema
Gesucht: Alle Tupel, die die Anfragebedingungen erfüllen Aber: Daten sind in lokalen Quellen gespeichert.
Idee: Anfrageumschreibung durch Einbeziehung der Sichten Kombiniere geschickt die einzelnen Sichten zu einer
Anfrage, so dass deren Ergebnis einen Teil der Anfrage (oder die ganze Anfrage) beantworten.
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 19
LaV Anfrageumschreibung – BeispielAusschnitt Globales Schema Lehrt(prof,kurs_id, sem, eval, univ) Kurs(kurs_id, titel, univ)
Quelle 1: Alle Datenbankveranstalt. CREATE VIEW DB-kurs AS SELECT K.titel, L.prof, K.kurs_id, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND L.univ = K.univ AND K.titel LIKE „%_Datenbanken“
Quelle 2: Alle Humboldtvorlesungen CREATE VIEW Hum-VL AS SELECT K.titel, L.prof, K.kurs_id, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.univ = „Humboldt“ AND L.univ = „Humboldt“ AND K.titel LIKE „%VL_%“
Globale Anfrage SELECT prof FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.titel LIKE „%_Datenbanken“ AND L.univ = „Humboldt“
Umgeschriebene Anfrage SELECT prof FROM DB-kurs D WHERE D.univ = „Humboldt“
Frage: Warum nicht Quelle 2 einbeziehen?
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 20
LaV Visualisierung (OWA)
Globales Schema
Lokales Schema
RelA RelB
RelC
LaV
RelC = RelA ⋈ RelB
Lokales Schema
RelD
RelD = RelB
Nutzer-Anfrage
SELECT ???FROM RelBWHERE ???
Umgeschriebene AnfrageSELECT ???FROM RelDWHERE ???UNIONSELECT Attr(B)FROM RelCWHERE ???
Anfrage-umschreibung
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 21
LaV Visualisierung
Globales Schema
Lokales Schema
RelA RelB
RelC
LaV
RelC = RelA ⋈ RelB
Lokales Schema
RelD
RelB = RelD
Nutzer-Anfrage
SELECT ???FROM RelA, RelBWHERE ???
Umgeschriebene Anfrage
SELECT ???FROM RelCWHERE ???
Anfrage-umschreibung
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 26
LaV – Beispiel
Ausschnitt Globales Schema Lehrt(prof,kurs_id, sem, eval, univ) Kurs(kurs_id, titel, univ)Quelle 1: Alle Datenbankveranstalt. CREATE VIEW DB-kurs AS SELECT K.titel, L.prof, K.kurs_id, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND L.univ = K.univ AND K.titel LIKE „%_Datenbanken“
Quelle 2: Alle Humboldtvorlesungen CREATE VIEW Hum-VL AS SELECT K.titel, L.prof, K.kurs_id, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.univ = „Humboldt“ AND L.univ = „Humboldt“ AND K.titel LIKE „%VL_%“
Globale Anfrage SELECT titel, kurs_id FROM Kurs K WHERE L.univ = „Humboldt“
Umgeschriebene Anfrage SELECT titel, kurs_id FROM DB-kurs D WHERE D.univ = „Humboldt“ UNION SELECT titel, kurs_id FROM Hum-VL Frage:
Warum hier dochQuelle 2 einbeziehen?
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 27
LaV – Beispiel Vergleich
Globale Anfrage SELECT titel, kurs_id FROM Kurs K WHERE L.univ = „Humboldt“
Umgeschriebene Anfrage SELECT titel, kurs_id FROM DB-kurs D WHERE D.univ = „Humboldt“ UNION SELECT titel, kurs_id FROM Hum-VL
Globale Anfrage SELECT prof FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.titel = „%_Datenbanken“ AND L.univ = „Humboldt“
Umgeschriebene Anfrage SELECT prof FROM DB-kurs D WHERE D.univ = „Humboldt“
Vollständige Antwort (CWA)
Frage: Welche Daten fehlen hier?
MaximaleAntwort
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 28
LaV – Anfragebearbeitung
Gegeben: Anfrage Q und Sichten V1, ..., Vn
Gesucht: Umgeschriebene Anfrage Q‘, die bei Optimierung (mit MVs): äquivalent ist (Q = Q‘). bei Integration: maximal enthalten ist.
D.h. Q Q‘ und es existiert kein Q‘‘ mit Q Q‘‘ Q‘ wobei Q‘‘ Q‘.
Problem: Wie definiert und testet man Äquivalenz bzw.
maximal containment?
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 29
Überblick
Wiederholung Global-as-View (GaV) & GaV
Anfragebearbeitung Local-as-View (LaV)
LaV Anfragebearbeitung Containment
Definition Test
Nutzbarkeit und Nützlichkeit von Views
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 30
LaV – Anfrageumschreibungen
Gegeben Anfrage Q (query) Sicht V (view)
Fragen Ist Ergebnis von V identisch dem Ergebnis von Q? Kurz: Ist V äquivalent zu Q, V = Q ?
Rückführung auf „Enthalten sein“ (containment) Ist das Ergebnis von V in Q enthalten? Kurz: Ist V in Q enthalten, V Q ?
Denn V Q, Q V V = Q
Quelle: VL Data Warehousing, Prof. Ulf Leser, HU Berlin
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 31
LaV – Anfrageumschreibungen
Query containment (Anfrage-“Enthaltensein“) Sei S ein Schema. Seien Q und Q‘ Anfragen gegen S. Eine Instanz von S ist eine beliebige Datenbank D mit
Schema S. Das Ergebnis einer Anfrage Q gegen S auf einer
Datenbank D, geschrieben Q(D), ist die Menge aller Tupel, die die Ausführung von Q in D ergibt.
Q‘ ist contained (enthalten) in Q, geschrieben Q‘ Q, gdw. Q‘(D) Q(D) für jedes mögliche D.
Quelle: VL Data Warehousing, Prof. Ulf Leser, HU Berlin
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 32
LaV – Anfrageumschreibungen
Query equivalence (Anfrageäquivalenz) Q ist äquivalent mit Q‘, geschrieben Q = Q‘, gdw.
Q(D) Q‘(D) und Q(D) Q‘(D) für jede mögliche Datenbank D.
Wichtig Es zählt das Ergebnis einer Anfrage, nicht die
Syntax.
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 33
LaV – Beispiele
SELECT K.titel, L.prof, K.kurs_id, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.univ = „Humboldt“ AND L.univ = „Humboldt“ AND K.titel LIKE „%VL_%“
SELECT K.titel, L.prof, K.kurs_id, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.univ = „Humboldt“ AND L.univ = „Humboldt“
???
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 34
LaV – Beispiele
SELECT K.titel, K.kurs_id FROM Kurs K AND K.univ = „Humboldt“ AND K.titel LIKE „%VL_%“
???SELECT K.titel, K.univ FROM Kurs K AND K.univ = „Humboldt“ AND K.titel LIKE „%VL_%“
SELECT K.titel, K.kurs_id FROM Kurs K AND K.univ = „Humboldt“
???SELECT K.titel FROM Kurs K AND K.univ = „Humboldt“
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 35
LaV – Beispiele
Prüfung von containment durch Prüfung aller möglichen Datenbanken? Zu complex!
Prüfung von containment durch Existenz eines containment mapping. NP-vollständig in |Q|+|Q‘|
nach [CM77] Mehrere Algorithmen
???Quelle 5: CREATE VIEW Kurse2 AS SELECT K.titel, K.univ FROM Kurs K AND K.univ = „Humboldt“
Quelle 3: CREATE VIEW Hum-Kurse AS SELECT K.titel, K.univ FROM Lehrt L, Kurs K WHERE L.kurs_id = K.kurs_id AND K.univ = „Humboldt“ AND L.univ = „Humboldt“
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 36
Datalog Notation Im Folgenden: Nur Konjunktive Anfragen
Nur Equijoins und Bedingungen mit =,<,> zw. Attribut und Konstanten
Kein NOT, EXISTS, GROUP BY, , X>Y, ... Schreibweise: Datalog / Prolog
SELECT Klausel Regelkopf, Exportierte Attribute
FROM Klausel Relationen werden zu Prädikaten
WHERE Klausel Joins werden durch gleiche Attributnamen angezeigt Bedingungen werden explizit angegeben
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 37
SQL – DatalogSELECT S.price, L.region_nameFROM sales S, time T, ... WHERE S.day_id = T.day_id AND
S.product_id = P.product_id ANDS.shop_id = L.shop_id ANDL.shop_id = 123 ANDT.year > 1999
q(P,RN) :- sales(SID,PID,TID,RID,P,...), time(TID,D,M,Y), localization(LID,SN,RN), product(PID,PN,PGN), Y > 1999, SID = 123
SELECT FROM WHERE Joins
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 38
Query Containment
A query p is contained in a query u, p u, iff all tuples computed by p are also computed by u for every DB.
Beispiele (Regelkopf weggelassen) map(Mn,Ms) map(Mn,Ms); map(Mn,Ms), Mn = ‘HGM’ map(Mn,Ms); map(Mn,Ms), Ms<500 map(Mn,Ms); map(Mn,Ms), clone(Mn,Cn,-) map(Mn,Ms); clone(Mn,Cn,Cs), clone(Mn,Cn,Cs)
clone(Mn,Cn,Cs);Quelle: Folien Ulf Leser
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 39
Beweis für Query Containment
p u gdw ein containment mapping von u nach p existiert. Containment mapping:
h: sym(u) → sym(p) (Abbildung der Symbole) CM1: Jede Konstante in u wird auf die gleiche Konstante in p
abgebildet. CM2: Jede exportierte Variable in u wird auf eine exportierte
Variable in p abgebildet. CM3: Jedes Literal (Relation) in u wird auf mindestens ein Literal in
p abgebildet CM4: Die Bedingungen von p implizieren die Bedingungen von u
Beweis: [CM77]
map(Mn,Ms),clone(Mn,Cn,-,-) map(Mn,Ms);Quelle: Folien Ulf Leser
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 40
Finden von Containment Mappings
Problem ist NP vollständig Exponentiell in der Anzahl der Literale Beweis: Reduktion auf „Exakt Cover“
Also: Alles ausprobieren Aufbau eines Suchbaums
Jede Ebene entspricht einem Literal Auffächerung nach möglichen CMs
Algorithmus Nicht hier siehe DWH VL Ulf Leser
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 41
CM Beispiele
Quelle: DWH VL Leser
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 42
CM Beispiele
Quelle: DWH VL Leser
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 43
Erzeugung der Anfragen
Beobachtung: Interpretation als containment
name,spendeID,betrag(spendenDB.firmen spendenDB.spenden)
orgname,spendeID,menge(haushaltDB.stadtHaushalt.org.einnahmen haushaltDB.stadtHaushalt.buchungen)
name(spendenDB.firmen)
orgname(haushaltDB.stadtHaushalt.org)
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 44
Literatur Gute Zusammenfassung für LaV und weiterführende Literatur:
[Hal01] Alon Y. Halevy: Answering queries using views: A survey, in VLDB Journal 10: 270-294, 2001.
Weitere Literatur [Ull97] Jeffrey D. Ullman: Information Integration Using Logical
Views. ICDT 1997: 19-40 [CM77] Ashok K. Chandra and Philip M. Merlin. Optimal
implementation of conjunctive queries in relational data bases. In Conference Record of the Ninth Annual ACM Symposium on Theory of Computing, pages 77-90, Boulder, Colorado, 2-4 May 1977.
[LMSS95] Alon Y. Levy, Alberto O. Mendelzon, Yehoshua Sagiv, Divesh Srivastava: Answering Queries Using Views. PODS 1995: 95-104
12.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 45
LaV – Beispiel
Globales Schema Prof(name, bereich) Kurs(kurs_id, titel, univ) Lehrt(prof,kurs_id, sem, eval, univ) Eingeschrieben(stud, kurs_id, sem) Vertiefung(stud, fach) Arbeitet(prof, fach) Betreut(prof, stud)
Prof
fach
stud
name
Kurs
name name
bereich
lehrteval
sem
Betreut
Eingeschrieben
sem
VertiefungArbeitet
titel kurs_id