Datenintegration Ausgangspunkt Konflikte Ziel Transparenz

Werbung
Ausgangspunkt
• Daten liegen in verschiedenen Datenquellen
(Extremfall: jede URL eigene Datenquelle)
Datenintegration
Web Informationssysteme
Wintersemester 2002/2003
Donald Kossmann
– Mietautos bei www.hertz.com
– Hotel bei www.holiday-inn.com
– Flüge bei www.lufthansa.com
• Datenquellen sind heterogen
–
–
–
–
–
Relationale Datenbanken
Web Anwendungssystem (Web Dienst)
LDAP Server
XML Datenbank
Filesystem, EXCEL, ...
Ziel
Konflikte
• Struktur
– DB1: book(isbn, author), pub(isbn, title)
– DB2: book(isbn, author, title), pub(isbn, title)
• Typen, Formate, Namen
– DB1: deutsches Zahlenformat: 10.000,00
– DB2: US Zahlenformat: 10,000.00
• Einheiten
– DB1: alle Preise in EUR
– DB2: Währung wird bei Preis mit angegeben
• Betrachte die Welt, als ob es nur eine große,
homogene Datenquelle gäbe.
• Diese Datenquelle versteht XML, XQuery!
• Transparenz!
– Einheitliche Schnittstelle (XML / XQuery)
– Benutzer weiß nicht, wo und in welcher Form
die Daten liegen
– Benutzer definiert Anfrage in seiner Sprache
und mit seinen Maßeinheiten.
Architekturen
Transparenz
• Data Warehouse
– Große integrierte Datenbank, Anfragen ans DW
– Periodischer Refresch der Datenquellen
XML / Xquery
• Datenbankföderation
SQL
XML
– Keine Replikation, Anfragen an Datenquellen
– Zusätzliche Middleware, ggf. P2P Verarbeitung
EXCEL
LDAP
SQL
SQL
• Mischformen
– Materialisierung mancher Informationen
– Onlinezugriff auf andere Informationen
• (Apriori alles in eine Datenbank / Anwendung packen)
1
Data Warehouse
Data Warehouse
• Vorteile
– Spezielle Aufbereitung der Daten möglich
(Voraggregation, Indexierung, ...)
– Entkopplung von OLAP und OLTP
– Gute Laufzeiten für Anfragen
Data Warehouse
(SQL oder XML)
• Nachteile
EXCEL
XML
SQL
SQL
LDAP
–
–
–
–
Konsistenz der Daten
ETL ist schwierig (Problem nur verschoben!)
Zusätzlicher Datenbankentwurf im DW notwendig
Hohe Kosten
Föderierte Datenbanken
• Hauptidee: Verwende „Wrapper“
Mediator / Wrapper Architektur
– Verstecken Heterogenität, Transformationen
Bieten einheitliche Sicht auf Daten
– Bekommen Teilanfrage - liefern Ergebnis
– Implementieren Optimierungen
(Caching, Push-Down von Anfragen, ...)
XQuery
XML
Mediator
(Xquery Engine)
• Verteilte Anfragebearbeitung im „Mediator“
– Zerlege „globale Anfrage“ in Teilanfragen
– Bestimme „Plan“ zum Joinen der Teilergebnisse
• Relationale Technologie ausgereift
– Produkte: Data Joiner (IBM), UniSQL, ...
– XML Story noch unklar!
Wieso verwendet man XML?
• Vorteile
– XML ist „Mutter“ aller Datenformate
– Ergebnisse kann man leicht weiterverarbeiten
(Z.B. Präsentation im Browser)
– Xquery ideale Anfragesprache zur Integration
Kein globales Schema erforderlich! Prädikate auf Text.
– Alle machen XML! Verfügbarkeit von Wrappern!
• Nachteil
– Xquery -> SQL Übersetzung sehr schwierig!
– Es gibt bereits Produkte, die auf relational basieren
• XML, wo nötig - SQL, wo möglich (!???)
wrapper
wrapper
SQL
XML
wrapper
EXCEL
SQL
wrapper
LDAP
Beispiel
• Datenquelle 1 (relationale Datenbank)
– Book(ISBN, Title, Price, Publisher)
– BookAuthor(ISBN, Name)
• Datenquelle 2 (XML)
– <!ELEMENT rezension (comment)>
– <!ELEMENT comment (#PCDATA)>
– <!ATTLIST rezension isbn CDATA #REQ>
• Finde alle Rezensionen von den Büchern von
Kossmann, die mehr als USD 50 kosten.
2
Beispielanfrage
• Finde Rezensionen von den Büchern von
Kossmann, die mehr als USD 50 kosten.
for $r in document(„www.rezension.xml“),
$b in document(„www.book.rdb/book“)[price > 50],
$a in document(„www.book.rdb/author“)[. = „Kossmann“]
where $r/@isbn = $b/isbn AND $b/isbn = $a/isbn
return
<rezension> { $b/title } { $r/comment } </rezension>
Normalisierung
for $r in document(„www.rezension.xml“) return {
for $b in document(„www.book.rdb/book“) return {
for $a in document(„www.book.rdb/author“) return {
if ($r/@isbn = $b/isbn AND $b/isbn = $a/isbn
AND $b/price > 50 AND $a = „Kossmann“) then
<rezension> { $b/title } { $r/comment } </rezension>
}}}
Decomposition
for $r in document(„www.rezension.xml“) return {
for $b in document(„www.book.rdb/book“) return {
for $a in document(„www.book.rdb/author“) return {
if ($r/@isbn = $b/isbn AND $b/isbn = $a/isbn
AND $b/price > 50 AND $a = „Kossmann“) then
<rezension> { $b/title } { $r/comment } </rezension>
}}}
• Annahme: Wrapper sind dumm! Können nur „doc“
• Alles andere macht der Mediator
Decomposition II
for $r in document(„www.rezension.xml“) return {
for $b in document(„www.book.rdb/book“)
where $b/price > 50 return {
for $a in document(„www.book.rdb/author“)
where $a = „Kossmann“ return {
if ($r/@isbn = $b/isbn AND $b/isbn = $a/isbn
<rezension> { $b/title } { $r/comment } </rezension>
}}}
• Schiebe einfache Prädikate in den Wrapper
Decomposition IV
Decomposition III
for $r in document(„www.rezension.xml“) return {
for $b in wrap(„SELECT * FROM book WHERE price > 50“)
return {
for $a in wrap („SELECT * FROM author
WHERE name = ‚Kossmann‘“) return {
if ($r/@isbn = $b/isbn AND $b/isbn = $a/isbn
<rezension> { $b/title } { $r/comment } </rezension>
}}}
• Wrapper schiebt Prädikate in die Datenquelle
for $r in document(„www.rezension.xml“) return {
for $b in wrap(
„SELECT b.* FROM book b, author a
WHERE b.price > 50 AND a.name = ‚Kossmann‘
AND b.isbn = a.isbn“) return {
if ($r/@isbn = $b/isbn
<rezension> { $b/title } { $r/comment } </rezension>
}}
• „Intelligenter“ Wrapper erkennt lokalen Join
• Hierzu kostenbasierter Optimierer notwendig
3
Decomposition V
Anfrageplan
for $r in document(„www.rezension.xml“) return {
for $b in wrap(
„SELECT b.* FROM book b, author a
WHERE b.price > 50 AND a.name = ‚Kossmann‘
AND b.isbn = a.isbn AND b.isbn = $r“) return {
<rezension> { $b/title } { $r/comment } </rezension>
}}
Constructor
(Rezension, Book)
BindJoin
(Rezension)
• Wrapper unterstützt Parameter
• Mediator führt sogenannten BindJoin aus
• Wiederum kostenbasierter Optimierer notwendig
Verteilte Mediatoren
(Rezension)
wrapper
(rezension.xml)
• Erfordert etwas aufwendigere Optimierung
• Erfordert Flexibilität in der Installation
Transparenz
• „document“ Funktion verletzt Transparenz
• Wie bearbeitet man die folgende Anfrage?
for $r in //rezension,
$b in //book[price > 50],
$a in //author[. = „Kossmann“]
where $r/@isbn = $b/isbn AND $b/isbn = $a/isbn
return
<rezension> { $b/title } { $r/comment } </rezension>
• Kontext ist das gesamte Internet!
wrapper
(www.book.rdb)
Verteilter Anfrageplan
• DQ / Wrapper kommunizieren direkt
(ohne Mediator)
• Spart Kommunikationskosten
– Rezension direkt zur relationalen Datenbank
– anstatt Umweg durch Mediator
(Rezension, Book)
Constructor
(Rezension, Book)
BindJoin
(Rezension)
(Rezension)
wrapper
(rezension.xml)
(Rezension, Book)
wrapper
(www.book.rdb)
Global as View
• Definiere Sicht in einem globalen Schema
//book ~ document(„..“) union document()...
• Zusätzlicher Anfragetransformationsschritt
– ersetze „globale“ Wurzel durch Sichtdefinition
• Vorteil: sehr einfach zu implementieren
• Nachteil: man muss alle Quellen explizit
im globalen Schema registrieren
4
Local as View
• DQ/Wrapper = Menge (parametrisierten) Sichten
(Sicht = Anfrage, die Wrapper beantworten kann)
• Definition einer DQ unabhängig von anderen DQ
• Beispiel: www.book.rdb implementiert //book,
//author
• Aufgabe (das ist schwer!)
– Beantworte Anfrage mit Hilfe von Sichten (AQUV)
– Literatur: Alon Halevy, VLDB Journal, 2001
• Bonus: Cache = Menge materialisierter Sichten
Data Cleaning
• Zitate zählen! Gleiche Referenzen erkennen
– „D. A. K.“, „D. Kossmann“, „Donald Kossmann“
– Was ist mit „Kossman“?
• Lösungsansatz
– Semiautomatische Werkzeuge
– Besondere Operatoren: z.B. Match
– Techniken des Maschinellen Lernens, Statistik
• Literatur: Galhardas et al., VLDB 2001
• Wer das Problem löst, wird sehr reich!
– Verwendung des Caches: wiederum AQUV!
Fazit
• Verteilte (Xquery) Anfragebearbeitung
• Wrapper verstecken Heterogenität
(„Unter den Teppich Kehren“ Prinzip)
• Mediator bündelt Ergebnisse,
kompensiert fehlende Anfragefunktionalität in DQ
• Herausforderung: Push-Down in Datenquellen
– schwieriges Optimierungsproblem
– AQUV ein Baustein
• Kommerzielle Tools arbeiten „relational“
– XML basierte Tools kommen aber bald auf den Markt
• Updates: ungelöstes Problem
5
Herunterladen