informationsintegration schema mapping 3.1.2006 – 10.1.2006 felix naumann
TRANSCRIPT
Informationsintegration
Schema Mapping
3.1.2006 – 10.1.2006
Felix Naumann
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 2
Überblick
Schema Mapping Überblick Schema Mapping
(Matching) Mapping Interpretation (Transformation)
Schema Matching (Ausblick) Demo
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 3
ProblemstellungArchitekturenModellierungOptimierung
10,000 feet
1. Einführung in die Informationsintegration2. Szenarien der Informationsintegration3. Verteilung und Autonomie4. Heterogenität5. Materialisierte und virtuelle Integration6. Klassifikation integrierter Informationssysteme und 5-Schichten
Architektur 7. Mediator/Wrapper-Architektur8. Global-as-View und Lokal-as-View Modellierung9. Global-as-View Anfragebearbeitung 10. SchemaSQL11. Verteilte Anfragebearbeitung12. Dynamische Programmierung in verteilten Datenbanken13. Top-N Anfragen
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 4
KonflikteAnfragen
Systeme
Mapping
10,000 feet
1. Schema Mapping2. Schema Matching 3. Containment & Local-as-View Anfragebearbeitung4. Bucket Algorithmus 5. Peer-Data-Management Systeme (PDMS) 6. Informationsqualität7. Duplikaterkennung8. ETL & Data Lineage 9. Datenfusion - Union & Co.10. Hidden Web11. Semantic Web12. Forschungsprojekte - TSIMMIS, Garlic, Revere, etc13. Data Streams
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 5
Wdh: Virtuelle Integration
Datenfluss Anfragebearbeitung Entwicklung
Top-down Schema
Quelle 1 Quelle 2 Quelle 3
Mediator
Anwendung 1 Anwendung 2
Wrapper 2 Wrapper 3Wrapper 1
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 6
Wdh: Bottom-up oder Top-down Entwurf
Beim Entwurf des integrierten Systems Bottom-up:
Ausgelöst durch den Bedarf, mehrere Quellen integriert anzufragen
Schemaintegration ist wichtig. Änderungen schwierig, da neu integriert werden muss. Typisches Szenario: Data Warehouse
Top-down Ausgelöst durch globalen Informationsbedarf Vorteilhaft bei labilen Quellen Schemaintegration nicht nötig, bzw. leichter
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 7
Wdh: Bottom-up Entwicklung
Wesentliche Merkmale Vorhandene
lokale Schemata
ALLE Daten sollen integriert werden
Deshalb Schema-
integration
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 8
Wdh: Top-down Entwicklung
Wesentliche Merkmale Vorhandenes
globales Schema Passende lokale
Systeme werden gesucht
Deshalb LaV und Schema Mapping
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 9
Schemaintegration vs. Schema Mapping
Beide Probleme müssen strukturelle und semantische Heterogenität überwinden.
Aber: Schemaintegration liefert Schema Mapping „frei
Haus“. Zielschema hat keine eigene Semantik. Schemaintegration ist unflexibel.
Deshalb nun: Schema Mapping
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 10
Verwendung von Schema Mappings
Datentransformation
Q uellschem a
Q uelldaten
Ma
pp
ing
V iew
Transform ationsanfrage
Zie lschem aQ uellschem a
Transform ationsanfrageQ uelldaten Zie ldaten
M apping
Folie: Frank Legler
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 11
Verwendung von Schema Mappings
Schemaintegration
Schem a 2Schem a 1
Daten
in tegriertes Schem a
Daten
M apping
M apping M apping
Folie: Frank Legler
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 12
Verwendung von Schema Mappings
Schemaevolution
D atenQ uery (Insert/U pdate/D ele te)
verändertesSchem a
Schem a M apping
Schem aevolution
Folie: Frank Legler
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 13
Verwendung von Schema Mappings
Datentransformation Materialisierte Integration Virtuelle Integration
Zie lschem aQ uellschem a
Transform ationsanfrageQ uelldaten Z ie ldaten
M apping
Anfrage
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 14
Überblick
Schema Mapping Überblick Schema Mapping
(Matching) Mapping Interpretation (Transformation)
Schema Matching (Ausblick) Demo
Aus [FHP+02] und aus VLDB 2002 Vortragsfolien
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 15
Schema Mapping - Definitionen (Inter-Schema) Korrespondenz
Eine Zuordnung eines oder mehrerer Elemente eines (Quell-) Schemas zu einem oder mehreren Elementen eines anderen (Ziel-) Schemas
Auch: Value-correspondence (High-level) Mapping
Eine Menge von Korrespondenzen zwischen zwei Schemas. (Low-Level) Logisches Mapping
Logische Übersetzung eines oder mehrerer Mappings, die den Integritätsbedingungen beider Schemas gehorcht und die Intention des Nutzers wiederspiegelt.
Interpretation Übersetzung eines Mappings in ein oder mehrere logische Mappings Übersetzung eines logischen Mappings in eine Transformationsanfrage
Transformationsanfrage Anfrage in einer Anfragesprache (z.B. SQL), die Daten des Quellschemas in
die Struktur des Zielschemas überführt
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 16
Wdh: Schematische Heterogenität
Struktur Modellierung
Relation vs. Attribut Attribut vs. Wert Relation vs. Wert
Benennung Relationen Attribute
Normalisiert vs. Denormalisiert Geschachtelt vs. Fremdschlüssel
hier
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 17
Motivation Datentransformation zwischen heterogenen
Schemas Altes aber immer wiederkehrendes Problem Üblicherweise schreiben Experten komplexe Anfragen oder
Programme Zeitintensiv Experte für die Domäne, für Schemata und für Anfrage XML macht alles noch schwieriger
XML Schema, XQuery Idee: Automatisierung
Gegeben: Zwei Schemata und ein high-level Mapping dazwischen.
Gesucht: Anfrage zur Datentransformation
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 18
Motivation – Probleme
Generierung der „richtigen“ Anfrage unter Berücksichtigung der Schemata und des Mappings
Garantie, dass die transformierten Daten dem Zielschema entsprechen
Effiziente Datentransformation Für Materialisierung (Ausführung, inkrementell) Für virtuelle Integration (query-unfolding)
Hier: Nur Effektivität, nicht Effizienz
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 19
Motivation – Weitere Probleme Geschachtelte Strukturen
unterstützen Geschachteltes
relationales Modell XML Geschachtelte
Integritätsbedingungen Korrespondenzen
Nutzerfreundlich Automatische
Entdeckung
Intention des Nutzers erkennen und repräsentieren
Semantik der Daten erhalten Assoziationen entdecken
& erhalten Schemata und deren
Integritätsbedingungen nutzen
Neue Datenwerte erzeugen Korrekte Gruppierungen
erzeugen …
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 20
Quell- schema S
Ziel- schema T
• Möchte Daten aus S• Versteht/Kennt T• Versteht nicht immer S
(High-level) Mapping
“entspricht”
Daten
Mapping Compiler
(Low-level) Logisches Mapping(Transformationsprogramm oder
Anfrage)
“entspricht”
Schema Mapping im Kontext
Quelle: [FHP+02]
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 21
Schema Mapping im Kontext
1. Schema Matching &
Korrespondenzen
2. Schema Mapping
3. Mapping Interpretation
4. Daten-transformation
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 22
Wdh: Schematische Heterogenität – Beispiel
Normalisiert vs. Denormalisiert 1:n Assoziationen zwischen Werten wird
unterschiedlich dargestellt Durch Vorkommen im gleichen Tupel Durch Schlüssel-Fremdschlüssel Beziehung
Lösung: Schema Mapping
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 23
Schema Mapping Beispiel
•ARTICLE•artPK•title•pages
•AUTHOR•artFK•name
•PUBLICATION•pubID•title•date•author
SELECT artPK AS pubID title AS title null AS date null AS authorFROM ARTICLE
UNION SELECT null AS pubID null AS title null AS date name AS author FROM AUTHOR
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 24
Schematische Heterogenität – Lösungen
•ARTICLE•artPK•title•pages
•AUTHOR•artFK•name
•PUBLICATION•pubID•title•date•author
SELECT artPK AS pubIDtitle AS titlenull AS datename AS author
FROM ARTICLE, AUTHORWHERE ARTICLE.artPK = AUTHOR.artFK
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 25
Schematische Heterogenität – Lösungen
•ARTICLE•artPK•title•pages
•AUTHOR•artFK•name
•PUBLICATION•pubID•title•date•author
SELECT artPK AS pubIDtitle AS titlenull AS datename AS author
FROM ARTICLE LEFT OUTER JOIN AUTHORON ARTICLE.artPK = AUTHOR.artFK
Gilt Schlüssel-eigenschaft?
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 26
Wdh: Schematische Heterogenität – Lösungen
•ARTICLE•artPK•title•pages
•AUTHOR•artFK•name
•PUBLICATION•title•date•author
SELECT SK(title) AS artFK author AS name
FROM PUBLICATION
SELECT SK(title) AS artPK title AS title
null AS pagesFROM PUBLICATION
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 27
Wdh: Schematische Heterogenität – Beispiel
Geschachtelt vs. Flach 1:n Assoziationen werden unterschiedlich
dargestellt Als geschachtelte Elemente Als Schlüssel-Fremdschlüssel Beziehung
Lösung: Schema Mapping
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 28
Wdh: Schematische Heterogenität – Lösungen
•ARTICLE•artPK•title•pages•AUTHOR
•name
•PUBLICATION•pubID•title•author
LET $doc0 := document(“articles.xml") RETURN<root> { distinct-values ( FOR $x0 IN $doc0/authorDB/ARTICLE, $x1 IN $x0/AUTHOR RETURN
<publication> <pubID> { $x0/artPK/text() } </pubID><title> { $x0/title/text() } </title><author> { $x1/name/text() } </author></publication> )
} </root>
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 29
LET $doc0 := document(“publication.xml")RETURN<articles> { distinct-values ( FOR $x0 IN $doc0/dblp/publication RETURN <ARTICLE> <title> { $x0/title/text() } </title> { distinct-values ( FOR $x0L1 IN $doc0/dblp/publication WHERE $x0/title/text() = $x0L1/title/text() RETURN <AUTHOR> <name> { $x0L1/author/text() } </name>
</AUTHOR> )} </ARTICLE> ) } </articles>
Wdh: Schematische Heterogenität – Lösungen
•ARTICLE•title•AUTHOR
•name
•PUBLICATION•title•date•author
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 30
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 31
Überblick
Schema Mapping Überblick Schema Mapping
(Matching) Mapping Interpretation
Algorithmus (Transformation)
Schema Matching (Ausblick) Demo
Aus [FHP+02] und aus VLDB 2002 Vortragsfolien
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 32
Mapping – Das Problem Gegeben: Zwei Schemata
Unabhängig voneinander erzeugt Relational Geschachtelt Mit Integritätsbedingungen (Schlüssel/Fremdschlüssel) Stellen teilweise unterschiedliche Daten dar
Gegeben: Eine Menge von Korrespondenzen zwischen den Schemata
Gesucht: Anfrage, die Daten des einen in Daten des anderen Schemas transformiert, wobei Semantik des Quellschemas erhalten bleibt, Integritätsbedingungen des Zielschemas berücksichtigt werden, und möglichst alle Korrespondenzen berücksichtigt werden.
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 33
Relationale vs. XML Schemata
Relationale Schemata Flach
XML Schemata Flach oder geschachtelt
NF2
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 34
Mapping – Beispiel
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
Quelle für Beispiel: [FHP+02]
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 35
Mapping – Beispiel
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
Interpretation:- Erzeuge für jede firma in spendenDB. eine org in haushaltDB.- orgID muss „erfunden“ werden- stadt muss „erfunden“ werden
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 36
Mapping – Beispiel
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
Interpretation:- Erzeuge für jede firma in spendenDB. eine org in haushaltDB.- stadt muss „erfunden“ werden
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 37
„Erfinden“ von Werten Zwei Gründe zum Erfinden: non-null und Identität Non-null Werte
Erfundener Wert egal Z.B. „unbekannt“ oder „null“ (oder „Berlin“)
ID Werte Skolemfunktion:
Input: n Werte (beliebige Domäne) Output: bezgl. Input eindeutiger Wert (beliebiger Domäne) Beispiel: Konkatenation aller Inputwerte als String
Wert für org.orgID nicht egal, sondern je nach firma.name eindeutig!
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 38
Mapping – Beispiel
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
Interpretation:- Erzeuge für jede spendenDB.firma.stadt ein haushaltDB.stadthaushalt mit gleichem Namen.- Gruppiere jede firma unter den entsprechenden stadtHaushalt.
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 39
Mapping – Beispiel
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: stringInterpretation:- Erzeuge für jede firma in spendenDB. eine org in haushaltDB.- Erzeuge für jede spende in spendenDB eine einnahme in haushaltDB- Erzeuge für jede spende in spendenDB eine buchung in haushaltDB- Gruppiere korrekt: Schachtelung & Fremdschlüssel!
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 40
Mapping – Beispiel
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
Weitere Interpretation: &
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 41
Verschiedene Mapping Situationen
Team s [1, 1]
Team Nam e:string [1, 1]
Team [0, *]
ID:integer [1, 1]
Team URL:string [1, 1]
Nam e:string [1, 1]
Person [0, *]
ID:integer [1, 1]
DOB:date [0, 1]
root [1, 1]
Team Nam e:VARCHAR (10) [1, 1]
Team [0, *]
ID:VARCHAR [1, 1]
Team URL:VARCHAR (100) [0, 1]
Vornam e:VARCHAR (10) [1, 1]
Person [0, *]
ID:VARCHAR [1, 1]
Nachnam e:VARCHAR (10) [1, 1]
Team FK:INTEGER [1, 1]
Adresse
concat()
Quellschem aZielschem a
verschiedene Datentypen
2:1 Korrespondenz Attribute nicht Teil des Mappings
verschiedene Kardinalitäten
FK-Beziehung vs. Schachtelung
Folie: Frank Legler
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 42
Klassifikation von Mapping Situationen
Q uelle
M apping Situationen
Mapping S ituationen info lge fehlender K o rres pondenzen
Attribut des Q uellschemas n icht Te il des M appings
Attribut des Z ie lschemas n icht Te il des M appings
Teil e ines Schlüssel oder UN IQ UE-Constra in ts
Teil e ines F remd-schlüssels
erforderlich mit/ohne Vorgabewert
n icht erforderlich
E lement des Q uell- oder Z ie lschemas n icht Teil des M appings
Mapping Situationen, die einzelne Korrespondenzenbetreffen
Situationen in Abhängigke it von der Kard ina litaet
S ituationen in Abhängigke it vom Datentyp
Transformationsfunktionund/oder F ilter vorhanden
Zusammenhang der Q uellstrukturen
strukture lle r Zusammenhang
F remdschlüsselbasierter Zusammenhang
kein (offensichtlicher) Zusammenhang
Zusammenhang der Z ie lstrukturen
strukture lle r Zusammenhang
F remdschlüsselbasierterZusammenhang
kein (offensichtlicher) Zusammenhang
unterschied liche Strukturen in Q uelle und Z ie l
alle Kombinationen
1:1 Korrespondenzen n:1 Korrespondenzen m:n Korrespondenzen 1:n Korrespondenzen
(n icht untersucht)
Unterscheidungen je nach Zusammenhang der Q uell- und/oder Z ie lstrukturen ähnlich
Mapping Situationen, die mehr als eine Korrespondenzbetreffen
spezie lle S ituationen mit Choice-G ruppierungen
Erzeugung von Duplikaten
Element
Attribut
Z ie l
E lement
Attribut
(nur fü r A ttribute)
Folie: Frank Legler
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 43
Mapping Situationen infolge fehlender Korrespondenzen
Attribut des Quellschemasnicht Teil des Mappings
Attribut des Zielschemas nicht Teil des Mappings
Element des Quell- oderZielschemas nicht Teil desMappings
Teil eines Schlüssel oder UNIQUE-Constraints
Teil eines Fremd-schlüssels
erforderlich mit/ohneVorgabewert
nicht erforderlich
Klassifikation von Mapping Situationen
Folie: Frank Legler
nicht hier
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 44
Mapping Situationen, die einzelne Korrespondenzenbetreffen
1:1 Korrespondenzen n:1 Korrespondenzen m:n Korrespondenzen 1:n Korrespondenzen
Unterscheidungen je nachZusammenhang der Quell-und/oder Zielstrukturen
(nicht untersucht)
Quelle
Attribut
Element
(nur für Attribute)
Situationen inAbhängigkeit von derKardinalität
Transformationsfunktionund/oder Filter vorhanden
Situationen inAbhängigkeit vomDatentyp
Ziel
Attribut
Element
Klassifikation von Mapping Situationen
Folie: Frank Legler
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 45
Mapping Situationen, die mehrals eine Korrespondenzbetreffen
spezielle Situationen mit Choice-Gruppierungen
unterschiedliche Strukturen in Quelle und Ziel
Zusammenhang der Zielstrukturen
struktureller Zusammenhang
Fremdschlüsselbasierter Zusammenhang
kein (offensichtlicher)Zusammenhang
Zusammenhang der Quellstrukturen
struktureller Zusammenhang
Fremdschlüsselbasierter Zusammenhang
kein (offensichtlicher)Zusammenhang
alle Kombinationen
Klassifikation von Mapping Situationen
Folie: Frank Legler
nicht hier
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 46
Überblick
Schema Mapping Überblick Schema Mapping
(Matching) Mapping Interpretation
Algorithmus (Transformation)
Schema Matching (Ausblick) Demo
Aus [FHP+02] und aus VLDB 2002 Vortragsfolien
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 47
Mapping – Algorithmus
Drei Schritte1. Entdeckung von
intra-Schema Assoziationen
2. Entdeckung von inter-Schema logischen Mappings
3. Anfrage-erzeugung
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 48
Entdeckung von Assoziationen Schritt 1
Intra-schema Assoziationen zwischen Schemaelementen Relationale Sichten enthalten maximale Gruppen assoziierter Elemente Jede Sicht repräsentiert eine eigene „Kategorie“ an Daten der Datenquelle Unabhängig vom Mapping (aber beschränkt auf „gemappte“ Elemente)
Quell- schema S
Ziel- schema T
Assoziationen des Quellschemas
Assoziationen des Zielschemas
Quelle: [FHP+02]
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 49
Entdeckung von Assoziationen
Start: Alle „primären“ Pfade (primary paths) Assoziationen im Schema
ohne Integritätsbedingungen Relationale Schemas
Jede Relation entspricht einem primären Pfad
Geschachtelte Schemas Attribute einer Ebene Attribute geschachtelter
Ebenen
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 50
Entdeckung von Assoziationen
Betrachte nun Schlüssel / Fremdschlüssel (ICs)
Logische Relation Erweitere jeden
primären Pfad durch „Verfolgen“ der ICs (chase)
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 51
Entdeckung von Assoziationen
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
Spielen noch keine Rolle.
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 52
Entdeckung von logischen Mappings Schritt 2
Entdecke logische Mappings zwischen Quell- und Zielschema Betrachte alle Kombinationen aus Assoziationen des
Quellschemas und Assoziationen des Zielschemas Unter Berücksichtigung aller Korrespondenzen (sofern Korrespondenzen
zwischen ihnen überhaupt existieren)
Quell- schema S
Ziel- schema T
Element - Element Korrespondenzen
Logische Mappings
Assoziationen des Quellschemas
Assoziationen des Zielschemas
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 53
Entdeckung von logischen Mappings
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
&
&
&
& &
&
&
&
Ausgehende Korrespondenzen: Finden alle ein Ziel in der Kombination?
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 54
Entdeckung von logischen Mappings
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
&
&
&
Eingehende Korrespondenzen: Stammen sie alle aus Assoziationen der Kombination?
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 55
Entdeckung von logischen Mappings
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
&
&
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 56
Input des Nutzers bzw. Domänenexperten
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
&
&
1. Nutzer „malt“ Korrespondenzen
2. Nutzer wählt logische Mappings
(Interpretationen) aus
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 57
Erzeugung der Anfragen
Schritt 3 Erzeuge für jedes (ausgewählte) logische Mapping eine
Anfrage Auswahl und verknüpfen der entsprechenden Quelldaten Generierung der entsprechenden Zieldaten
Logisches MappingAnfrage:- entschachteln- joinen
Anfrage (target):- schachteln- splitten- Werte erfinden
Assoziationen des Quellschemas
Assoziationen des Zielschemas
Quell- schema S
Ziel- schema T
Element - Element Korrespondenzen
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 58
Erzeugung der Anfragen
2 Probleme Erfinden von Werten
NULL-Werte nicht immer ausreichend. Schlüssel und passende Fremdschlüssel müssen
erzeugt werden. Schachtelung
Es soll nicht eine logische Relation (flach) materialisiert werden, sondern geschachtelte Strukturen.
Es muss entsprechend gruppiert werden.
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 59
Erfinden neuer Werte Logische Relation: buchungen Wert für buchungID wird nicht gefüllt
Entweder: Egal Oder: Not-null: Dann Default-Wert, z.B. „null“ Oder ID: Dann eindeutigen Werte erzeugen Skolemfunktion, basierend auf
allen Werten des Mappings dieser logischen Relation haushaltDB
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB spenden spende firmaID: integer
spendeID: integer
projekt: string
betrag: decimal spender: string
buchungID = Sk(betrag)
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 60
Erfinden neuer Werte Logische Relation: einnahmen, buchungen buchungID-Attribute haben keine
Korrespondenz Assoziationen gingen verloren Also neue ID erfinden Wieder: Skolemfunktion basierend auf allen
Werten des Mappings dieser logischen Relation Trick wie gehabt: Gleiche Funktion für Schlüssel
und Fremdschlüssel
haushaltDB einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB spenden spende firmaID: integer
spendeID: integer
projekt: string
betrag: decimal spender: string
buchungID = Sk(spendeID,projekt,betrag)
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 61
Erfinden neuer Werte
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
buchungID = Sk(betrag, projekt)
Frage: Warum nicht Sk(betrag,spendeID,firmaID)?
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 62
Erfinden neuer Werte
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
buchungID = Sk(betrag,projekt,name)
Jetzt erst recht: Warum nicht Sk(betrag,projekt,name,firmaID)?
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 63
Erfinden neuer Werte Gegenfrage: Warum nicht gleiche ALLE ungemappten Werte? Vier Antworten (von Lucian Popa)
Prinzipiell ginge das, aber Duplikate könnten entstehen
2 Spenden, mit gleichem Betrag und gleichem Projekt aber von unterschiedlichen Firmen
firmenID könnte für User völlig uninteressant sein. Mapping hätte dann die Rolle
einer Projektion, in der Duplikate fehl am Platz wären
Sie wären sogar völlig uner-klärlich für den Nutzer
Minimalität Beide Varianten sind in
Ordnung, aber eine ist kleiner:Keine Duplikate
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 64
Gruppierung Alle Attribute erhalten Werte Aber:
Assoziationen könnten verloren gehen. Neue (falsche) Assoziationen könnten erzeugt werden
Deshalb: Gruppierung notwendig Trick: Virtuelle ID Generierung mittels Skolemfunktion basierend auf allen
Werten hierarchisch über der aktuellen Relation. Im Beispiel: Jedes Tupel haushaltDB erhält ID Sk(land, stadt) Jedes weitere Tupel aus firmen mit gleichen Werten für stadt und land errechnet
gleiche ID und wird unter gleichem Element geschachtelt.
haushaltDB land: string
stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
spendenDB firmen firma firmaID: integer
name: string
stadt: string
land: string
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 65
Erzeugung der Anfragen
Implementationsspezifisch Abhängig von Datenmodell
Relational Relational: SQL Relational XML: SQLX (Schachtelung und tagging des
Ergebnisses)
XML Relational: XQuery oder XSLT (tags weglassen)
XML XML: XQuery oder XSLT
In Clio Erzeugung proprietärer Regeln Dann: Übersetzung der Regeln in jeweilige Anfragesprache
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 66
Erzeugung der Anfragen
Erzeugung proprietärer Regeln in Clio for x in spenden
let a = x.spende.spendeID, b = x.spende.projekt return <einnahme = <spendeID = a, proj = b, buchungID = null>>
in einnahmenhaushaltDB einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB spenden spende firmaID: integer
spendeID: integer
projekt: string
betrag: decimal spender: string
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 67
Erzeugung der Anfragen
Erzeugung proprietärer Regeln in Clio for x in spenden
let a = x.spende.spendeID, b = x.spende.projekt, c = x.spende.betrag return <einnahme = <spendeID = a, proj = b, buchungID = Sk(a,b,c)>> in einnahmen, <buchung = <buchingID = Sk(a,b,c), datum = null, menge = c>> in buchungen
haushaltDB einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB spenden spende firmaID: integer
spendeID: integer
projekt: string
betrag: decimal spender: string
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 68
Erzeugung der Anfragen – XQuery
for x in spendenlet a = x.spende.spendeID, b = x.spende.projekt, c = x.spende.betrag return <einnahme = <spendeID = a, proj = b, buchungID = Sk(a,b,c)>> in einnahmen, <buchung = <buchingID = Sk(a,b,c), datum = null, menge = c>> in buchungen
LET $doc0 := document("input XML file goes here")RETURN <haushaltDB> { distinct-values ( FOR $x0 IN $doc0/spendenDB/spende RETURN <einnahme> <spendeID> { $x0/spendeID/text() } </spendeID> <proj> { $x0/projekt/text() } </proj> <buchungID> { "Sk32(", $x0/betrag/text(), ", ", $x0/spendeID/text(), ", ", $x0/projekt/text(), ")" } </buchungID> </einnahme> ) } { distinct-values ( FOR $x0 IN $doc0/spendenDB/spende RETURN <buchung> <buchungID> { "Sk32(", $x0/betrag/text(), ", ", $x0/spendeID/text(), ", ", $x0/projekt/text(), ")" } </buchungID> <menge> { $x0/betrag/text() } </menge> </buchung> ) } </haushaltDB>
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 69
Erzeugung der Anfragen – SQL
for x in spendenlet a = x.spende.spendeID, b = x.spende.projekt, c = x.spende.betrag return <einnahme = <spendeID = a, proj = b, buchungID = Sk(a,b,c)>> in einnahmen, <buchung = <buchingID = Sk(a,b,c), datum = null, menge = c>> in buchungen
-- CREATE VIEW einnahme ASSELECT x0.spendeID AS spendeID, x0.projekt AS proj, RTRIM('Sk32(` CHAR(x0.betrag) || ',' || (CHAR(x0.spendeID) || ',' || CHAR(x0.projekt) || ')') AS buchungIDFROM spendenDB.spende x0------------------------------------------------------- CREATE VIEW buchung ASSELECT RTRIM('Sk32(' || CHAR(x0.betrag) || ',' || CHAR(x0.spendeID) || ',' || CHAR(x0.projekt) || ')') AS buchungID, x0.betrag AS mengeFROM spendenDB.spende x0
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 70
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 71
Einbettung in GaV/LaV Ergebnis des Schema Mapping Prozess sind Anfragen
Eine oder mehrere Anfragen pro Assoziation Relationales Modell:
Jede Ziel-Relation entspricht einem primären Pfad Verwerfe Fremdschlüssel Jede Ziel-Relation entspricht einer Assoziation Jede Anfrage (oder Vereinigung von Anfrage) liefert Daten für
eine Relation, also wie GaV. Schema Mapping leistet aber mehr!
Erzeugung von Daten für mehrere Zielrelationen zugleich Unter Berücksichtigung von Integritätsbedingungen in Quell- und
Zielschema „Kombination von LaV und GaV“: GLaV
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 72
Schematische Heterogenität
Struktur Modellierung
Relation vs. Attribut Attribut vs. Wert Relation vs. Wert
Benennung Relationen Attribute
Normalisiert vs. Denormalisiert Geschachtelt vs. Fremdschlüssel Geschachtelt vs. Flach
bisher
Higher-order Mappings
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 73
High-order Mappings
Person( Id, Vorname, Nachname,männlich,
weiblich)
Männer( Id, Vorname, Nachname)Frauen( Id, Vorname, Nachname)
Person( Id, Vorname, Nachname, Geschlecht)
Attribut vs. Wert
Relation vs. Wert
Relation vs. Attribut
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 74
High-order Mappings
Männer Vorname NachnameFrauen Vorname Nachname
Person Vorname Nachname Geschlecht
`m´
`w´
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 75
High-order Mappings
Männer Vorname NachnameFrauen Vorname Nachname
Person Vorname Nachname Geschlecht
= `m´
= `w´
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 76
Überblick
Schema Mapping Überblick Schema Mapping
(Matching) Mapping Interpretation
Algorithmus (Transformation)
Schema Matching (Ausblick) Demo
Aus [FHP+02] und aus VLDB 2002 Vortragsfolien
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 77
Schema Matching
Ausblick auf nächste Woche: Schema Matching erzeugt automatisch
Korrespondenzen Basierend auf
Namen der Schemaelemente (label-based) Darunterliegende Daten (instance-based) Struktur des Schemas (structure-based) Mischformen, Meta-Matcher
Siehe auch [RB01]
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 78
Zusammenfassung
Drei Schritte1. Entdeckung von
intra-Schema Assoziationen
2. Entdeckung von inter-Schema logischen Mappings
3. Anfrage-erzeugung
haushaltDB stadtHaushalt stadt: string
organisationen org orgID: integer
orgname: string
einnahmen einnahme spendeID: integer
proj: string
buchungID: integer
buchungen buchung buchungID: integer
datum: date
menge: decimal
spendenDB firmen firma firmaID: integer
name: string
stadt: string
spenden spende firmaID: integer
spendeID: integer
betrag: decimal
projekt: string
spender: string
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 79
Überblick
Schema Mapping Überblick Schema Mapping
(Matching) Mapping Interpretation
Algorithmus (Transformation)
Schema Matching (Ausblick) Demo
Aus [FHP+02] und aus VLDB 2002 Vortragsfolien
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 80
Vergleich dreier Tools
Altovas MapForce IBMs Clio [IBMs WSAD] Szenario
expenseDB -> statisticsDB Definition des Mappings Generierung der Transformation Vergleich der XML Ergebnisse
XML Screenshots aus XMLSpy www.xmlspy.com
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 81
Szenario - ExpenseDB
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 82
Szenario - ExpenseDB
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 83
Szenario StatisticsDB
Zu WSAD
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 84
Altovas MapForce
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 85
Altovas MapForce
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 86
Altovas MapForce
Zusammenfassung Informationen gehen nicht verloren Joins
werden nicht erkannt können manuell in GUI erstellt werden
Gruppierung wird nicht erkannt
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 87
IBMs Clio
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 88
IBMs Clio
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 89
IBMs Clio
Zusammenfassung Joins werden erkannt
Aber nicht erzwungen: Interpretation Gruppierung wird erkannt
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 90
IBMs WSAD
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 91
IBMs WSAD
Zusammenfassung Mögliche Joins werden nicht erkannt Gruppierung wird nicht erkannt Informationen werden verworfen
Nur erste Stadt Information wird „erfunden“
Jede Organization erhält jedes Projekt
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 92
Zusammenfassung der Demo IBMs WSAD
Mögliche Joins werden nicht erkannt. Gruppierung wird nicht erkannt. Daten werden verworfen. Assoziationen zw. Daten werden „erfunden“.
Altovas MapForce Daten gehen nicht verloren. Joins werden nicht erkannt, aber können
manuell in GUI erstellt werden. Gruppierung wird nicht erkannt.
IBMs Clio Joins werden erkannt, aber nicht erzwungen:
Interpretationen möglich Gruppierung wird erkannt.
3.1.2006 Felix Naumann, VL Informationsintegration, WS 05/06 93
Literatur [FHP+02] Ron Fagin, Mauricio Hernandez, Lucian Popa, Renee
Miller, and Yannis Velegrakis, Translating Web Data, VLDB 2002, Hong Kong, China.
[RB01] Erhard Rahm and Philip Bernstein, A survey of approaches to automatic schema matching, VLDB Journal 10(4), 2001.
Zu der Problematik, ob Duplikate Teil des Outputs sein sollten: Ronald Fagin, Phokion G. Kolaitis, Renée J. Miller, Lucian Popa:
Data Exchange: Semantics and Query Answering. ICDT 2003: 207-224
Clio: http://www.almaden.ibm.com/software/projects/criollo/ oder http://www.cs.toronto.edu/db/clio/