XML-Algebren Martin Winkler. Gliederung Motivation: Warum Algebren? Die Natix-Algebra, NAL -...
-
Upload
gunda-munch -
Category
Documents
-
view
111 -
download
6
Transcript of XML-Algebren Martin Winkler. Gliederung Motivation: Warum Algebren? Die Natix-Algebra, NAL -...
XML-Algebren
Martin Winkler
Gliederung
• Motivation: Warum Algebren?• Die Natix-Algebra, NAL
- Datenmodell- Funktionsprinzip- Beispiel
• Tree Algebra for XML, TAX- Datenmodell- Funktionsprinzip- Beispiel
• Tree Logical Classes, TLC- Datenmodell- Funktionsprinzip- Beispiel
• Vergleich der drei Algebren
Warum Algebren?
• Warum sollte man eine Anfrage auf eine Algebra abbilden?
• Syntaktisch verschiedene Anfragen können die gleiche Bedeutung haben.
• Sie werden aber auf verschiedene Planoperatoren abgebildet.
• Die Pläne haben unterschiedliche Ausführungszeiten.
Beispiel• Q1
$d//person[emailaddress]/name
• Q2(for $x in $d//person[emailaddress]return $x)/name
• Q3let $x := for $y in $d//person where $y/emailaddress return $yreturn $x/name
Quelle:Michiels, P.; Mihaila, G. A. Simeon, J. Put a Tree Pattern in Your Algebra ICDE, 2007, 246-255
Warum Algebren?
• Eine Umformung / Optimierung ist nur auf syntaktischer Ebene möglich.
• Algebren erlauben die Abbildung auf Operatoren und danach- Umformung- Optimierung- dann Abbildung auf physische Operatoren
Die Natix-Algebra, NAL
• Von Brantner et al. an der Universität Mannheim für das DBMS Natix entwickelt
• Datenmodell: Tupelsequenzen
• Knoten des XML-Baumes sind Tupel,Attribute des Tupels sind von Typ String, number, boolean oder wieder eine Tupelsequenz
NAL: Datenmodell
firstname: Hans lastname: Meiser
Moderator:
time: 05:00pm
tv-show
( , )
NAL: Funktionsprinzip
• Beispiel: Selektion
• Parametrisiert mit Prädikat p
• Arbeitet auf Sequenz e
Outputsequenz:
Inputsequenz e: P true P true P trueP false
ausgewählte Operatoren
• Projektion
• Unnest-Map
• Map
Hinzufügen eines Attributes mit dem Map-Operator
a a a a
ausgewählte Operatoren
• Projektion
• Unnest-Map
• Map
Auspacken einer Sequenz mit dem Unnest-Map-Operator
a
Beispiel
FOR $autor IN document("autoren.xml")//authorFOR $buch IN document("bestand.xml")//bookLET $cv := $autor/curriculum_vitaeWHERE count($buch//page) >= 100 AND $autor/authored/title/text() = $buch/title/text()
RETURN <book title={$buch/title/text()}> <author name={$autor/name/text()}> <curriculum_vitae>{$cv}</curriculum_vitae> </author> </book>
In kanonische Form bringenFOR $autor IN document("autoren.xml")//authorFOR $buch IN document("bestand.xml")//bookLET $cv := $autor/curriculum_vitaeLET $titel := $buch/title/text()LET $name := $author/name/text()LET $cv_elem := <curriculum_vitae>{$cv}</curriculum_vitae>LET $autor_elem := <author name=$name>{$cv_elem}</author>LET $buch_elem := <book title=$titel>{$autor_elem}</book>WHERE count($buch//page) >= 100 AND $autor/authored/title/text() = $buch/title/text()
RETURN $buch_elem
Beispiel
• Das erste For-Statement wird in einen Unnest-Map-Operator überführt:
• Ebenso das zweite For-Statement, jedoch jetzt mit dem Ausdruck e1 als Eingabe:
Beispiel
• Let-Statements werden auf Map-Operatoren abgebildet.
Beispiel
• Die Variablen, die XML-Elemente repräsentieren, erfordern die Konstruktion eines solchen Elements, hier mitC (elem, tag[, attribut], inhalt) bezeichnet.
Beispiel
• Eine Selektion stellt sicher, dass das Prädikat der Where-Klausel von allen resultierenden Tupeln erfüllt wird.
• Der aufgrund der Query-Umformung vereinfachte Return-Teil kann jetzt durch eine einfache Projektion abgebildet werden:
Tree Algebra for XML, TAX
• Für das DBMS Timber von Jagadish et al. Entwickelt
• Datenmodell: Bäume- Data Trees- Pattern Trees- Witness Trees
Data Tree
Pattern Tree
Witness Tree
Beispiel zweier Witness Trees, die durch eine Selektion mit dem Pattern Tree aus der
Datenbasis gewonnen wurden.
Funktionsprinzip
• Die Knotenlabels $1 bis $4 erlauben eine Adressierung der Knoten in der Datenbasis.
BeispielFOR $autor IN document("autoren.xml")//authorFOR $buch IN document("bestand.xml")//bookLET $cv := $autor/curriculum_vitaeLET $page_count := count($buch//page)WHERE $page_count >= 100 AND $autor/authored/title/text() = $buch/title/text()ORDER BY $buch/title Ascending
RETURN <book title={$buch/title/text()}> <author name={$autor/name/text()}> <curriculum_vitae>{$cv}</curriculum_vitae> </author> </book>
Beispiel
• Pattern Trees p1 und p2 für die For-Statements
Beide Bäume werden als Eingabe für eine Selektion auf den Kollektionen C1(autoren.xml) und
C2(bestand.xml) verwendet.
Beispiel
• Pattern Tree p3 für die Aggregation
Nach der Aggregation dient C3 als Input für die Selektion:
Tree Logical Classes, TLC
• Von Lakshmanan et al. entwickelt
• Löste TAX als Algebra für das DBMS Timber der Universität von Michigan ab.
• Datenmodell: Knotenmengen und Bäume
Funktionsprinzip
• Daten liegen wie in TAX als Data Trees vor• Annotated Pattern Trees, APT, dienen dazu
relevante (Teil-)Bäume zu extrahieren• Das Ergebnis eines solchen Abgleiches sind
Witness Trees.• Die Knoten der Witness Trees sind Klassen der
LCR (Logical Class Reduction) zugeordnet.• Die Logical Class Labels dienen der
Adressierung der Knoten und machen sie für weitere Operationen verfügbar
FunktionsprinzipB1
C1 E1 D1 D2
A1
A2
B2
E2 E3 C2 C3
A3
Input Trees
B
D E C
A
?+
+Annotated Pattern Tree
B1
C1 E1 D1
A1 A2
B2
E2 E3 C3
A3Witness Trees
B1
C1 E1 D2
A1 A2
Quelle: Paparizos, S.; Wu, Y.; Lakshmanan, L. V. S. Jagadish, H. V. Tree Logical Classes for Ecient Evaluation of XQuery SIGMOD Conference, 2004, 71-82
Beispiel
FOR $autor IN document("autoren.xml")//authorFOR $buch IN document("bestand.xml")//bookLET $cv := $autor/curriculum_vitaeWHERE count($buch//page) >= 100 AND $autor/authored/title/text() = $buch/title/text()ORDER BY $buch/title Ascending
RETURN <book title={$buch/title/text()}> <author name={$autor/name/text()}> <curriculum_vitae>{$cv}</curriculum_vitae> </author> </book>
Beispiel
• Für beide FOR-Statements werden APT erzeugt• Für aufeinanderfolgende For-Statements wird ein Join-Operator
erzeugt
Beispiel
• Die APT werden sukzessive erweitert• Aggregations- und Filteroperationen arbeiten auf den LC
Beispiel
• Für alle diese APT ist eine einzige abschließende Sortieroperation nötig.
• Projektion und Duplikateliminierung.
• Selektion der Rückgabewerte.
• Konstruktion des XML-Fragments der Rückgabe.
Vergleich der drei Algebren
• NAL: kein Structural Join, kein Holistic Twig Join, keine Indexkonzepte berücksichtigt; „tuple-flattening“ umständlichDatenmodell: Tupel
• TAX: Datenmodell näher an XML-Bäumen aber als einzige Achsen lassen sich child- und descendant-Achsen in Pattern Trees definierenDatenmodell: Bäume
• TLC: Wiederverwendbarkeit „alter“ Ergebnisse dank Logical ClassesDatenmodell: Knotenmengen und Bäume
Vielen Dank für Ihre Aufmerksamkeit.