Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Informationsintegration
Ulf Leser Sebastian Wandelt
Übersicht Anfrageplanung Global-as-View
Ulf Leser: Informationsintegration 2
Inhalt dieser Vorlesung
• Das Problem
• Anfrageplanung: Übersicht
• Global-as-View
– Modellierung
– GaV und Integritätsconstraints
– Implementierung
Ulf Leser: Informationsintegration 3
Das Problem
Föderiertes Schema
Externes Schema 1
Externes Schema N ...
Komponenten- schema
Komponenten-schema
Lokales internes Schema
Lokales internes Schema
Exportschema Exportschema
Quelle 1 Quelle 2 Quelle 3
Mediator
Anwendung 1 Anwendung 2
Wrapper
Wrapper Wrapper
Was steckt hinter diesen Pfeilen?
Ulf Leser: Informationsintegration 4
Abstrakter
• Bei enger Kopplung
– Wie beschreibt man die Beziehungen zwischen dem globalen und den verschiedenen lokalen Schemata?
– Wie benutzt man diese Beziehungen zur Anfrageplanung?
– Kann man aus solchen Beziehungen das integrierte Schema erzeugen?
Ulf Leser: Informationsintegration 5
Korrespondenzen
• Korrespondenz: Spezifikation semantisch äquivalenter Teile in Quellschema und globalem Schema
• Regel mit zwei Teilen
– Erster Teil: Teile im Quelle
– Zweiter Teil: Teile im Zielschema
– Dazwischen: Datentransformation und Restrukturierung
• Kann unterschiedliche Mechanismen benutzen
– Global-as-View, Local-as-View, …
• Wir wollen deklarative Korrespondenzen
• Woher?
– Manuell spezifizieren
– (Semi-)automatisch finden: Schema Matching (später)
Ulf Leser: Informationsintegration 6
Zwei Richtungen
• Virtuelle Integration: Anfragen übersetzen
– Gegeben Anfrage an Zielschema
– Finde semantisch äquivalente Sequenz von Anfragen an Quellschemata
• Materialisierte Integration: Daten transformieren
– Gegeben Quellschemata mit Daten
– Finde semantisch äquivalente Darstellung der Daten im Zielschema
• Beide Richtungen sind ähnlich, aber nicht identisch
• Wir konzentrieren uns auf die erste Richtung
Ulf Leser: Informationsintegration 7
Weiteres Vorgehen
• Erst konkret, dann abstrakter
• Übersicht Anfragebearbeitung
• Global as View und View Unfolding
• Anfragekorrespondenzen und semantische Korrektheit
• Local as View und Query Containment
• Anfrageoptimierung
• Umgang mit beschränkten Quellen
Ulf Leser: Informationsintegration 8
Inhalt dieser Vorlesung
• Das Problem
• Anfrageplanung: Übersicht
• Global-as-View
– Modellierung
– GaV und Integritätsconstraints
– Implementierung
Ulf Leser: Informationsintegration 9
Anfragebearbeitung
• Aufgabe
– 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
Lokale Exportschemata
Korrespondenzen
Ulf Leser: Informationsintegration 10
Anfragebearbeitung
• Schritt 1: Anfrageplanung (in den nächsten Stunden)
– Welche Quellen können / sollen / müssen benutzt werden?
– Welche Teile der Anfrage sollen wohin geschickt werden?
• Schritt 2: Anfrageübersetzung
– Aus der Sprache der globalen Schema in die Sprache der Quellen
• Schritt 3: Anfrageoptimierung
– Wer führt was wann aus (Pushen, Reihenfolge)?
– Wer kann was ausführen (Kompensation)?
• Schritt 4: Anfrageausführung
– Monitoring, Puffern, Cachen, Re-Optimieren
• Schritt 5: Ergebnisintegration
– Duplikaterkennung und Konfliktauflösung
Ulf Leser: Informationsintegration 11
Schritt 1 & 2
Anfrage-planung
Eingabe: Benutzeranfrage und Anfragekorrespondenzen
Aufgabe: Berechnet Anfragepläne. Ein Anfrageplan ist eine Menge von logischen Anfragen an Datenquellen, in der Regel verknüpft durch Join-Prädikate. Jeder Plan muss ausführbar sein und nur semantisch korrekte Ergebnisse berechnen. Sollten mehrere Anfragepläne existieren, ist es auch Aufgabe der Anfrageplanung zu entscheiden, welche davon ausgeführt werden sollen.
Ergebnis: Ein oder mehrere Anfragepläne
Anfrage- übersetzung
Eingabe: Ein Anfrageplan
Aufgabe: Ein Anfrageplan besteht aus Teilanfragen, die jeweils genau eine Datenquelle adressieren. Diese Teilanfragen sind syntaktisch auf die Integrationsschicht zugeschnitten. Die An- frageübersetzung muss jede Teilanfrage in einen unmittelbar von der betreffenden Datenquelle ausführbaren Befehl übersetzen.
Ergebnis: Ein übersetzter Anfrageplan
Ulf Leser: Informationsintegration 12
Schritt 3 & 4
Anfrage- optimierung
Eingabe: Ein übersetzter Anfrageplan
Aufgabe: Anfragepläne bestehen aus Teilanfragen, für die noch nicht feststeht, in welcher Reihenfolge sie berechnet und wo in ihnen enthaltene oder sie verbindende Anfrageprädikate ausgeführt werden. Die Festlegung dieser Punkte ist die Aufgabe der Anfrageoptimierung, deren Ergebnis ein (physischer) Ausführungsplan ist.
Ergebnis: Ein Ausführungsplan
Anfrage- ausführung
Eingabe: Ein Ausführungsplan
Aufgabe: Ein Ausführungsplan kann unmittelbar ausgeführt werden, muss aber in seiner Ausführung überwacht werden, da Netzwerkverbindungen oftmals unzuverlässig sind. Außerdem müssen Prädikate der Benutzeranfrage, deren Ausführung nicht an eine Datenquelle delegiert wurden, im Integrationssystem ausgeführt werden.
Ergebnis: Eine Menge von Ergebnistupeln
Ulf Leser: Informationsintegration 13
Schritt 5
Ergebnis- integration
Eingabe: Pro Ausführungsplan eine Menge von Ergebnistupeln
Aufgabe: Die Ergebnisse der einzelnen Ausführungspläne sind oftmals redundant oder uneinheitlich. Während der Ergebnisintegration werden die einzelnen Ergebnisse zu einem Gesamtergebnis integriert, was insbesondere Duplikaterkennung und Auflösen von Widersprüchen in den Daten erfordert.
Ergebnis: Das Ergebnis der Benutzeranfrage
Ulf Leser: Informationsintegration 14
Beispiel
• Filmwelt
• Vereinfachende Annahmen
– Quellen bestehen nur aus einer (Export-)Relation
– Keine Datenmodellheterogenität
• Nehmen wir jetzt immer an
– Keine strukturelle oder schematische Heterogenität
• Nehmen wir ganz selten an
– Keine semantische Heterogenität
• Gleiche Namen = gleiche Konzepte
• Nehmen wir manchmal an
Ulf Leser: Informationsintegration 15
Beispiel
• Globales Schema
• Datenquellen
Ulf Leser: Informationsintegration 16
Anfrageplanung
• Globale Anfrage
– „Alle Filme, in denen Hans Albers eine Hauptrolle spielte“
• Was kommt in Frage?
– film: Quellen imdb.movie und fd.film
– spielt: Quellen imdb.acts und fd.spielt
• Ergibt vier Anfragepläne
Ulf Leser: Informationsintegration 17
Vier Anfragepläne
• Jeder Plan = 2 Teilpläne
– Teilpläne sind quellspezifisch
• Wer führt Joins zwischen Teilplänen aus?
• System kann auswählen
– Alle Pläne: teuer,vollständig
– Schnellster Plan
– Plan mit dem größten Ergebnis
– …
Ulf Leser: Informationsintegration 18
Fragen
• Kann man nicht imdb.movie ⋈ imdb.acts gemeinsam
betrachten?
– Doch – aber wir nehmen (noch) Quelle = „eine Relation“ an
– Später (GaV)
• Warum sollte man imdb.movie und fd.spielt zusammen
in einem Plan benutzen?
– Weil Quellen unvollständig und fehlerhaft sind
– Daher können Kombination neue korrekte Tupeln produzieren
– Annahme: Gleiche Werte in den Joinattributen
• Hier: Filmnamen, Schauspielernamen
Ulf Leser: Informationsintegration 19
Beispiel
imdb.movie
Vögel, Hitchcock
Münchhausen, von Baky
imdb.acts
Vögel, Kelly, Hauptrolle
Münchhausen, Bendow, Nebenrolle
fd.film
Vögel, Hitchcock
Münchhausen, Bürger
fd.spielt
Vögel, Kelly, Hauptrolle
Münchhausen, Albers, Hauptrolle
Movie ⋈ acts
-
film ⋈ spielt
Münchhausen, Bürger, Hauptrolle
film ⋈ acts
-
movie ⋈ spielt
Münchhausen, van Baky, Hauptrolle
Ulf Leser: Informationsintegration 20
Anfrageübersetzung
SELECT titel, rolle
FROM spielt
WHERE schauspieler_name=‚Hans Albers‘
AND rolle=‚Hauptrolle‘
SELECT title, role
FROM imdb.acts
WHERE actor_name=‚Hans Albers‘
AND role=‚main role‘;
SELECT titel, rolle
FROM fd.spielt
WHERE s…_name=‚Hans Albers‘
AND rolle=‚Hauptrolle‘
• Jeder Teilplan kann an eine Quelle geschickt werden
– Übersetzung der Schemaelementnamen
– Übersetzung SQL Anfrage in Web-Service, HTTP, XQuery, …
– Übersetzung von Konstanten in einer Query
• Was heißt „Hauptrolle“ in der imdb?
Ulf Leser: Informationsintegration 21
Anfrageoptimierung
TP2:
SELECT title, role
FROM imdb.acts
WHERE actor_name=‚Hans Albers‘
AND role=‚main role‘;
TP1:
SELECT title, director
FROM imdb.movie;
• Lokale Optimierung: Jeder Plan einzeln
• Globale Optimierung: Gesamtmenge aller Pläne (später)
• Fragen
– Optimale Reihenfolge der Ausführung der Teilpläne?
– Möglicherweise parallele Ausführung?
– Bedingungen pushen oder lokal ausführen?
Ulf Leser: Informationsintegration 22
Einige Möglichkeiten
• TP1, dann TP2, dann Join im Mediator
– Benötigt Download aller Filme der IMDB
– Vermutlich teuer
• TP1 und TP2 parallel
– Ergebnis von TP1 ist für TP2 unerheblich
– Immer noch teuer
• Erst TP2, dann TP1 umschreiben, Join im Mediator – Pushen der Tupel aus TP2 an TP1 (WHERE TITLE in (…))
– Keine Parallelisierung ganzer Anfragen mehr möglich
• Aber Pipelining
– Kleinere Zwischenergebnisse, vermutlich schneller
TP2:
SELECT title, role
FROM imdb.acts
WHERE actor_name=‚Hans Albers‘
AND role=‚main role‘;
TP1:
SELECT title, director
FROM imdb.movie;
Ulf Leser: Informationsintegration 23
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
• Fehlende Operationen im Mediator ausführen
– Nicht-pushbare Selektionen
– Joins zwischen Quellen
Ulf Leser: Informationsintegration 24
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
imdb.movie
Vögel, Hitchcock
Münchhausen, von Baky
imdb.acts
Vögel, Kelly, Hauptrolle
Münchhausen, Bendow, Nebenrolle
fd.film
Vögel, Hitchcock
Münchhausen, Bürger
fd.spielt
Vögel, Kelly, Hauptrolle
Münchhausen, Albers, Hauptrolle
… ⋈ … UNION … ⋈ … UNION …
-
Münchhausen, Bürger, Hauptrolle
Münchhausen, von Baky, Hauptrolle
-
Ulf Leser: Informationsintegration 25
Inhalt dieser Vorlesung
• Das Problem
• Anfrageplanung: Übersicht
• Global-as-View
– Modellierung
– GaV und Integritätsconstraints
– Implementierung
Ulf Leser: Informationsintegration 26
Modellierung von Datenquellen
• Relationales Modell
• Kernidee: Modellierung strukturell heterogener Quellen in Bezug auf ein globales Schema als Views (Sichten)
• Sichten verknüpfen Relationen miteinander
• Sichten sind hier definiert auf Relationen eines Schemas (mehrerer Schemata) und produzieren eine Relation des anderen Schemas
Ulf Leser: Informationsintegration 27
Global as View / Local as View
• Global as View (GaV)
– Relationen des globalen Schemata werden als Sichten auf die lokalen Schemata der Quellen ausgedrückt
• Local as View (LaV)
– Relationen der Schemata der Quellen werden als Sichten auf das globale Schema ausgedrückt
Ulf Leser: Informationsintegration 28
Global as View Beispiel
S1: IMDB( Titel, Regie, Jahr, Genre)
S2: MyMovies( Titel, Regie, Jahr, Genre)
S3: RegieDB( Titel, Regie)
S4: GenreDB( Titel, Jahr, Genre)
CREATE VIEW Film AS
SELECT *
FROM IMDB
UNION
SELECT *
FROM MyMovies
UNION
SELECT RegieDB.Titel, RegieDB.Regie, GenreDB.Jahr, GenreDB.Genre
FROM RegieDB, GenreDB
WHERE RegieDB.Titel = GenreDB.Titel
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
Ulf Leser: Informationsintegration 29
Zwei Arten von GaV Regel
• Einfache GaV Regeln: Quellspezifisch
– Verknüpfung über Quellen hinweg übernimmt die Anfrageplanung
– Besser wartbar, denn Änderung einer Quelle betrifft wenige, klar definierte Sichten
– Einfacher zu erweitern mit neuen Quellen, denn bestehende Views müssen nicht angefasst werden
• Komplexe GaV Regeln: Quellübergreifend
– Sicht ist eine Anfrage in einer Multidatenbanksprache
– Sicht fasst alle Objekte einer globalen Relation zusammen
– Anfrageplanung übernimmt nur noch Verknüpfung zwischen verschiedenen Relationen, d.h., Joins in der globalen Anfrage
– Weniger robust, schwerer zu erweitern
– Relationenspezifische Konfliktlösung kann in Sicht definiert werden
Ulf Leser: Informationsintegration 30
Fehlende Attribute, Umbenennung, …
S5: MDB( Titel, Regie, Jahr DATE)
S6: MovDB( Titel, Regie, Genre)
Film( Titel, Name, Jahr NUM(2), Genre)
Regisseur( Name, Foto, Alter)
Wie kommt man hier weiter?
(S5/S6 -> Film)
Ulf Leser: Informationsintegration 31
Fehlende Attribute, Umbenennung, …
S5: MDB( Titel, Regie, Jahr DATE)
S6: MovDB( Titel, Regie, Genre)
CREATE VIEW Film (Titel, Name, Jahr, Genre) AS
SELECT Titel, lastname(Regie), SQL.year(Jahr), NULL AS Genre
FROM MDB
UNION
SELECT Titel, Regie, NULL AS Jahr, Genre
FROM MovDB Fehlendes Attribut
• Andere Namen, fehlende Attribute, unterschiedliche Granularität, unterschiedliche Datentypen etc. relativ problemlos
Film( Titel, Name, Jahr NUM(2), Genre)
Regisseur( Name, Foto, Alter)
Datentyp
Umbenennung Granularität
Ulf Leser: Informationsintegration 32
Strukturelle Heterogenität – Aufsplittung
S7: FilmRegie( Titel, Name, Jahr)
S7: Genre (Titel, Genre)
CREATE VIEW Film AS
SELECT Titel, Name, Jahr, Genre
FROM FilmRegie, genre
WHERE filmregie.titel=genre.titel
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
• Zunächst kein Problem
• Aber Heterogenität in der Kardinalität film-genre
– Ist 1:1 im globalen Schema, 1:n in S7
– Führt zu mehreren Tupeln für einen Film im globalen Schema
– Problem – oder nicht
Ulf Leser: Informationsintegration 33
Strukturelle Heterogenität – Verschmelzung
S7: FilmRegie( Titel, DirFoto)
CREATE VIEW Film AS
SELECT Titel, NULL, NULL, Null
FROM FilmRegie
CREATE VIEW Regisseur AS
SELECT NULL, DirFoto, NULL
FROM FilmRegie
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
• Problem: Assoziationen werden getrennt
• Tritt nur auf, wenn Attribute verschiedener globaler Relationen in einer lokalen Relation liegen und der verbindende Key/FK nicht existiert
– Möglichkeit: Künstlichen Schlüssel erzeugen
Ulf Leser: Informationsintegration 34
Vorschau: Local as View (LaV)
S7: FilmRegie( Titel, DirFoto)
CREATE VIEW S7 AS
SELECT F.Titel, R.Foto
FROM Film, Regisseur
WHERE F.Name = R.name
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
• Umgekehrte Betrachtung
• Assoziationen bleiben erhalten – name wird zwar nie instantiiert
– Aber man weiß, dass es einen verbindenden Namen gibt
– Damit kann man auch Anfragen planen
Ulf Leser: Informationsintegration 35
Inhalt dieser Vorlesung
• Das Problem
• Anfrageplanung: Übersicht
• Global-as-View
– Modellierung
– GaV und Integritätsconstraints
– Implementierung
Ulf Leser: Informationsintegration 36
Integritätsconstraints
• 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}
– …
• Sind für korrekte Integration wichtig
Ulf Leser: Informationsintegration 37
Globale Integritätsconstraints
S1: IMDB( Titel, Regie, Jahr, Genre)
S2: MyMovies( Titel, Regie, Jahr, Genre)
Neuerfilm( Titel, Regie, Jahr, Genre);
Regisseur( Name, Foto, Alter);
IC: Jahr > 2000
CREATE VIEW NeuerFilm AS
SELECT * FROM IMDB
WHERE Jahr > 2000
UNION
SELECT * FROM MyMovies
WHERE Jahr > 2000
• IC auf globalem Schema in die Sichtdefinition aufnehmen
• Ausführung in der Quelle (push) oder im Mediator
Ulf Leser: Informationsintegration 38
Probleme mit globalen IC
S1: IMDB( Titel, Regie, Jahr, Genre)
S2: MyOldOrNewMovies( Titel, Regie) CREATE VIEW NeuerFilm AS
SELECT *
FROM IMDB
WHERE Jahr > 2000
UNION
SELECT Titel, Regie, NULL, NULL
FROM MyOldOrNewMovies
WHERE ??
• Quelle gibt keine Jahr-Informationen
• IC auf globalem Schema kann nicht überprüft werden
• Quelle kann nicht garantiert korrekt integriert werden
Neuerfilm( Titel, Regie, Jahr, Genre);
Regisseur( Name, Foto, Alter);
IC: Jahr > 2000
Ulf Leser: Informationsintegration 39
Lokale Integritätsconstraints
S8: NeueFilme( Titel, Regie, Genre)
IC: Jahr > 2000
CREATE VIEW Film AS
SELECT Titel, Regie, NULL, Genre
FROM NeueFilme
• IC in Quelle ist nicht im View ausgedrückt
• Warum ist das schlecht?
SELECT * FROM film WHERE jahr < 1950
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
Ulf Leser: Informationsintegration 40
Viele Quellen, lokale IC – Zu Hause ansehen
CREATE VIEW Film AS
SELECT *
FROM AlleFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM AlleFilmeBöse
UNION
SELECT *
FROM NeueFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM NeueFilmeBöse
UNION
SELECT Titel, Regie, 2012, Genre
FROM AktuelleFilme
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter) 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)
(Hintergrundwissen: Jahr > 2000)
S5: AktuelleFilme(Titel, Regie, Genre)
(Hintergrundwissen : Jahr = 2012)
Ulf Leser: Informationsintegration 41
Auswirkungen 1
Anfrage: SELECT * FROM Film
CREATE VIEW Film AS
SELECT *
FROM AlleFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM AlleFilmeBöse
UNION
SELECT *
FROM NeueFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM NeueFilmeBöse
UNION
SELECT Titel, Regie, 2004, Genre
FROM AktuelleFilme
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
Ulf Leser: Informationsintegration 42
CREATE VIEW Film AS
SELECT *
FROM AlleFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM AlleFilmeBöse
UNION
SELECT *
FROM NeueFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM NeueFilmeBöse
UNION
SELECT Titel, Regie, 2012, Genre
FROM AktuelleFilme
Auswirkungen 2
Anfrage: SELECT * FROM Film
WHERE Jahr > 2001
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei (NULL > 2001)
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei (leider)
Trägt voll zum Ergebnis bei
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter)
Ulf Leser: Informationsintegration 43
CREATE VIEW Film AS
SELECT *
FROM AlleFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM AlleFilmeBöse
UNION
SELECT *
FROM NeueFilmeNett
UNION
SELECT Titel, Regie, NULL, Genre
FROM NeueFilmeBöse
UNION
SELECT Titel, Regie, 2012, Genre
FROM AktuelleFilme
Auswirkungen 3
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei
Trägt nicht zum Ergebnis bei (2000 > 1950)
Trägt nicht zum Ergebnis bei
Trägt nicht zum Ergebnis bei
Film( Titel, Name, Jahr, Genre)
Regisseur( Name, Foto, Alter) Anfrage: SELECT * FROM Film
WHERE Jahr < 1950
Ulf Leser: Informationsintegration 44
Fazit
• Integritätsconstraints im globalen Schema
– Verhindern die Integration von Quellen, wenn die Bedingung nicht durch eine Anfrage an die Quelle geprüft werden kann
• Integritätsconstraints in lokalen Schemata
– Können in globaler Sicht modelliert werden, wenn
• Nur exportierte Attribute betroffen sind (zur Optimierung)
• Nur nicht exportierte Attribute betroffen sind, die im globalen Schema vorhanden sind und die Form „attribute = const“ haben (als
konstante Spalten)
– Können ignoriert werden, wenn sie Attribute betreffen, die im globalen Schema nicht enthalten sind
Ulf Leser: Informationsintegration 45
Inhalt dieser Vorlesung
• Das Problem
• Anfrageplanung: Übersicht
• Global-as-View
– Modellierung
– GaV und Integritätsconstraints
– Implementierung / Anfragebearbeitung
Ulf Leser: Informationsintegration 46
Anfragebearbeitung – GaV
• Gegeben: Anfrage an globales Schema
• Gesucht: Alle Tupel, die die Anfragebedingungen erfüllen und in mindestens einer Quelle vorhanden sind
• Idee: Ersetze jede Relation der Anfrage durch ihre Sicht
– Sichtentfaltung, View Expansion, Query Unfolding
– Ergibt geschachtelte Anfrage
Ulf Leser: Informationsintegration 47
GaV – Beispiel 1
Film(Titel, Regie, Jahr, Genre)
Programm(Kino, Titel, Zeit)
SELECT *
FROM Film SELECT *
FROM ( SELECT *
FROM IMDB
UNION
SELECT R.Titel, R.Regie, G.Jahr, G.Genre
FROM RegieDB R, GenreDB G
WHERE R.Titel = G.Titel)
S1: IMDB(Titel, Regie, Jahr, Genre)
S2: RegieDB(Titel, Regie)
S3: GenreDB(Titel, Jahr, Genre)
• Generiert nicht alle möglichen Tupel
• Entscheidung über gewünschte Tupeln ist in der Sichtdefinition festgelegt
– Bei einfachen GaV Regeln trifft diese Entscheidung der Planer
Ulf Leser: Informationsintegration 48
GaV – Beispiel 2
SELECT F.Titel, P.Kino, F.Regie
FROM Film F, Programm P
WHERE F.Titel = P.Titel
AND P.Zeit > 20:00
SELECT F.Titel, P.Kino, F.Regie
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 P
WHERE F.Titel = P.Titel
AND P.Zeit > 20:00
S1: IMDB(Titel, Regie, Jahr, Genre)
S2: RegieDB(Titel, Regie)
S3: GenreDB(Titel, Jahr, Genre)
S7: KinoDB(Titel, Kino, Zeit)
Film(Titel, Regie, Jahr, Genre)
Programm(Kino, Titel, Zeit)
Ulf Leser: Informationsintegration 49
Direkte Übersetzung
P.Zeit>20:00
⋈Titel
KinoDB IMDB RegieDB GenreDB
⋈Titel
∪
SELECT F.Titel, P.Kino
FROM ( SELECT * FROM IMDB
UNION
SELECT R.Titel, R.Regie, …
FROM RegieDB R, GenreDB G
WHERE R.Titel = G.Titel) AS F,
( SELECT *
FROM KinoDB) AS P
WHERE F.Titel = P.Titel
AND P.Zeit > 20:00
titel,kino
Ulf Leser: Informationsintegration 50
Predicate-Pushdown
P.Zeit>20:00
⋈Titel
KinoDB IMDB RegieDB GenreDB
⋈Titel
∪ P.Zeit>20:00
⋈Titel
KinoDB IMDB RegieDB GenreDB
⋈Titel
∪
titel,kino
titel,kino
Ulf Leser: Informationsintegration 51
Alternative Join-Ausführung
P.Zeit>20:00
⋈Titel
KinoDB IMDB RegieDB GenreDB
⋈Titel
∪
P.Zeit>20:00
⋈Titel
KinoDB IMDB RegieDB GenreDB
⋈Titel
∪
titel,kino titel,kino
Ulf Leser: Informationsintegration 52
Anderes Beispiel
S5: MDB(Titel, Zeit, Regie)
S6: MovDB(Kino, Genre, Titel)
CREATE VIEW Film AS
SELECT MDB.Titel, Regie, NULL, Genre
FROM MDB, MovDB
WHERE MDB.Titel = MovDB.Titel
CREATE VIEW Programm AS
SELECT Kino, MDB.Titel, Zeit
FROM MovDB, MDB
WHERE MDB.Titel = MovDB.Titel
SELECT F.Titel, P.Kino
FROM Film F, Programm P
WHERE F.Titel = P.Titel
AND P.Zeit > 20:00
SELECT F.Titel, F.Jahr
FROM ( SELECT Titel, Regie, NULL, Genre
FROM MDB, MovDB
WHERE MDB.Titel = MovDB.Titel
) AS F,
( SELECT Kino, Titel, Zeit
FROM MovDB, MDB
WHERE MDB.Titel = MovDB.Titel
) AS P
WHERE F.Titel = P.Titel
AND P.Zeit > 20:00
Film(Titel, Regie, Jahr, Genre)
Programm(Kino, Titel, Zeit)
Ulf Leser: Informationsintegration 53
Direkte Übersetzung
P.Zeit>20:00
⋈Titel
MovDB MDB
⋈Titel ⋈Titel
SELECT F.Titel, F.Kino
FROM ( SELECT Titel, Regie, NULL, Genre
FROM MDB, MovDB
WHERE MDB.Titel = MovDB.Titel
) AS F,
( SELECT Kino, Titel, Zeit
FROM MovDB, MDB
WHERE MDB.Titel = MovDB.Titel
) AS P
WHERE F.Titel = P.Titel
AND P.Zeit > 20:00
titel,Kino
Ulf Leser: Informationsintegration 54
Entschachteln
P.Zeit>20:00
⋈Titel
MovDB MDB
⋈Titel ⋈Titel P.Zeit>20:00
⋈Titel
MovDB MDB
titel,Kino
titel,Kino
Ulf Leser: Informationsintegration 55
Projektionen pushen
P.Zeit>20:00
⋈Titel
MovDB MDB
titel,Kino
P.Zeit>20:00
⋈Titel
MovDB MDB
titel titel,Kino