datenintegration & datenherkunft global-as-view (gav) und ... · !wenn wir p1-p4 betrachten und...
TRANSCRIPT
Datenintegration & DatenherkunftGlobal-as-View (GaV) und Local-as-View (LaV)
Wintersemester 2010/11
Melanie [email protected]
Lehrstuhl für Datenbanksysteme, Universität Tübingen
1
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Ausblick auf das Semester
2
Problemstellungen•Einführung in die Informationsintegration•Verteilung, Autonomie und Heterogenität
Architekturen•Materialisierte und virtuelle Integration•5 Schichten Architektur•Mediator/Wrapper Architektur•P2P Architektur
Mapping•Schema Mapping•Schema Matching
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Ausblick auf das Semester
3
Modellierung•Global-As-View Modellierung•Local-As-View Modellierung
Anfragen•Global-As-View Anfragebearbeitung•Containment und Local-As-View Anfragebearbeitung•Bucket Algorithmus
Datenintegration•Duplikaterkennung•Datenfusion
Datenherkunft (Data Provenance)•Why-, How-, und Where-Provenance•Datenherkunft fehlender Daten
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
4
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Das Problem
Wie spezifiziert man die Datentransformationen?
Quelle 1 Quelle 2 Quelle 3
Anwendung 1 Anwendung 2
DataWarehouse
(DW)
ETL1ETL2
ETL3
5
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Das Problem
Wie drückt man die Funktionalität des Wrappers aus?
Quelle 1 Quelle 2 Quelle 3
Anwendung 1 Anwendung 2
Mediator
Wrapper1
Wrapper2
Wrapper3
6
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfrageplanung
• Wenn das integrierte System ein globales Schema zur Verfügung stellt
▸ Wie beschreibt man die Beziehungen zwischen dem globalen und den verschiedenen lokalen Schemata?
! Siehe Schema Matching / Schema Mapping Kapitel
▸ Wie benutzt man diese Beziehungen zur Anfrageplanung?
! Besprechen wir hier
Query processing• Query planning• Decomposition• Translation• Result Integration
Schema Integration
7
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Aufgabe
• Aufgabe der Anfragebearbeitung
• Gegeben eine Anfrage q gegen das globale Schema
• Gegeben eine Menge von Korrespondenzen zwischen globalem und lokalen Schemata
• Finde alle Antworten auf q.
Globales Schema
Exportschema/lokales Schema
Korrespondenzen
8
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfragebearbeitung
• Schritt 1: Anfrageplanung
▸ Welche Quellen können / sollen / müssen benutzt werden?
▸ Welche Teile der Anfrage sollen an welche Quelle geschickt werden?
• Schritt 2: Anfrageübersetzung
▸ Übersetzung aus der Sprache der Föderation in die Sprache der Quellen
• Schritt 3: Anfrageoptimierung
▸ Finde geeignete Reihenfolge der Ausführung der Teilanfragen
▸ Wer führt was aus (Pushen)?
▸ Wer kann was ausführen (Kompensation)?
• Schritt 4: Anfrageausführung
▸ Monitoring, Puffern, Cachen
▸ Dynamische Reoptimierung
• Schritt 5: Ergebnisintegration
▸ Duplikaterkennung und Konfliktauflösung
9
Beispeil aus der Filmwelt
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Beispiel
• Vereinfachende Annahmen
▸ Quellen bestehen nur aus einer (Export-)Relation.
▸ Keine Datenmodellheterogenität
! Nehmen wir jetzt immer an
! Aufgabe des Wrappers
▸ Zunächst vereinfachend: Keine strukturelle oder schematische Heterogenität
▸ Keine semantische Heterogenität
! Gleiche Namen = gleiche Konzepte
! Nur offensichtliche Schreibvarianten (Sprachunterschiede)
10
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Beispiel
• Globales Schema
• Datenquellen
11
film(titel, regisseur)schauspieler (schauspieler_name, nationalitaet)spielt (titel, schauspieler_name, rolle)
Datenquelle & exportierte Relation Beschreibung Globale Relation
imdb.movie (titel, director) Alle Filme der IMDB film
imdb.acts(title, actor_name, role) Zuordnung von Schauspielern zu Filmen der IMDB
spielt
imdb.actor (actor_name, nationality) Alle Schauspieler der IMDB schauspieler
fd.film(titel, regisseur) Alle Filme des Filmdienstes film
fd.spielt (titel, schauspieler_name, rolle)
Zuordnung von Schauspielern zu Filmen des Filmdienstes
spielt
fd.schauspieler(schauspieler_name, nationalitaet)
Alle Schauspieler des Filmdienstes
schauspieler
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Schritt 1: Anfrageplanung
• Globale Anfrage
▸ „Alle Filme, in denen Hans Albers eine Hauptrolle spielte“
• Welche Quellen kommen infrage?
▸ film:! Quellen imdb.movie und fd.film
▸ spielt:! Quellen imdb.acts und fd.spielt
• Ergibt vier Anfragepläne
12
SELECT titel, regisseur, rolleFROM film, spieltWHERE spielt.schauspieler_name = ‘Hans Albers’AND spielt.Rolle = ‘Hauptrolle’AND spielt.titel = film.titel
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Vier Anfragepläne
• Jeder Plan besteht aus zwei Teilplänen
▸ Auch p1 und p4
▸ Jeder Teilplan ist quellspezifisch
▸ Kann von einer Quelle ausgeführt werden
• Wer führt die Joins zwischen den Teilplänen aus?
• System kann auswählen
▸ Alle Pläne? (teuer, vollständig)
▸ Schnellster Plan?
▸ Billigster Plan?
▸ Plan mit dem größten Ergebnis?
13
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
FAQ
• Kann man nicht imdb.movie ⋈ imdb.acts gemeinsam betrachten?
▸ Doch – aber wir nehmen noch Quelle = „1 Relation“ an
▸ Später (GaV)
• Warum sollte man imdb.movie und fd.spielt zusammen in einem Plan benutzen?
▸ Weil Quellen Fehler (fehlende Werte) enthalten
▸ Kombination kann neue (und wichtige!) Tupel produzieren
▸ Annahme: Gleiche Werte in den Joinattributen
! Hier: Filmnamen, Schauspielernamen
• Vorsicht vor impliziten Konsistenzannahmen
14
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Beispiel
Imdb.movie
Vögel, HitchcockMünchhausen, von Baky
Imdb.acts
Vögel, Kelly, HauptrolleMünchhausen, Bendow, Nebenrolle
fd.film
Vögel, HitchcockMünchhausen, Bürger
fd.spielt
Vögel, Kelly, HauptrolleMünchhausen, Albers, Hauptrolle
Movie ! acts
-
film ! spielt
Münchhausen, Bürger, Hauptrolle
film ⋈ acts
-
movie ! spielt
Münchhausen, van Baky, Hauptrolle
15
SELECT titel, regisseur, rolleFROM film, spieltWHERE spielt.schauspieler_name = ‘Hans Albers’AND spielt.Rolle = ‘Hauptrolle’AND spielt.titel = film.titel
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Schritt 2: Anfrageübersetzung
• Jeder Teilplan kann an genau eine Quelle geschickt werden.
‣ Übersetzung der Schemaelementnamen
‣ Übersetzung einer SQL Anfrage in einen Web-Service, HTTP-Aufruf, XQuery, …
‣ Übersetzung von Konstanten in einer Query
- Was heißt „Hauptrolle“ in der imdb?
AnfrageübersetzungSELECT !titel, rolleFROM ! spieltWHERE !schauspieler_name=‚Hans Albers‘AND! rolle=‚Hauptrolle‘
SELECT !title, roleFROM ! imdb.actsWHERE !actor_name=‚Hans Albers‘AND! role=‚main role‘
SELECT !title, roleFROM ! imdb.actsWHERE !actor_name=‚Hans Albers‘
???
16
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Schritt 3: Anfrageoptimierung
• Lokale Optimierung: Jeder Plan einzeln
• Globale Optimierung: Gesamtmenge aller Pläne gemeinsam betrachten
• Fragen
▸ Optimale Reihenfolge der Ausführung der Teilpläne?
▸ Möglicherweise parallele Ausführung?
▸ Selektionsbedingungen global oder lokal prüfen?
17
Teilpläne
TP2:SELECT !title, roleFROM ! imdb.actsWHERE ! actor_name=‚Hans Albers‘AND! role=‚main role‘;
TP1:SELECT !title, directorFROM ! imdb.movie;
Teilpläne
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfrageoptimierung - Möglichkeiten
TP2:SELECT !title, roleFROM ! imdb.actsWHERE ! actor_name=‚Hans Albers‘AND! role=‚main role‘;
TP1:SELECT !title, directorFROM ! imdb.movie;
18
• Erst TP1, dann TP2, dann Join im Mediator
▸ Verlangt nach Download aller Filme der IMDB
▸ Vermutlich sehr teuer
• Besser: TP1 und TP2 parallel
▸ Ergebnis von TP1 ist für TP2 unerheblich
▸ Immer noch sehr teuer
• Erst TP2, dann TP1 umschreiben, Join im Mediator
▸ TP2: nur wenige Tupel
▸ Pushen dieser Tupel an TP1 „WHERE TITLE in (…)“
! Passing bindings
▸ Keine Parallelisierung mehr möglich
▸ Viel kleinere Zwischenergebnisse, vermutlich viel schneller
• …
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Schritt 4: Anfrageausführung
• Jeder der vier Pläne wurde optimiert und übersetzt
• Teilpläne müssen ausgeführt werden
▸ Anfrage abschicken, Ergebnis abwarten, lokal puffern
▸ Time-Outs überwachen
▸ Müssen alle Teilpläne ausgeführt werden?
! Wenn wir P1-P4 betrachten und keine Joinbedingungen pushen können
! Ergibt 8 Teilpläne - aber nur 4 verschiedene Teilpläne
! Optimierungspotential
! Entweder global optimieren oder dynamisch durch Caching erkennen
• Fehlende Operationen müssen im Mediator ausgeführt werden.
▸ Nicht-pushbare Selektionen
▸ Joins zwischen Relationen verschiedener Quellen
19
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Ergebnisintegration• Jeder Plan liefert eine Menge korrekter Ergebnisse.
• Trotzdem kann es Probleme geben
▸ Duplikate: Objekte sind in mehreren Quellen vorhanden
▸ Konflikte: Objekte sind mehrmals mit widersprüchlichen Angaben vorhanden
AnfrageübersetzungImdb.movie
Vögel, HitchcockMünchhausen, von Baky
Imdb.acts
Vögel, Kelly, HauptrolleMünchhausen, Bendow, Nebenrolle
fd.film
Vögel, HitchcockMünchhausen, Bürger
fd.spielt
Vögel, Kelly, HauptrolleMünchhausen, Albers, Hauptrolle… ! … UNION … ! … UNION …
-Münchhausen, Bürger, HauptrolleMünchhausen, von Baky, Hauptrolle-
20
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Modellierung von Datenquellen
• Kernidee
▸ Modellierung strukturell heterogener Quellen in Bezug auf ein globales Schema als Views (Sichten)
▸ Relationales Modell
• Allgemein:
▸ Eine Sicht verknüpft mehrere Relationen und produziert eine Relation.
• Sichten zur Verknüpfung von Schemata
▸ Sicht definiert auf Relationen eines Schemas und produziert eine Relation des anderen Schemas
• Jetzt: Unterscheidung lokales und globales Schema
21
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
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.
22
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
23
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
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
Typisches Merkmal bei GaV
Join über mehrere Quellen(Anfragebearbeitung!)
24
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Zwei Arten von GaV Regel
• Einfache GaV Regeln: Quellspezifisch
▸ Lokale Anfrage adressiert nur eine Quelle
▸ Verknüpfung über Quellen hinweg übernimmt die Anfrageplanung
▸ Besser wartbar (Änderung einer Quelle kann nur wenige Sichten betreffen)
▸ Einfacher zu erweitern (bestehende Views nicht anfassen)
• Komplexe GaV Regeln: Quellübergreifend
▸ Lokale Anfrage ist eine Anfrage in einer Multidatenbanksprache
▸ Eine Sicht fasst alle Objekte einer globalen Relation zusammen! Sicht film, schauspieler, …
▸ Anfrageplanung übernimmt nur noch Verknüpfung zwischen verschiedenen Relationen, d.h., Joins in der globalen Anfrage
▸ Weniger robust, schwerer zu erweitern! Änderung einer Quelle kann alle Sichten betreffen
▸ Konfliktlösung kann in den View eingebaut werden
25
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S5: MDB(Titel, Regie, Jahr)S6: MovDB(Titel, Regie, Genre)
CREATE VIEW Film ASSELECT Titel, Regie, Jahr, NULL AS GenreFROM MDB! UNIONSELECT Titel, Regie, NULL AS Jahr, GenreFROM MovDB
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
Fehlende Attribute
Form des Ergebnisses;Datenfusion
26
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – Beispiel
• Problem: Assoziationen werden getrennt
• Da Ergebnis einer Sicht nur eine globale Relation sein kann
• Lösung: Skolemfunktionen
• Tritt auf, wenn
• Attribute verschiedener globaler Relationen in einer lokalen Relation liegen und der verbindende Key/FK lokal nicht existiert
• Nicht im umgekehrten Fall: einfach lokale Relationen joinen…
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S7: KinoDB(Kino, Genre)
CREATE VIEW Film ASSELECT NULL, NULL, NULL, GenreFROM KinoDB
CREATE VIEW Programm ASSELECT Kino, NULL, NULLFROM KinoDB
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
27
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Vorschau: Local as View (LaV) – Beispiel
37
• Umgekehrte Betrachtung
• Assoziationen bleiben erhalten
▸ Titel wird zwar nie instantiiert,
▸ aber man weiß, dass es einen verbindenden Titel gibt.
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
28
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Integritätsconstraints (ICs)
• Schränken Wertebereiche ein, schließen Werte aus, schließen Kombinationen von Werten aus, ...
• Dienen zur näheren Bestimmung der Intension einer Relation:
▸ teure_autos( auto, preis ), preis>50.000▸ golfclub_mitglieder( name, alter ), alter>55▸ film( title, type ), type∈{spielfilm, doku, kurzfilm}
▸ …
• Für die Integration sehr wichtig
29
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – Gobale ICs
• IC auf globalem Schema kann in diesem Fall in die Sichtdefinition aufgenommen werden
• Ausführung in der Quelle (push) oder im Mediator
Globales Schema NeuerFilm(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit) IC: Jahr > 2000
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)
CREATE VIEW NeuerFilm ASSELECT * FROM IMDBWHERE Jahr > 2000! UNIONSELECT * FROM MyMoviesWHERE Jahr > 2000
30
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Probleme mit globalen IC
• Quelle gibt keine Jahr-Informationen
• IC auf globalem Schema kann nicht überprüft werden
• Quelle kann nicht integriert werden
S1: IMDB( Titel, Regie, Jahr, Genre)S2: MyOldOrNewMovies( Titel, Regie)
Globales SchemaNeuerfilm( Titel, Regie, Jahr, Genre);Programm( Kino, Titel, Zeit);IC: Jahr > 2000
CREATE VIEW NeuerFilm ASSELECT !* FROM ! IMDBWHERE !Jahr > 2000! UNIONSELECT Titel, Regie, NULL, NULL FROM ! MyOldOrNewMoviesWHERE !??
31
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – globale ICs
Globales SchemaNeuerFilm(Titel, Regie, Jahr, Genre)Nebenbedingung: Jahr > 2000
oder NeuerFilm(Titel, Regie, Genre)Nebenbedingung: Jahr > 2000
Lokale SchemasS1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)
CREATE VIEW NeuerFilm ASSELECT * FROM AlleFilmeNettWHERE Jahr > 2000! oderCREATE VIEW NeuerFilm ASSELECT Titel, Regie, Genre FROM AlleFilmeNettWHERE Jahr > 2000
Quelle S2 kann nicht modelliert werden!
32
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – Lokale ICs
• Bekannte Nebenbedingung auf der Quelle kann nicht modelliert werden.
• Warum ist das schlecht?
▸ SELECT * FROM film WHERE jahr < 1950
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S8: NeueFilme(Titel,Regie, Genre)(IC: Jahr > 2000)
CREATE VIEW Film ASSELECT Titel, Regie, NULL, GenreFROM NeueFilme
33
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
„Trick“
• IC in Quelle wird modelliert
▸ (Geht nur, wenn das Attribut in der Quelle instantiiert wird)
• Die Bedingung ändert am Ergebnis nichts
▸ Für eine lokale Anfrage wäre sie sinnlos
• Aber sie hilft dem Anfrageplaner
▸ SELECT * FROM film WHERE jahr < 1950
S8: NeueFilme( Titel, Regie, Jahr, Genre)IC: Jahr > 2000
CREATE VIEW Film ASSELECT !Titel, Regie, Jahr, GenreFROM ! NeueFilmeWHERE !Jahr > 2000
34
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – lokale ICs
Globales Schema Film(Titel, Regie, Jahr, Genre)
Lokale SchemasS1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)S3: NeueFilmeNett(Titel, Regie, Jahr, Genre)
(Nebenbedingung: Jahr > 2000)S4: NeueFilmeBöse(Titel, Regie, Genre)
(Nebenbedingung: Jahr > 2000)S5: AktuelleFilme(Titel, Regie, Genre)
(Nebenbedingung: Jahr = 2010)
CREATE VIEW Film ASSELECT *FROM AlleFilmeNett! UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse! UNIONSELECT *FROM NeueFilmeNett(WHERE Jahr > 2000)! UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, `2010´, GenreFROM AktuelleFilme
Jede Sicht exportiert alle Daten der Quelle!
Jede Quelle kann modelliert werden!
Modellierung nur für Optimierung
35
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – ICs
45
Globales Schema Film(Titel, Regie, Jahr, Genre)
CREATE VIEW Film ASSELECT *FROM AlleFilmeNett! UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse! UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000! UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme
SELECT * FROM(SELECT *FROM AlleFilmeNett! UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse! UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000! UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
Anfrage: SELECT * FROM Film
36
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – ICs
Globales Schema Film(Titel, Regie, Jahr, Genre)
Anfrage:SELECT * FROM FilmWHERE Jahr > 2001
SELECT * FROM(SELECT *FROM AlleFilmeNett! UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse! UNIONSELECT *FROM NeueFilmeNett(WHERE Jahr > 2000)! UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
WHERE Jahr > 2001
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt voll zum Ergebnis bei
37
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – ICs
Globales Schema Film(Titel, Regie, Jahr, Genre)
Anfrage:SELECT * FROM FilmWHERE Jahr = 2001
SELECT * FROM(SELECT *FROM AlleFilmeNett! UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse! UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000! UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
WHERE Jahr = 2001
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt nicht zum Ergebnis bei (2001 " 2004)
38
Beiträge zum Ergebnis
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – ICs
Globales Schema Film(Titel, Regie, Jahr, Genre)
Anfrage:SELECT * FROM FilmWHERE Jahr < 1950
SELECT * FROM(SELECT *FROM AlleFilmeNett! UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse! UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000! UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
WHERE Jahr < 195039
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – globale und lokale ICs
Globales SchemaNeuerFilm(Titel, Regie, Genre)Nebenbedingung: Jahr > 2000
Lokale SchemasS1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)S3: NeueFilmeNett(Titel, Regie, Jahr, Genre)
(Nebenbedingung: Jahr > 2000)S4: NeueFilmeBöse(Titel, Regie, Genre)
(Nebenbedingung: Jahr > 2000)S5: AktuelleFilme(Titel, Regie, Genre)
(Nebenbedingung: Jahr = 2004)
CREATE VIEW NeuerFilm ASSELECT Titel, Regie, GenreFROM AlleFilmeNettWHERE Jahr > 2000! UNION???! UNIONSELECT Titel, Regie, GenreFROM NeueFilmeNett(WHERE Jahr > 2000)! UNIONSELECT Titel, Regie, GenreFROM NeueFilmeBöse! UNIONSELECT Titel, Regie, GenreFROM AktuelleFilme
Quelle S2 kann nicht modelliert werden!
40
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Global as View (GaV) – ICs
• Fazit
• Nebenbedingungen (ICs) im globalen Schema
▸ können die Integration von Quellen verhindern,
• wenn die Bedingung nicht geprüft werden kann (fehlendes Attribut).
• Nebenbedingungen in den lokalen Schemas
▸ können modelliert werden,
• (wenn sie auf exportierten Attributen gelten, oder)
• wenn sie auf globalen Attributen gelten und die Form attribute = <constant> haben.
▸ tragen möglicherweise nicht zum Anfrageergebnis bei,
• wenn Nebenbedingung nicht modelliert wurde.
41
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
42
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
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
! Sichtentfaltung, View Expansion, Query Unfolding, …
▸ Geschachtelte Anfrage
43
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
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)
44
Globale Sicht für Film
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
GaV – Beispiel
SELECT F.Titel, P.KinoFROM Film F, Programm PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
SELECT F.Titel, P.Kino 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(Titel, Kino, Genre, Zeit)
45
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
GaV - Schachtelung
• Geschachtelte Anfragen
• Beliebig tiefe Schachtelung
• Bearbeitung
▸ Konzeptionell: Ausführung der Anfragen von innen nach außen und Speicherung in temporären Relationen.
▸ Tatsächlich: Optimierungspotential durch Umschreiben der Anfrage (Entschachtelung)
• Caching und materialisierte Sichten (materialized views)
46
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
GaV - Schachtelung
• Schachtelung
• i.d.R. Belassen bei entfernten Quellen
• i.d.R. Auflösung bei materialisierten Sichten
SELECT F.Titel, P.Kino FROM (SELECT * FROM IMDB
UNIONSELECT R.Titel, R.Regie, G.Jahr, G.GenreFROM RegieDB R, GenreDB GWHERE R.Titel = G.Titel
) AS F, (SELECT *
FROM KinoDB ) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
SELECT F.Titel, P.Kino FROM IMDB F, KinoDB PWHERE F.Titel = P.TitelAND P.Zeit > 20:00UNIONSELECT F1.Titel, P1.Kino FROM RegieDB F1, GenreDB F2, KinoDB P1WHERE F1.Titel = F2.TitelWHERE F1.Titel = P1.TitelAND P1.Zeit > 20:00
47
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
GaV - Schachtelung
SELECT F.Titel, P.KinoFROM (SELECT * FROM IMDB
UNIONSELECT R.Titel, R.Regie, G.Jahr, G.GenreFROM RegieDB R, GenreDB GWHERE R.Titel = G.Titel
) AS F, (SELECT *
FROM KinoDB ) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
#P.Zeit>20:00
!Titel
KinoDBIMDBRegieDBGenreDB
!Titel
"
48
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
GaV - Schachtelung
#P.Zeit>20:00
!Titel
!Titel
"#P.Zeit>20:00
!Titel
!Titel
"
49
KinoDBIMDBRegieDBGenreDBKinoDBIMDBRegieDBGenreDB
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
GaV - Schachtelung
#P.Zeit>20:00
!Titel
!Titel
"
50
KinoDBIMDBRegieDBGenreDB
#P.Zeit>20:00
!Titel!Titel
"
KinoDBIMDBRegieDBGenreDB
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
51
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
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.
52
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Warum LaV?
• Andere Sichtweise
▸ Es gibt in der Welt eine Menge von Filmen, Schauspielern, …
▸ Das globale Schema modelliert diese Welt.
▸ Theoretisch steht damit die Extension fest.
! Aber niemand kennt sie.
! Informationsintegration versuchtsie herzustellen.
▸ Quellen speichern Sichten auf die globale Extension.
! Also Ausschnitte der realen Welt
▸ Nur die können wir verwenden.
Quelle 1
Film SchauspielerGlobales Schema
Quelle 2
Quelle 353
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
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, 200254
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – Beispiel
S9: ActorDB(Titel, Schauspieler, Jahr)
CREATE VIEW S9 ASSELECT Titel, NULL, JahrFROM Film
„Verpasste Chance“
55
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – Beispiel
Assoziationen des globalen Schemas können in der Sicht hergestellt werden.
S7: KinoDB(Kino, Genre)
CREATE VIEW S7 ASSELECT Programm.Kino, Film.GenreFROM Film, ProgrammWHERE Film.Titel = Programm.Titel
56
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – Beispiel
Assoziationen des lokalen Schemas können nicht abgebildet werden.
S9: Filme(Titel, Jahr, Ort, RegieID) Regie(ID, Regisseur)
CREATE VIEW S9_Filme ASSELECT Titel, Jahr, NULL, NULLFROM Film
CREATE VIEW S9_Regie ASSELECT NULL, RegieFROM Film
57
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – Beispiel
• IC auf der Quelle kann modelliert werden
▸ Wenn das Attribut im globalen Schema existiert
• ICs müssen in der Quelle nicht explizit definiert werden
▸ Auch implizite Einschränkungen können in den View
S8: NeueFilme(Titel, Regie, Genre)(IC: Jahr > 2000)
CREATE VIEW S8 ASSELECT Titel, Regie, GenreFROM FilmWHERE Jahr > 2000
58
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – Globale ICs
• Nebenbedingungen auf dem globalen Schema können wir nicht sinnvoll modellieren.
• Das ging aber bei GaV
• Also hat beides Stärken und Schwächen
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)
CREATE VIEW S1 ASSELECT * FROM NeuerFilm(WHERE Jahr> 2000)
CREATE VIEW S2 ASSELECT * FROM NeuerFilm(WHERE Jahr> 2000)
59
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit) Nebenbedingung: Jahr > 2000
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Local as View (LaV) – lokale ICs
Globales Schema Film(Titel, Regie, Jahr, Genre)
CREATE VIEW S1 ASSELECT * FROM Film
CREATE VIEW S2 ASSELECT Titel, Regie, Genre FROM Film
CREATE VIEW S3 ASSELECT * FROM FilmWHERE Jahr > 2000
CREATE VIEW S4 ASSELECT Titel, Regie, Genre FROM FilmWHERE Jahr > 2000
CREATE VIEW S5 ASSELECT Titel, Regie, Genre FROM FilmWHERE Jahr = 2004
S1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)S3: NeueFilmeNett(Titel, Regie, Jahr, Genre) (Nebenbedingung: Jahr > 2000)S4: NeueFilmeBöse(Titel, Regie, Genre) (Nebenbedingung: Jahr > 2000)S5: AktuelleFilme(Titel, Regie, Genre) (Nebenbedingung: Jahr = 2004)
Modellierung zur Optimierung
Modellierung zur Beantwortbarkeit(S4 & S5)
60
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
61
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfrageplanung
• Gegeben
▸ Eine Anfrage q an das globale Schema
▸ Lokale Schemata
• Gesucht!
▸ Sequenz von Anfragen q1!…!qn
▸ Jedes qi kann von einem Wrapper ausgeführt werden
▸ Die geeignete Verknüpfung von q1,…,qn beantwortet q
! Innerhalb eines Plans durch Joins: " -> ⋈
! Verschiedene Pläne werden durch UNION zusammengefasst : " -> $
▸ Von q1⋈ … ⋈qn berechnete Tupel sind korrekte Antworten auf q
62
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfrageplan
• Wir nennen q1⋈ … ⋈qn einen Anfrageplan.
• Bemerkungen
▸ „Semantisch korrekt“ haben wir noch nicht definiert.
▸ In der Regel gibt es viele Anfragepläne.
▸ Die qi heißen Teilanfragen oder Teilpläne.
63
Anfrageplan
• Gegeben eine globale Anfrage q. Ein Anfrageplan p für q ist eine Anfrage der Form q1⋈ … ⋈qn, so dass
▸ jedes qi von genau einem Wrapper ausgeführt werden kann,
▸ und jedes von p berechnete Tupel eine semantisch korrekte Antwort für q ist.
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Query Containment
• Intuitiv wollen wir das Folgende:
▸ Ein View v liefert (nur) semantisch korrekte Anfragen auf eine globale Anfrage q, wenn seine Extension im Ergebnis von q enthalten ist.
• Bemerkung
▸ Der wichtige Teil ist der letzte: „für alle möglichen Instanzen von S“
▸ Die können wir natürlich nicht alle ausprobieren
64
Query containment
Sei S ein Datenbankschema, I eine Instanz von S und q1, q2 Anfragen gegen I. Sei q(I) das Ergebnis einer Anfrage q angewandt auf I.
Dann ist q1 enthalten in q2, geschrieben q1 % q2 genau dann wenn q1(I) % q2(I) für alle möglichen I.
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Semantische Korrektheit
• Damit können wir definieren, wann ein Plan semantisch korrekt ist (aber wir können das noch nicht testen)
• Bemerkung
▸ Also ist die Extension von p in der von q enthalten.
▸ Die Extension von q gibt es natürlich nicht.
65
Semantische Korrektheit
Sei S ein globales Schema, q eine Anfrage gegen S, und p eine Verknüpfung von Views v1,…,vn gegen S, die als linke Seite von LaV Korrespondenzen definiert sind.
Dann ist p semantisch korrekt für q, genau dann wenn p % q.
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Viele Anfragepläne
• Bemerkungen
▸ Der UNION Operator entfernt Duplikate – dahinter verbirgt sich das Problem der Ergebnisintegration.
▸ Wie das Ergebnis berechnet wird, ist Sache der Anfrageoptimierung.
! Pläne können sich in Teilanfragen überlappen.
▸ Das Ergebnis von q hängt von den definierten Korrespondenzen ab.
66
AnfrageergebnisGegeben eine globale Anfrage q. Seien p1, …, pn die Menge aller Anfragepläne für q. Dann ist das Ergebnis von q definiert als
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfragebearbeitung – LaV
• 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.
▸ Gesamtergebnis ist dann die UNION der Ergebnisse mehrerer Anfrageumschreibungen
"Query Answering Using Views"
67
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BeispielGlobales Schema Lehrt(prof,kurs_id, sem, eval, univ) Kurs(kurs_id, titel, univ)
Quelle 1: Alle DatenbankveranstaltungenCREATE VIEW DB-kurs ASSELECT K.titel, L.prof, K.kurs_id, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND L.univ = K.univAND K.titel LIKE „%_Datenbanken“
Quelle 2: Alle HPI-VorlesungenCREATE VIEW HPI-VL ASSELECT K.titel, L.prof, K.kurs_id, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND K.univ = „HPI“AND L.univ = „HPI“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 = „HPI“
Umgeschriebene Anfrage SELECT prof FROM DB-kurs D WHERE D.univ = „HPI“
68
Warum nicht Quelle 2 einbeziehen?
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BeispielGlobale AnfrageSELECT titel, kurs_idFROM Kurs KWHERE L.univ = „HPI“
Umgeschriebene AnfrageSELECT titel, kurs_idFROM DB-kurs DWHERE D.univ = „HPI“UNIONSELECT titel, kurs_idFROM HPI-VL
69
Globales Schema Lehrt(prof,kurs_id, sem, eval, univ) Kurs(kurs_id, titel, univ)
Quelle 1: Alle DatenbankveranstaltungenCREATE VIEW DB-kurs ASSELECT K.titel, L.prof, K.kurs_id, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND L.univ = K.univAND K.titel LIKE „%_Datenbanken“
Quelle 2: Alle HPI-VorlesungenCREATE VIEW HPI-VL ASSELECT K.titel, L.prof, K.kurs_id, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND K.univ = „HPI“AND L.univ = „HPI“AND K.titel LIKE „%VL_%“
Warum hier doch Quelle 2 einbeziehen?
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – Anfragebearbeitung
• Gegeben: Anfrage Q und Sichten V1, ..., Vn
• Gesucht: Umgeschriebene Anfrage Q’, die
▸ bei Optimierung: ä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 und maximal containment?
70
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
71
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – Anfrageumschreibungen
• Gegeben sind eine Anfrage Q (query) und eine 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
72
Query containment (Wdh.)
Sei S ein Datenbankschema, I eine Instanz von S und q1, q2 Anfragen gegen I. Sei q(I) das Ergebnis einer Anfrage q angewandt auf I.
Dann ist q1 enthalten in q2, geschrieben q1 % q2 genau dann wenn q1(I) % q2(I) für alle möglichen I.
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – Beispiele
SELECT K.titel, L.prof, K.kurs_id, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND K.univ = „Humboldt“AND! L.univ = „Humboldt“AND K.titel LIKE „%VL_%“
SELECT K.titel, L.prof, K.kurs_id, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND K.univ = „Humboldt“AND! L.univ = „Humboldt“
??? !
73
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – Beispiele
SELECT K.titel, K.kurs_idFROM Kurs KAND K.univ = „Humboldt“AND K.titel LIKE „%VL_%“
???
SELECT K.titel, K.univFROM Kurs KAND K.univ = „Humboldt“AND K.titel LIKE „%VL_%“
SELECT K.titel, K.kurs_idFROM Kurs KAND K.univ = „Humboldt“
???
SELECT K.titelFROM Kurs KAND K.univ = „Humboldt“
" "
74
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – Beispiele
• Prüfung von containment durch Prüfung aller möglichen Datenbanken?
▸ Zu komplex!
• Prüfung von containment durch Existenz eines containment mapping.
▸ NP-vollständig in |Q|+|Q‘| nach [CM77]
▸ Mehrere Algorithmen
▸ Besprechen wir hier nicht.
???
Quelle 5:CREATE VIEW Kurse2 ASSELECT K.titel, K.univFROM Kurs KAND K.univ = „Humboldt“
Quelle 3:CREATE VIEW Hum-Kurse ASSELECT K.titel, K.univFROM Lehrt L, Kurs KWHERE L.kurs_id = K.kurs_idAND K.univ = „Humboldt“AND! L.univ = „Humboldt“
!
75
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Anfrageumschreibung
• Prinzipiell:
▸ Prüfe jede Kombination an Sichten auf Containment
▸ Unendlich viele Kombinationen, da eine Sicht auch mehrfach in eine Umschreibung eingehen kann.
• Verbesserungen:
▸ Satz: Umschreibung mit maximal so vielen Sichten wie Relationen in Anfrage (ohne range-Prädikate).
▸ Geschickte Vorauswahl der Sichten: Nutzbarkeit
! Bucket Algorithmus
76
Kapitel 7GaV und LaV
• Übersicht Anfrageplanung
• Global-as-View (GaV)
• Modellierung
• Anfragebearbeitung
• Local-as-View (LaV)
• Modellierung
• Anfragebearbeitung
• Containment
• Bucket Algorithmus
77
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – Bucket Algorithm (BA)
• Problem:
▸ Man muss exponentiell viele Kombinationen auf containment prüfen.
▸ Schon die Prüfung selbst ist ein NP-vollständiges Problem
! es gibt jedoch effiziente Algorithmen
! idR sind die Kombinationen nicht groß (Anzahl der Relationen)
• Idee zur weiteren Verbesserung:
▸ Reduktion der Anzahl der Kombinationen durch geschickte Vorauswahl
▸ Jede Relation der Anfrage erhält einen bucket (Eimer).
▸ Schritt 1: Füge in jeden bucket alle Sichten, die für die Relation nutzbar sind.
▸ Schritt 2: Prüfe alle Anfrageumschreibungs-Kombinationen, die aus jedem bucket genau eine Sicht enthalten.
78
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
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
79
SQL vs. Datalog Notation
SELECT S.price P, L.region_name RNFROM sales S, time T, ... WHERE !S.day_id = T.day_id AND ! S.product_id = P.product_id AND! S.shop_id = L.shop_id AND! L.shop_id = 123 AND! T.year > 1999
q(P,RN) :- sales(SID,PID,TID,RID,P,...), time(TID,D,M,Y), localization(SID,LID,SN,RN), product(PID,PN,PGN), Y > 1999, SID = 123
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Beispiel
Quelle 1:CREATE VIEW V1 ASSELECT E.stud, K.titel, K.sem, K.kurs_idFROM Eingeschrieben E, Kurs KWHERE E.kurs_id = K.kurs_idAND K.kurs_id ≥ 500AND E.sem ≥ WS98
Quelle 2:CREATE VIEW V2 ASSELECT E.stud, L.prof, E.sem, L.kurs_idFROM Eingeschrieben E, Lehrt LWHERE E.kurs_id = L.kurs_idAND E.sem = L.sem
Quelle 3:CREATE VIEW V3 ASSELECT E.stud, E.kurs_idFROM Eingeschrieben EWHERE E.sem ≤ WS94
Quelle 4:CREATE VIEW V4 ASSELECT L.prof, K.kurs_id, K.titel, E.semFROM Eingeschrieben E, Kurs K, Lehrt LWHERE E.kurs_id = K.kurs_idAND E.kurs_id = L.kurs_idAND L.sem = E.semAND E.sem ≤ WS97
V1(stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98
V2(stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
V3(stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94
V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem), K(kurs_id, titel), E(stud, kurs_id, sem), sem ≤ WS97
80
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Beispiel
Anfrage Q (in SQL)SELECT E.stud, K.kurs_id, L.profFROM Lehrt L, Eingeschrieben E, Kurs KWHERE E.kurs_id = L.kurs_idAND E.sem = L.semAND K.kurs_id = E.kurs_idAND E.sem ≥ WS95 AND kurs_id ≥ 300
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
81
V1(stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98
V2(stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
V3(stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94
V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem), K(kurs_id, titel), E(stud, kurs_id, sem), sem ≤ WS97
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail
Teilziele (subgoals) von Q
Erzeuge für jedes Teilziel einen bucket.
Bucket 1: Lehrt(prof, kurs_id, sem)
Bucket 2: Eingeschrieben(stud, kurs_id, sem)
Bucket 3: Kurs(kurs_id, titel)Fülle Sichten in die buckets.
82
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail
•Eine Sicht wird in ein bucket gestellt, wenn mindestens ein Teilziel der Sicht „geeignet“ ist. Also:
•Für jeden bucket
▸ Für jede Sicht:
! Für jedes Teilziel der Sicht
• Prüfung auf „Eignung“:
1.UnifierMapping von allen Attributen im Teilziel von Q auf Attribute im Teilziel von V. D.h.: Alle Anfrageattribute müssen vorkommen.
2. Kompatibilität: Prädikate sind passend.
83
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)prof wird nicht exportiert!
84
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V1(stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
85
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V2(stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2
prof wird nicht exportiert!
86
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V3(stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
87
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem), K(kurs_id, titel), E(stud, kurs_id, sem), sem ≤ WS97
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
V1
88
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V1(stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
V1 V2
89
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V2(stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
sem ( WS95 vs. sem ) WS94
V1 V2
90
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V3(stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
stud wird nicht exportiert!
V1 V2
91
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem), K(kurs_id, titel), E(stud, kurs_id, sem), sem ≤ WS97
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
V1 V2
V1
92
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V1(stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
titel wird nicht exportiert!
V1 V2
V1
93
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V2(stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
sem ) WS94
V1 V2
V1
94
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V3(stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – en detail Beispiel
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3: K(kurs_id, titel)
V2 V4
V1 V2
V1 V4
95
•Für jede Sicht: Betrachte deren Teilziele.
•Falls mind. ein Teilziel geeignet ist, füge Sicht in bucket ein.
Prüfung auf „Eignung“:1. Unifier: Alle Anfrageattribute müssen vorkommen.2. Kompatibilität: Prädikate sind passend.
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem), K(kurs_id, titel), E(stud, kurs_id, sem), sem ≤ WS97
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
BA – Besonderheiten
• Eine Sicht kann in verschiedenen Buckets auftauchen.
▸ Verschiedene Rollen
• Eine Sicht kann mehrmals in einem Bucket auftauchen.
▸ Wenn mehrere Teilziele passen
Bucket 1: L (prof, kurs_id, sem)
Bucket 2: E(stud, kurs_id, sem)
Bucket 3_neu: K(kurs_id)
Q (stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id), sem ≥ WS95, kurs_id ≥ 300
V2 V4
V1 V2
V1 V4
V1(stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98
V1
96
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Beispiel
Bucket 1: Lehrt(prof, kurs_id, sem)
Bucket 2: Eingeschrieben(stud, kurs_id, sem)
Bucket 3: Kurs(kurs_id, titel)
V2 V4
V1 V4
V1 V2
Kombinationen V2, V1, V1 V4, V1, V4 V2, V2, V4 V2, V2, V1 V2, V1, V4 V4, V1, V1 V4, V2, V4 V4, V2, V1
Frage: Welche Kombinationen (Pläne) sind zulässig?
97
Anfrage Q (in Datalog)Q(stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), sem ≥ WS95, kurs_id ≥ 300
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Kombinationen
• Wieviele Kombinationen?
▸ |B1| x |B2| x ...x |Bn| (n = |Q|)
▸ Falls m = Anzahl Sichten: mn
▸ Wichtig: Jede der exponentiell vielen Kombinationen liefert potentiell einen Teil des Ergebnisses.
• Eine Kombination Q‘ = V1,...,Vk ist eine Anfrageumschreibung von Q, falls
▸ Q‘ % Q
▸ (oder Q‘, {Prädikate} % Q)
98
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Kombinationen
Kombinationen V2, V1, V1 V4, V1, V4 V2, V2, V4 V2, V2, V1 V2, V1, V4 V4, V1, V1 V4, V2, V4 V4, V2, V1
V1 (stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98V2 (stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
V3 (stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem),K(kurs_id, titel),E(stud, kurs_id, sem), sem ≤ WS97
Anfrage: Q (stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), # sem ≥ WS95, kurs_id ≥ 300
Einzelne Sichten nützlich (in Bezug auf Anfrage), aber zusammen Widerspruch: sem # WS98 (V1) vs. sem $ WS97 (V4)
99
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Kombinationen
Kombinationen V2, V1, V1 V4, V1, V4 V2, V2, V4 V2, V2, V1 V2, V1, V4 V4, V1, V1 V4, V2, V4 V4, V2, V1
Q‘(stud, kurs_id, prof):- V2(stud‘, prof, sem, kurs_id), V1 (stud, titel‘, sem, kurs_id), V1 (stud‘, titel, sem‘, kurs_id)
x‘ markiert nicht gebrauchte Attribute.
100
V1 (stud, titel, sem, kurs_id) :- E(stud,kurs_id,sem), K(kurs_id,titel), kurs_id ≥ 500, sem ≥ WS98V2 (stud, prof, sem, kurs_id) :- E(stud, kurs_id, sem), L(prof, kurs_id, sem)
V3 (stud, kurs_id) :- E(stud, kurs_id, sem), sem ≤ WS94V4(prof, kurs_id, titel, sem) :- L(prof, kurs_id, sem),K(kurs_id, titel),E(stud, kurs_id, sem), sem ≤ WS97
Anfrage: Q (stud, kurs_id, prof) :- L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id, titel), # sem ≥ WS95, kurs_id ≥ 300
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Kombinationen
• Prüfe Q ⊇ Q’(stud, kurs_id, prof):- V2(stud‘, prof, sem, kurs_id), V1 (stud, titel‘, sem, kurs_id), V1 (stud‘, titel, sem‘, kurs_id)
• Wie?
▸ Q verwendet globale Relationen, Q’ verwendet Sichten
• Durch „unfolding“:Q’ = Q’’(stud, kurs_id, prof):- E(stud‘, kurs_id, sem), L(prof, kurs_id, sem), E(stud,kurs_id,sem), K(kurs_id,titel‘), kurs_id ≥ 500, sem ≥ WS98
• und Finden eines containment mappings.
101
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
LaV – BA – Kombinationen
•Endgültiges Ergebnis: Kombination aller Kombinationen durch UNION:
V1,V2 $ V2,V4
Umgeschriebene Anfrage Q‘:SELECT V1.stud, V1.kurs_id, V2.profFROM V1, V2WHERE V1.sem = V2.semAND V1.kurs_id = V2.kurs_id
UNION
SELECT V2.stud, V2.kurs_id, V2.profFROM V2, V4WHERE V2.sem = V4.semAND V2.kurs_id = V4.kurs_idAND V2.prof = V4.prof
102
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Zusammenfassung
103
GAV LAV
Modellierung
Anfragebearbeitung
Flexibilität
•Jede globale Relation definiert als Sicht auf eine oder mehr Relationen aus einer oder mehr Quellen.
•Meist UNION über mehrere Quellen
•Nebenbedingungen auf lokalen Quellen können nicht modelliert werden.
•Globale Relationen werden durch mehrere Sichten definiert.
•Definition oft nur in Kombination mit anderen globalen Relationen
•Nebenbedingungen auf globale Relationen können nicht definiert werden.
•Anfrageumschreibung: Einfaches View unfolding
•Eine große, umgeschriebene Anfrage
•Interessante Optimierungsprobleme
•Anfrageumschreibung: Answering queries using views
•UNION über viele mögliche umgeschriebene Anfragen
•Mehrere Algorithmen
•Viele Anwendungen
•Noch interessantere Optimierungsprobleme
•Bucket Algorithmus
•Views setzen Relationen mehrerer Quellen in Beziehung
•Jede View bezieht sich nur auf eine Quelle
Datenintegration & Datenherkunft | WS2010/11 | Melanie Herschel | Universität Tübingen
Literatur
• Gute Zusammenfassung für LaV und weiterführende Literatur:
▸ [Levy01] Alon Y. Halevy: Answering queries using views: A survey, in VLDB Journal 10: 270-294, 2001.
• Eher theoretisch
▸ [Ull00] Jeffrey D. Ullman: Information Integration Using Logical Views. TCS 2000: 189-210
▸ [Hull97] Managing Semantic Heterogeneity in Databases: A Theoretical Perspective. Richard Hull. PODS 1997 tutorial
▸ [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
104