XML-Datenbanken Hauptseminar

Werbung
XML-Datenbanken
Hauptseminar Informatik
SS 2001
Thema: Query Rewriting
Vortragstermin: 31. 5. 2001
Betreuer: Prof. Dr. Rudolf Bayer
Autor: Arne Seifert
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 2
Inhaltsverzeichnis:
1
Grundbegriffe..................................................................................................... 3
1.1
Was ist SQL?................................................................................................ 3
1.2
Query oder Anfrage ...................................................................................... 3
1.3
Datenstruktur relationales Schema im Vergleich zu XML ............................. 3
1.3.1
Relationales Schema............................................................................. 3
1.3.2
XML DTD bzw. XML Schema............................................................... 4
2
Einführung des Beispiels zur Veranschaulichung ......................................... 5
3
Unterschiedliche Darstellungsformen ............................................................. 6
4
3.1
XML-Rel mit Pfad als Attribut........................................................................ 6
3.2
XML-Triple .................................................................................................... 6
Übersetzung einer XML-Anfrage ...................................................................... 8
4.1
Allgemeine Funktionsweise .......................................................................... 8
4.2
Funktionsweise des Normalisierungsmoduls................................................ 9
4.2.1
Direkt übersetzbare Anfragen................................................................ 9
4.2.2
Nichtübersetzbare Anfragen.................................................................. 9
4.2.3
Anfragen, bei denen eine Normalisierung notwendig ist...................... 10
4.3
Funktionsweise des Übersetzungsmodul (Quilt zu SQL)............................ 12
4.3.1
Übersetzen von Pfadausdrücken ........................................................ 12
4.3.2
Übersetzen von FLWR Ausdrücken .................................................... 13
4.3.3
Übersetzen von heterogenen Typanfragen ......................................... 13
4.3.4
Übersetzen von Funktionen und Funktionsaufrufen ............................ 13
4.3.5
Übersetzen anderer Sprachkonstrukte ................................................ 13
4.4
SQL Query Rewriting.................................................................................. 14
4.4.1
Angewendet auf eine XML-Relation .................................................... 14
4.4.2
Angewendet auf einen Join ................................................................ 15
4.4.3
Umwandlung von XML-Rel mit Join zu XML-Triple ............................. 16
4.5
Zusatzfunktionalität..................................................................................... 16
4.5.1
Myriad Schema mit MHC-Surrogate.................................................... 17
5
Fazit .................................................................................................................. 19
6
Literaturverzeichnis: ....................................................................................... 20
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 3
1 Grundbegriffe
Um dieses Thema verstehen zu können, sind einige Grundbegriffe zu klären, die
das Verständnis erleichtern
1.1 Was ist SQL?
Im Zusammenhang mit Datenbankprogrammierung fällt immer wieder der Begriff
SQL. SQL - Structured Query Language - ist eine standardisierte Abfragesprache
für
die
Datendefinition
und
Datenmanipulation
in
relationalen
Datenbanksystemen, die es ermöglicht, auf Daten in einer Datenbank zuzugreifen
und diese zu manipulieren. SQL ist in Standards festgeschrieben (zur Zeit ist
SQL92 gültig).
Es werden verschieden Möglichkeiten der Nutzung in Programmen oder
Programmiersprachen bereitgestellt:
• Interaktives ("stand-alone") SQL (z. B. Oracle SQL*Plus)
• Eingebettetes ("embedded") SQL (für die gängigen Programmiersprachen)
• Anweisungen zur Integritätssicherung und Zugriffskontrolle
• Anweisungen zur physischen Datenorganisation (Indizes etc.)
• Integration von SQL in "4th Generation Language" (z. B. Oracle PL/SQL)
1.2 Query oder Anfrage
Ein weiterer wichtiger Punkt im Bezug auf Datenbanken sind die Queries oder
Anfragen. Dabei werden die Anfragen als einfache Strings an den Interpreter
übergeben (z. B. ein SQL-fähiges Datenbanksystem), der diese durchparst und
die entsprechende Funktionalität ausführt. Ein großer Vorteil an dieser Struktur
ist, dass die Anfrage sehr einfach erweitert werden kann, da einfach nur neue
Schlüsselworte angehängt werden müssen.
1.3 Datenstruktur relationales Schema im Vergleich zu XML
Die Datenstruktur und Art der Speicherung von Daten geschieht in zwei
vollkommen
unterschiedlichen
Schemata.
Bei
einem
relationalen
Datenbanksystem werden die Daten in Relationen eingeteilt, die im Prinzip
dieselbe Form wie normale Tabellen haben. Bei XML wird ein Schema, ähnlich
einem Inhaltsverzeichnis eines Buches verwendet
1.3.1 Relationales Schema
Heute sind Datenbanken mit relationalen Schemata als Datengrundlage am
meisten verbreitet. Das bedeutet, dass Strukturen und Daten durch Relationen
dargestellt werden, die tabellarisch aufgebaut sind (siehe Abbildung 1).
Das hat natürlich Vor- und Nachteile. Wenn eine komplexe Struktur als Relation
abgebildet werden soll, ist es unter Umständen notwendig, mehrere Tabellen
miteinander über Indizes zu verbinden. Dieser Join wird meist sehr schnell sehr
speicheraufwändig, was zu hohem Datentransfer und damit zu langen
Ausführungszeiten führen kann.
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 4
Außerdem ist das hinzufügen von Attributen zu Relationen immer mit einigem
Aufwand verbunden. Des Weiteren kann durch diese Speicherhart dazu kommen,
dass sehr viele NULL Werte mit abgespeichert werden müssen, wenn zum
Beispiel nicht für alle Attribute konkrete Werte zur Verfügung stehen.
ID Attribut 1 Attribut 2 Attribut 3 Attribut 3 Attribut 4
1
Wert 1
Wert 2
Wert3
…
2
…
…
…
3
…
…
4
…
…
Abbildung 1: Relationales Schema
1.3.2 XML DTD bzw. XML Schema
Die Struktur von XML ist hierarchisch gegliedert, das heißt, sie ist der eines
Buches mit einem Inhaltsverzeichnis sehr ähnlich. Dieses Inhaltsverzeichnis hat
Ober- und Unterpunkte (siehe Abbildung 2). Aus diesem Grund ist es einfacher
Attribute hinzuzufügen, da dies nur für den speziellen Fall geschehen kann.
XPath
Paper
Paper/Title
Paper/Authors[1]
Paper/Authors[1]/FN
Paper/Authors[1]/LN
Paper/Authors[1]/Affiliation
Paper/Authors[2]
Paper/Authors[2]/FN
Paper/Authors[2]/LN
Paper/Authors[2]/Affiliation
Paper/Keywords[1]
Paper/Abstract
Paper/Text
Paper/BibRec[1]
Paper/BibRec[1]/Authors[1]
Paper/BibRec[1]/Authors[2]
Paper/BibRec[1]/Title
Abbildung 2: XML Schema
Außerdem muß nicht immer die komplette Struktur gefüllt werden. Anders, als bei
Relationen, können dann Teile der Struktur einfach ausgelassen werden. Das hat
den Vorteil, dass keine NULL Werte gespeichert werden müssen.
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 5
2 Einführung des Beispiels zur Veranschaulichung
Zur Veranschaulichung der Queries soll folgendes Beispiel beitragen:
Verwaltung einer Bibliothek. Es gibt Bücher mit Titel, Autor(en), Schlüsselworten,
dem eigentlichen Text und Literaturverzeichnis. Die Gliederung erfolgt, wie in
Abbildung 3 beschrieben. Jedes Attribut, dass mit einem * gekennzeichnet ist, wie
zu Beispiel Authors, kann beliebig oft vorkommen und wird zur Adressierung mit
Authors[n] angesprochen, wobei n = 0, 1, 2, ... sein kann
Paper
Title
Authors *
FN
LN
Affiliation
Keywords *
Abstract
Text
BibRec *
Authors*
Title
Abbildung 3: Beispiel „Bibliotheksverwaltung“
Die Datengrundlage für dieses Beispiel ist ein relationales Datenbanksystem und
einige Views über diesem System. Durch Mechanismen werden die Views
genauer beschrieben, so dass eine Abbildung der Daten möglich wird.
Im Folgenden wird außerdem angenommen, dass Views über XML-Rel und XMLTriple vorhanden ist, auf die zugegriffen werden kann. Die genaue Struktur von
XML-Rel und eines XML-Triples wird im folgenden Kapitel 3 näher erläutert.
Interessant ist hierbei, dass beim XML-Triple ein Join der Type-Dim Tabelle mit
der XML-Index Tabelle notwendig ist, damit der Index richtig mit den Werten
verbunden werden kann.
DEFINE VIEW XML-Triple AS
SELECT Did, Attr-Path, Value
FROM Type-Dim T, XML-Ind X
WHERE T.Surrogate = X.Surrogate
Abbildung 4: XML-Triple als View
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 6
3 Unterschiedliche Darstellungsformen
Um Daten im XML-Schema darstellen zu können, gibt es verschiedene
Darstellungsformen. Im Weiteren werden zwei Formen vorkommen, XML-Rel und
XML-Triple
3.1 XML-Rel mit Pfad als Attribut
Die einfachste Form der Darstellung einer XML-Relation ist die Tupelform. Hierbei
werden immer Wertepaare gebildet, die einerseits aus dem Pfad, in der Abbildung
in XPath-Notation, und andererseits aus dem jeweiligen Wert bestehen.
Paper
Paper/Title
Paper/Authors[1]
Paper/Authors[1]/FN
Paper/Authors[1]/LN
Paper/Authors[1]/Affiliation
Paper/Authors[2]
Paper/Authors[2]/FN
Paper/Authors[2]/LN
Paper/Authors[2]/Affiliation
Paper/Keywords[1]
Paper/Abstract
Paper/Text
...
MISTRAL
Rudolf
Bayer
TU
Volker
Markl
FORWISS
UB-Tree
some text
more text
Abbildung 5: XML-Rel mit Pfad als Attribut
Diese Form ist sehr einfach und man kann dadurch schnell an die Daten
gelangen. Allerdings geht die Reihenfolge der einzelnen Elemente und Attribute
verloren. Das liegt daran, dass kein Index erzeugt wird (zum Beispiel mit
fortlaufenden Integerwerten). Wenn also die Reihenfolge eines Dokuments
wichtig ist, dann kann diese Form nicht verwendet werden.
3.2 XML-Triple
Eine weitere Form der Darstellung ist XML-Triple. Die Tripleform kann mit
unterschiedlichen Attributen dargestellt werden:
• Relation XML-Triple mit Pfad (siehe Abbildung 6)
•
Erweitertes XML-Triple mit Surrogaten ohne DokumentID
(siehe Abbildung 7)
Bei XML-Triple wird zusätzlich zu den Attributpfaden und den Werten noch eine
DocumentID als Index mit gespeichert. Diese Did liegt in Form von Surrogaten
vor. Surrogate, siehe Abbildung 7, dienen dazu, eine eindeutige Reihenfolge der
Elemente zu gewähren. Außerdem kann man bei großen Datenbanken eine
Query Rewriting
28.05.2001
Seite 7
XML-Datenbanken Hauptseminar Informatik im SS01
effizientere Art der Speicherung realisieren. So können zum Beispiel die Daten zu
2.1 oder 2.2 auf demselben Laufwerk abgespeichert werden, so dass bei
Anfragen über die Autoren nur eine Festplatte angesprochen werden muß und
somit der Addressraum klein bleibt.
DokumentID Attribut-Pfad
Did
Did
Did
Did
Did
Did
Did
Did
Did
Did
Did
Did
Did
...
Wert
Paper
Paper/Title
Paper/Authors[1]
Paper/Authors[1]/FN
Paper/Authors[1]/LN
Paper/Authors[1]/Affiliation
Paper/Authors[2]
Paper/Authors[2]/FN
Paper/Authors[2]/LN
Paper/Authors[2]/Affiliation
Paper/Keywords[1]
Paper/Abstract
Paper/Text
MISTRAL
Rudolf
Bayer
TU
Volker
Markl
FORWISS
UB-Tree
some text
more text
Abbildung 6: XML-Triple mit Did
Allerdings hat diese Form auch Nachteile. So ist zum Beispiel der
Verwaltungsaufwand, um an die Daten zu gelangen, wesentlich höher, als bei
XML-Rel. Einfach deshalb, weil verschiedene Zwischenschritte notwendig sind,
um die Ausgabedaten entsprechend zu formatieren.
Surrogate
1
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2
2.2.3
3.1
4
5
...
Attribut-Pfad
Wert
Paper
Paper/Title
Paper/Authors[1]
Paper/Authors[1]/FN
Paper/Authors[1]/LN
Paper/Authors[1]/Affiliation
Paper/Authors[2]
Paper/Authors[2]/FN
Paper/Authors[2]/LN
Paper/Authors[2]/Affiliation
Paper/Keywords[1]
Paper/Abstract
Paper/Text
MISTRAL
Rudolf
Bayer
TU
Volker
Markl
FORWISS
UB-Tree
some text
more text
Abbildung 7: XML-Triple mit Surrogate
Query Rewriting
28.05.2001
Seite 8
XML-Datenbanken Hauptseminar Informatik im SS01
4 Übersetzung einer XML-Anfrage
4.1 Allgemeine Funktionsweise
Um von einer Anfrage an ein XML-Datenbanksystem zum Ergebniswert zu
gelangen, müssen zahlreiche Zwischenschritte durchlaufen werden. In Abbildung
8 wird dieser Weg beschrieben.
User Interface (XML und XQuery)
Eingabequery
Rewriting
Regeln
Normalisierungsmodul
XML Ergebnis
Normalisierte XQuery
Abfrage
Übersetzungs
regeln
Relationale
View
Definition
Übersetzungsmodul
(Quilt SQL)
Tagger
SQL / virtuelles Schema
Ergebnis Tupel
SQL Query Rewriting
SQL / relationales Schema
SQL Query Optimierung und Ausführung
Abbildung 8: Flussdiagramm
Die Anfrage wird in einem User Interface eingegeben oder abgesetzt, von dort
aus wird eine Normalisierung der Anfrage durchgeführt. Diese Normalisierung ist
notwendig, damit eine Übersetzung in SQL möglich wird. Die eigentliche
Übersetzung in SQL geschieht dann im nächsten Schritt. An dieser Stelle wird
auch die Datensicht gewechselt. Das Übersetzungsmodul arbeitet auf dem
virtuellen Schema des Views. Anschleißend, beim eigentlichen SQL Query
Rewriting, wird die SQL-Anfrage so umgeschrieben, dass auf eine relationale
Datenbasis zugegriffen werden kann. Anschließend wird die so optimierte
Anfrage über dem relationalen Schema ausgeführt und die Ergebnistupel an den
Tagger übergeben. Der Tagger formatiert das Ergebnis entsprechen der XML
Anforderungen. Dabei erhält der Tagger vom Übersetzungsmodul (Quilt SQL)
Informationen über das Format. Im letzten Schritt kann dann das so formatierte
Ergebnis an das User Interface zurückgegeben werden.
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 9
Der Hintergrund, warum dieser hohe Aufwand notwendig ist, um eine Anfrage in
XML zu stellen liegt daran, dass man Anfragen oder Queries nur auf relationalen
Datenstrukturen vernünftig ausführen kann. Da die Daten bei XML aber nicht
einheitlich beziehungsweise nur teilweise in relationalen Schemata vorliegen,
muß diese Datenstruktur erst geschaffen werden.
Um Anfragen über diese Daten ausführen zu können, muß zweimal ein Query
Rewriting erfolgen, einmal, um eine SQL-Anfrage nach der Normalisierung
formulieren zu können und dann noch, um beim Ausführen dieser Anfrage die
Daten zurückgeben zu können.
4.2 Funktionsweise des Normalisierungsmoduls
Meist werden Anfragen von einem XML User Interface in Form von Quilt gestellt,
da diese Sprache umfangreiche Möglichkeiten zur Verfügung stellt, um Daten
zum Beispiel zu selektieren oder zu gruppieren. Für eine Beschreibung von Quilt
siehe dazu Ausarbeitung zu Vortrag 3 „XML-Anfragesprachen“.
FOR $a IN E1
LET y = E2($a)
FOR $b IN E3($a,y)
WHERE C($a, y, $b)
RETURN R($a, y, $b)
Abbildung 9: Beispiel einer Quilt-Anfrage
Um einen Quilt Ausdruck in SQL übersetzen zu können, ist meist eine
Normalisierung notwendig. Dabei lassen sich Quilt Anfragen in drei Gruppen
einteilen:
4.2.1 Direkt übersetzbare Anfragen
Bei dieser Art ist keine Normalisierung notwendig. Das sind einfache Anfragen,
bei denen die Pfadangaben direkt ab dem Dokument angegeben werden, oder
logische oder arithmetische Operationen über demselben Datentyp ausgeführt
werden. Dieser Typ kann direkt in eine SQL-Anfrage übersetzt werden.
4.2.2 Nichtübersetzbare Anfragen
Hierbei handelt es sich um Quilt Anfragen, bei denen die innere Logik oder die
Semantik zu verschieden ist, um übersetzt werden zu können. Als Beispiel, in
Quilt gibt es Scalarkonstanten. In SQL gibt es keine Möglichkeit, diese
Konstanten
ausdrücken
zu
können.
Query Rewriting
28.05.2001
Seite 10
XML-Datenbanken Hauptseminar Informatik im SS01
4.2.3 Anfragen, bei denen eine Normalisierung notwendig ist
Das sind alle übrigen Anfragen. Normalisierung heißt in dem Zusammenhang,
dass ein Algorithmus die Quilt Anfrage durchparst und entsprechend
umformatiert, so dass eine Transformation in SQL ermöglicht wird. Dies geschieht
in mehreren Schritten:
• Eliminierung von temporären Variablen und nichtrekursiven
Funktionen
Bei diesem ersten Schritt wird versucht, alle temporären Variablen zu
entfernen. Im Beispiel heißt das, dass die LET Bedingung ersetzt wird.
Außerdem werden alle temporären Variablen, in diesem Fall das y ersetzt.
(Siehe Abbildung 10)
FOR $a IN E1
LET y = E2($a)
FOR $b IN E3($a,y)
WHERE C($a, y, $b)
RETURN R($a, y, $b)
FOR $a IN E1,
$b IN E3($a, E2($a))
WHERE C($a, E2($a), $b)
RETURN R($a, E2($a), $b)
Abbildung 10: Eliminierung temporärer Variablen
•
Auflösen verschachtelter Ausdrücke auf Basis von FLWR
Ausdrücken
Mit der abfragesprache Quilt ist es möglich Anfragen zu erstellen, die
wiederum aus einer Anfrage bestehen. Diese verschachtelten Anfragen
müssen bei der Normalisierung umgewandelt werden. (FLWR meint For,
Let, Where, Return)
E1( FOR $a IN E2,
WHERE C($a)
RETURN E3($a))
FOR $a IN E2,
WHERE C($a)
RETURN E1(E3($a))
FOR $a IN E2,
WHERE C($a)
RETURN E1(E3($a))/nameTest
FOR $a IN E2,
WHERE C($a)
RETURN E3($a) /nameTest
Abbildung 11: Auflösen verschachtelter Ausdrücke
•
Elementarkonstruktoren herstellen (in Pfad oder FLWR)
Wenn Pfadausdrücke in der Anfrage vorkommen, dann müssen diese
Ausdrücke so umgeschrieben werden, dass Elementkonstruktoren die
selbe Funktionalität übernehmen.
Query Rewriting
28.05.2001
Seite 11
XML-Datenbanken Hauptseminar Informatik im SS01
(<tag>
E($a)
</tag>)//nameTest
(<tag>
E($a)
</tag>)//nameTest
IF tag = nameTest
THEN (<tag> E($a) </tag>
ELSE E($a)//nameTest
FOR $a IN E($a)
WHERE name($b) = nameTest
RETURN $b
Abbildung 12: Elementarkonstruktoren herstellen
•
Umwandlung von FLWR Ausdrücken im FOR- oder RETURN
Ausdruck
Wenn im FOR oder RETURN-Ausdruck Verschachtelungen durch FLWR
Ausdrücke vorhanden sind, dann müssen diese aufgelöst werden. (Siehe
Abbildung 12)
FOR $a IN E1
WHERE (IF C1 ($a)
THEN E2($a)
ELSE E3($a))
RETURN E4($a)
FOR $a IN E1
WHERE (C1($a) AND
E2($a)) OR
( C1($a) AND
E3($a))
RETURN E4($a)
Abbildung 13: Umwandlung von FLWR Ausdrücken im FOR- oder RETURN
Ausdruck
•
Eliminierung von einschränkenden Ausdrücken
Abbildung 14 zeigt, wie einschränkende Ausdrücke im WHERE, RETURN
oder FOR Teil aufgelöst werden müssen. Dabei ist darauf zu achten, dass
die Reihenfolge der Ausgabe entsprechend angepasst wird, damit das
Ergebnis richtig weiterverarbeitet werden kann.
FOR $a IN E1
WHERE (IF C1 ($a)
THEN E2($a)
ELSE E3($a))
RETURN E4($a)
FOR $a IN E1
WHERE (C1($a) AND
E2($a)) OR
( C1($a) AND
E3($a))
RETURN E4($a)
¬
Abbildung 14: Eliminierung von einschränkenden Ausdrücken
Query Rewriting
28.05.2001
Seite 12
XML-Datenbanken Hauptseminar Informatik im SS01
•
Übersetzung von Prädikatausdrücken in FLWR
In diesem Schritt wird eine einfache semantische Umformung
durchgeführt. Wenn E2 eine Prädikateinschränkung von E1 darstellt, dann
kann dies durch eine Einschränkung mit WHERE ersetzt werden. Bei
einem Pfadprädikat in der FOR-Klausel kann dies durch eine Umformung
in der WHERE-Klausel erreicht werden.
E1[E2]
FOR $a IN
E1[E2]/PathExpr.
WHERE C($a)
RETURN R($a)
FOR $a IN E1
WHERE E2($a)
RETURN $a
FOR $b IN E1, $a IN
$b[E2]/PathExpr
WHERE C($a) AND
E2($b)
RETURN R($a)
Abbildung 15: Übersetzung von Prädikatausdrücken in FLWR
4.3 Funktionsweise des Übersetzungsmodul (Quilt zu SQL)
Die nun vorliegende Quilt-Anfrage ist nun entweder normalisiert oder bereits von
Haus aus in entsprechender Form gewesen, so dass das Übersetzungsmodul
aus der Quilt-Anfrage eine SQL-Anfrage generieren kann. Wie schon in den
vorherigen Bearbeitungsschritten, muß diese Übersetzung in mehreren Schritten
erfolgen.
4.3.1 Übersetzen von Pfadausdrücken
Die erste Regel kann Pfadausdrücke zum Basisdokument übersetzen. Dabei muß
man zwei unterschiedliche Fälle betrachten, denn einerseits kann der Pfad ein
String sein oder das Ergebnis einer weiteren Anfrage. Aber in jedem Fall kann
daraus eine einzige Anfrage erstellt werden.
T(document(docName))=
SELECT d.docID
FROM Document d, URI u, Value v
WHERE d.docURIID = u.uriID AND
uriValID = v.valID AND
v.value = docName
SELECT d.docID
FROM Document d, URI u, Value v
WHERE d.docURIID = u.uriID AND
uriValID = v.valID AND
v.value = (T(E))
T(document(E))=
Abbildung 16: Übersetzen von Pfadausdrücken
Query Rewriting
28.05.2001
Seite 13
XML-Datenbanken Hauptseminar Informatik im SS01
Anhand dieses Beispiels lässt sich gut erkennen, dass im Prinzip diese Anfragen
identisch sind. Es unterscheiden sich nur die letzten Zeilen, je nachdem, ob es
sich um einen String oder das Ergebnis einer Anfrage handelt.
4.3.2 Übersetzen von FLWR Ausdrücken
Um eine Quilt-Anfrage korrekt übersetzen zu können, muß einem klar sein, was
die einzelnen Teile des FLWR-Ausdruckes bewirken. Der FOR-Teil definiert die
Ergebnistupel, der WHERE-Teil bestimmt einschränkende Kriterien näher und der
RETUN-Teil liefert die passenden Tupel zurück.
Im folgenden Beispiel wird allgemein die Umwandlung gezeigt.
T (FOR x1 IN E1,
X2 IN E2,...
Xn IN En
WHERE C(x1), C(c2),…C(xn)
RETURN x1, x2,…xn)=
SELECT S(E1), S(E2),…S(E3)
FROM F(E1), F(E2),…F(En)
WHERE W(E1) AND
W(E2) AND … W(En) AND
(T(C(x1, x2,…xn)))
Abbildung 17: Übersetzen von FLWR Ausdrücken
4.3.3 Übersetzen von heterogenen Typanfragen
Die Übersetzung der Anfragen kann leider nicht systematisch von Anfang bis zum
Ende erfolgen, da bei Anfragen unterschiedliche Datentypen beteiligt sein
können. So können zum Beispiel String- und Integerwerte abgefragt werden. In
solchen Fällen sind entweder Casts notwendig, die die Datentypen auf einen
reduzieren oder man muß für jeden Datentyp eine eigene Spalte vorsehen. Bei
der zweiten Methode muß dann der Tagger die entsprechenden Werte wieder
zusammensuchen.
4.3.4 Übersetzen von Funktionen und Funktionsaufrufen
Funktionen in XML-Anfragen lassen sich in drei Kategorien einteilen:
Standardfunktionen (zum Beispiel count, distinct), benutzerdefinierte Funktionen
und externe Funktionen.
Standartfunktionen können direkt übersetzt werden, da SQL diese Funktionalität
standardmäßig bereitstellt. Benutzerdefinierte Funktionen können einerseits
rekursive – andererseits nichtrekursive Ausdrücke sein. Bei rekursiven
Ausdrücken können diese direkt in SQL übersetzt werden. Nichtrekursive müssen
zuvor umgeformt werden. Zu beachten dabei ist, dass SQL nur bestimmte Arten
von Rekursionen unterstützt.
4.3.5 Übersetzen anderer Sprachkonstrukte
Zu dieser Gruppe zählen alle anderen Funktionen, die einfach zu übersetzen
sind, zum Beispiel logische Operationen, Quantifizierer oder Textoperationen
Außerdem gibt es noch eine weiter Gruppe, die eine Sonderbehandlung
benötigen. Das sind Sortierungen, Identitätsoperationen oder XML spezifische
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 14
Funktionen. Dann gibt es noch eine Gruppe mit problematischen Funktionen, wie
zum Beispiel Konstanten, Metadatenanfragen oder Laufzeitzugriff auf Typen.
4.4 SQL Query Rewriting
Wenn nun alle zuvor bescheidenen Schritte der Normalisierung und Übersetzung
der Quilt Anfrage zu einer SQL Anfrage durchgeführt wurden, dann kann man
diese SQL Anfrage ausführen, um Ergebnistupel zu erhalten.
Um eine SQL Anfrage über dem relationalen Schema einer XML Datenbank
ausführen zu können, muß zuerst ein Query Rewriting durchgeführt werden.
Dabei wird über die relationale View-Definition eine Anfrage gestartet. Da es aber
verschiedene Möglichkeiten der Darstellung einer XML-Relation gibt, kann dies
auf verschiedene Arten geschehen. Im Allgemeinen werden aber 3 Schritte
durchlaufen:
• Abfragen des XML-Schemas
Hierbei wird die Indexstruktur durchlaufen, um alle notwendigen
Indexeinträge zu finden, die für die Ausführung der SQL-Anfrage
notwendig sind.
•
Generierung der Anfrage auf dem Index aus Schritt 1
Im nun folgenden Schritt wird eine Anfrage generiert, die auf dem Index
aus Schritt 1 aufbaut.
•
Ausführen der Anfrage aus Schritt 2
4.4.1 Angewendet auf eine XML-Relation
Mit der folgenden SQL-Abfrage sollen die Titel aller Paper ausgegeben werden,
an denen als erster Autor Herr Bayer geschrieben hat.
SELECT Paper/Title
FROM XML-REL
WHERE Paper/Author[1]/LN = ‘Bayer’
Abbildung 18: SQL Beispiel
Diese Anfrage wird in zwei Teile zerlegt. Einerseits wird im Index gesucht, dass
alle notwendigen Attribute zusammengestellt werden können (Schritt 1). Im
Beispiel bedeutet das, dass aus den XML-Triple alle Einträge mit dem Pfad
’Paper/Author[1]/LN’ , die den Wert ’Bayer’ haben gesucht werden.
SELECT Did INTO Did-Set
FROM XML-Triple
WHERE Paper/Authors[1]/LN = ‘Bayer’
Abbildung 19: Erste Anfrage über XML-Triple
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 15
Die zweite Abfrage erstellt, aufbauend auf der ersten Abfrage, eine Verknüpfung
zwischen dem Index und den eigentlichen Werten. Dabei werden alle Did-Set
Einträge der ersten Abfrage durchsucht und der ’Paper/Title’ Wert als Ergebnis
zurückgegeben (Schritt 2).
SELECT Value
FROM XML-Rel
WHERE Attr-Path = ’Paper/Title’ AND
Did IN Did-Set
Abbildung 20: Zweite Anfrage über XML-Triple
Anschließend werden diese beiden Anfrage ausgeführt, um die Ergebnistupel zu
erhalten (Schritt 3).
4.4.2 Angewendet auf einen Join
SELECT Paper/Title
FROM XML-REL
WHERE Paper/Author[1]/LN = ‘Bayer’
Abbildung 21: SQL Beispiel
Das vorherige Beispiel lässt sich auch mit einem Join zusammenfassen. Dadurch
kann man sich eine Abfrage sparen und erhält folgenden Ausdruck
SELECT t2.Value
FROM XML-Triple t1, XML-Triple t2
WHERE (t1.Attr-Path = Paper/Authors[1]/LN AND
t1.Value = ’Bayer’ AND
t1.Did = t2.Did AND
t2.Attr-Path = ‘Paper/Title’
Abbildung 22: Rewriting Ergebnis mit Join
Man benötigt dazu einen Join der XML-Triple mit sich selber. Das Ergebnis wird
dadurch nicht beeinflusst.
An diesem Beispiel sieht man sehr schön, wie ein Self-Join einer Tabelle
aussieht.
T1.Did = t2.Did
Dieser Join kann so verstanden werden, dass innerhalb der Datensätze immer zu
einem passenden Wertepaar gesprungen wird, so dass das geforderte Kriterium
erfüllt wird.
Query Rewriting
28.05.2001
Seite 16
XML-Datenbanken Hauptseminar Informatik im SS01
4.4.3 Umwandlung von XML-Rel mit Join zu XML-Triple
Für eine Umwandlung von XML-Rel zu XML-Triple gibt es einfache
Gesetzmäßigkeiten. So wird zum Beispiel ein XPath Ausdruck ersetzt durch
Value und dem entsprechenden Wert mit Attr-Path = „“ in der WHERE Klausel.
Ebenso kann man eine Zuweisung XPath Attribut = const durch Value = const
ersetzen.Außerdem müssen alle Instanzen eines XML-Tripel Ausdruckes mit
einem Join über die DocumentId miteinander verbunden werden.
SELECT Api, APj
FROM XML-REL WHERE APk= c1 AND APl = c2
Abbildung 23: SQL Anfrage
Im Beispiel sind vier Attribute beteiligt, APi, APj, APk und APl. Das führt zu vier
Tupelvariablen T1, T2, T3 und T4, sowie einem 3-teiligen Join über die vier
Instanzen von XML-Triple mit der DocumentId Did.
SELECT T3.Value, T4.Value
FROM XML-Triple T1, XML-Triple T2, XML-Triple T3, XML-Triple T1
WHERE T1.Attr-Path = ‘APk‘ AND T1.Value = c1 AND
T2.Attr-Path = ‘APl‘ AND T2.Value = c2 AND
T3.Attr-Path = ‘APi‘ AND
T4.Attr-Path = ‘APj‘ AND
T1.Did = T2.Did AND
T2.Did = T3.Did AND
T3.Did = T4.Did
Abbildung 24: Rewriting Ergebnis mit Join
4.5 Zusatzfunktionalität
XML bietet aber nicht nur diese Standardanfragen, die auch in SQL implementiert
sind, sondern auch noch einige Zusätze, die sehr komfortable Möglichkeiten zur
Verfügung stellen.
So kann man zum Beispiel Platzhalter in der Surrogate einfügen, so dass innerhalb
eines kompletten Dokuments nach einem bestimmten Wert gesucht werden kann
oder eine Volltextsuche über ein XML-Dokument mit Hilfe des Myriad Schemas
realisieren.
Bei diesem Schema wird, zusätzlich zu den Ergebnistupeln, immer noch die
genaue Position innerhalb des Dokuments mit erstellt. Somit kann man bestimmen,
wie oft ein Wert vor oder nach einem anderen vorkommt.
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 17
4.5.1 Myriad Schema mit MHC-Surrogate
Als Beispiel dient eine Anfrage nach den Titeln der Artikel, an denen Herr Bayer als
Autor beteiligt ist. Dabei interessiert nicht nur, ob der Name bei den Autoren
auftaucht, sondern auch, ob im Literaturverzeichnis eines Artikels ein Verweis auf
den Namen vorhanden ist.
SELECT Paper/Title
FROM XML-Rel
WHERE //Author/LN = ‘Bayer‘
Abbildung 25: SQL Anfrage mit Platzhalter
Wenn man nun herausbekommen will, an welcher Stelle diese Artikel stehen, dann
kann man dies mit folgendem Rewriting realisieren
SELECT Did
FROM XML-Ind
WHERE Value=‘Bayer‘ AND Surrogate IN
(SELECT X1.MHC FROM Xmy X1, Xmy X2
WHERE X1.ElAtt = ‘Authors‘ AND
X2.ElAtt = ‚LN‘ AND
X1.Pos < X2.Pos AND
X1.MHC = X2.MHC)
Abbildung 26: Rewriting Ergebnis aus Myriad-Schema
Um diese Funktionalität nutzen zu können, benötiget man MHC Codes. Das sind
Systemkomponenten, die eine Ebene tiefer im System zu finden sind, als die
XPatterns. Diese Codes ermöglichen den direkten Vergleich einzelner Ausdrücke.
Außerdem muß die Anfrage verschachtelt werden, damit alle Pfade mit dem
Namen „Author/LN“ durchsucht werden können.
Für eine Suche im Myriad Schema sind drei Attribute notwendig:
• das SearchPattern SP
• das SearchValue SV
• das ResultPattern RP
Begonnen wird, anhand des SearchPatterns, den Index zu erstellen. Als nächstes
wird, zusammen mit SearchIndex und SearchValue, die DocumentId erstellt.
Auch für das ResultPattern wird ein MHC-Index erstellt. Dieser wird zusammen
mit der DocumentId zum ResultValue zusammengefasst. Zusätzlich zu diesem
diesem wird mit dem MHC-Index des ResultPatterns noch der ResultPath erstellt.
Im letzten Schritt wird dann noch aus ResultRalue und ResultPath das
Anfrageergebnis generiert. (Siehe Abbildung 27)
Query Rewriting
28.05.2001
Seite 18
XML-Datenbanken Hauptseminar Informatik im SS01
SP
RP
MHC(SP)
SV
MHC(RP)
SDid
RPath
RV
Anfrage Ergebnis
Abbildung 27: Ablaufschema der Myriad-Anfrage
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 19
5 Fazit
Jede XML-Datenbank nutzt eine Art von Query Rewriting, da die Datenstruktur
von XML nicht einheitlich ist. Dabei wendet jeder Datenbankhersteller seine
eigene Methode an, um Indexstrukturen und Daten abzubilden und zu speichern.
Somit ist auch kein einheitlicher Synthesealgorithmus anzugeben, der diese
Funktionalität im Allgemeinen erfüllt. Diese Ausarbeitung soll nur einen Einblick in
die generelle Funktionsweise liefern und ist deshalb auch nicht speziell auf eine
Datenbanklösung zugeschnitten.
Es stellt sich auch die Frage, warum man diesen Aufwand in Kauf nimmt, um eine
Anfrage an ein Datenbanksystem zu stellen. Darauf könnte man antworten, dass
jedes System seine Vor- und Nachteile hat. So auch XML basierende Systeme.
Aber mit diesem hier vorgestellten Verfahren lassen sich die Vorteile von XML
Systemen mit Quilt Anfragen mit den Vorteilen relationaler Systeme verbinden.
So ist es möglich eine Anwendung zu erstellen, die ihre Daten mit
unterschiedlichen anderen Komponenten austauschen kann, aber trotzdem
komfortabel zu bedienen bleibt.
XML ist noch eine recht junge Sprache und es bleibt abzuwarten, wie weit
Schnittstellen zu anderen Systemen und Sprachen geschaffen werden, so dass
der Datenaustausch kein Problem mehr darstellt.
Query Rewriting
28.05.2001
XML-Datenbanken Hauptseminar Informatik im SS01
Seite 20
6 Literaturverzeichnis:
•
Folienskript: Kap. 8.3 „XML-Models and Indexing“, Vorlesung Prof. R.
Bayer, TUM, 29.12.2000, version 8
•
Vortragsfolien: „Query Languages for XML“, Don Chamberlin, IBM
Almaden Research Center, 26.10.2000
•
“Pushing XML Queries inside Relational Databases”, Ioana Manolescu,
Daniela Florescu, Donald Kossmann, Januar 2001
•
“Query Rewriting for Semistructured Data”, Yannis Papakonstantinou,
Vasilis Vassalos
Query Rewriting
28.05.2001
Zugehörige Unterlagen
Herunterladen