+ All Categories
Home > Documents > Implémentation XQuery

Implémentation XQuery

Date post: 10-Jan-2016
Category:
Upload: saburo
View: 36 times
Download: 0 times
Share this document with a friend
Description:
Implémentation XQuery. Georges Gardarin Introduction Algèbre XML Génération des plans. 1. Introduction. Des techniques en évolution VLDB 50% des articles sur XML DB. Techniques de base. XQuery. Parser. Analyse de la requête. Normalisation. Mise en forme normale. Transformation. - PowerPoint PPT Presentation
40
1 Implémentation XQuery Georges Gardarin Introduction Algèbre XML Génération des plans
Transcript
Page 1: Implémentation XQuery

1

Implémentation XQuery

Georges Gardarin Introduction Algèbre XML Génération des plans

Page 2: Implémentation XQuery

2

1. Introduction

Des techniques en évolution VLDB 50% des articles sur XML DB

Page 3: Implémentation XQuery

3

Techniques de base

Parser

Normalisation

Génération

Optimizer

XQuery

Run TimeMachine

QueryPlan

Analyse de la requête

Mise en forme normale

Transformation et simplification

Génération d'un plan d'exécution

Optimisation

Machine d'exécution de l'algèbre

Transformation

Page 4: Implémentation XQuery

4

2. Algèbres pour XML

De multiples algèbres Jagadish H.V., Lakshmanan L.V.S., Srivastava D., Thompson K.

TAX: A Tree Algebra for XML, Proc. DBPL Conf., Roma Italy, 2001.

Fernandez M., Simeon J., Wadler P.. An Algebra for XML Query, In Foundations of Software Technology and Theoretical Computer Science, New Delhi, 2000.

Zaniolo C. The Representation and Deductive Retrieval of Complex Objects, Proc 11th VLDB, Stockholm, 1985.

Galanis L., Viglas E., DeWitt D.J., Naughton J.F., Maier D. Following the Paths of XML: an Algebraic Framework for XML Query Evaluation, 2001

Tuyet-Tram Dang-Ngoc and Georges Gardarin Federating heterogeneous data sources with xml, IKS 2003

Page 5: Implémentation XQuery

5

XAlgèbre

Proposée et implémentée pour un médiateur XMLMedia, XQuark XLive

Besoin d’une algèbre adaptée à XQuery. XTuples, représentation de données semi-

structurées. XOpérateurs, une extension des opérateurs

relationnels, manipulant les XTuples.

Page 6: Implémentation XQuery

6

XTuples

Pourquoi ce besoin de nouvelle représentation? Valeurs nulles Attributs multivalués Extensions

Nécessité d’une représentation adaptée aux données semi-structurées.

Nom Prénom Club Palmarès

Mutu Adrian NULL Coupe d’Italie

Palermo Martin Villareal NULL

Del Piero Allessandro

FC Juventus Ligue des champions, Championnat d’Italie

Page 7: Implémentation XQuery

7

XTuples : représentation

Un XTuple est composé de un ensemble d’arbre A un ensemble de références R sur

A. Ces références sont appelées

XAttributs.

Les opérations relationnelles se font sur R.

Les parcours et recomposition se font sur A.

Un ensemble de XTuples du même type forment une XRelation

bA

C

ac

edB

f

E

g h

iD

Fj

a/ba/c f/h/i f

bG

I

ac

edH

f

K

g h

iJ

Lj

AR

Page 8: Implémentation XQuery

8

Les XOpérateurs

Xsource(‘PLAYERS’)

XOrderBy

Relation Étudiée Dans son intégralitéavant de retourner un XTuple

Opérateurs étendus du relationnel adapté aux données semi-structurées.

Ils opèrent sur les XRelations (composées de XTuples)

Full-pipeline• XConstruct• XRestrict• XProject• Xunion

• XProduct

• XJoinSimple• XSource

• XMin• XMax• XOrderBy

Xsource(‘STADIUM’)

Xsource(‘STADIUM’)

XJoinHash

Hashagede la relation 1

Puis jointure XTuplepar XTuple

Xsource(« STADIUM »)

Xsource(« STADIUM »)

U

XUnion

1° relation,Puis 2°

Non-bloquant

Bloquant

Semi-pipeline• XJoinHash• XJoinMultiHash• XIntersection

Page 9: Implémentation XQuery

9

Construction et Projection

XSource construction XAttribut construction forêt ordre de la source non-bloquant

XProjection destruction de colonnes destruction de (sous-)

arbres ordre préservé non-bloquant

a b c

XSource

XProjection

b ca b c

<SAX/>

Page 10: Implémentation XQuery

10

Filtrage

XRestriction destruction de lignes complètes ordre préservé non bloquant

XRestriction

a b ca b c

Page 11: Implémentation XQuery

11

Union

XUnion ordre préservé en mode bloquant, non préservé sinon bloquant ou non suivant paramétrage

a b c

XUnion

a b c a b c

Page 12: Implémentation XQuery

12

Jointure

XJointure Jointure des tables et juxtaposition d'arbres ordre préservé en mode bloquant, non préservé sinon bloquant ou non suivant paramétrage

XFusion Concaténation d'arbres

XJointurea b c

d e f a b c d e

Page 13: Implémentation XQuery

13

Algèbre XML : Imbrication

Nesting operations required to compute multi-valued variables

Example : for $r in //restaurant Let $m := $r//menu Return ($r/name, $r/region, count($m))

Solution: introduce Nest/Unest operators $r.Project(/name, /region, //menu) $r1 $r1.Nest(/name,/region, //menu*)

In short and more powerful: $r.Project((/name), /region, //menus*)

Also useful for quantifiers (every)

Page 14: Implémentation XQuery

14

Algèbre XML: Valeurs nulles

Null in XML is two-folds Empty tag <region /> Missing tag

XQuery requires predicates be true (no null) Mandatory element

XQuery allows null (empty tag) in results Optional element

Useful to check at processing time Restriction may eliminate nulls Join is (left/right) outer join according to optionality

Page 15: Implémentation XQuery

15

Annotation des attributs

Defined by a path sequence $r/nom, $r/region, $r/offer/menus/menu

Each attribute can be annotated A0 = optional, A1 = mandatory A* = nested optional, A+ = nested mandatory

Attributes can be the base for a group by (nesting) (A, B)

Example ($r/nom1),$r/region0, $r/offer/menus/menu*

Page 16: Implémentation XQuery

16

XAlgebra: Overview

Datasource.XSource (Path seq, atomic XQuery) XRelation Transform a source in an XRelation of attributes Path sequence

XRelation.XRestrict (unary Constraint) XRelation select Xtuples satisfying conditions on attribute values

XRelation.XProject (Path seq) XRelation Remove attributes that are not in path sequence

XRelation.XJoin (XRelation, binary Constraint) XRelation join of two XRelations on attribute values

XRelation.XFusion (Path seq) XRelation Remove attributes and merge each XTuple trees in one of given schema

XRelation.XReconstruct (Path seq) XML Extract XML documents of given schema from the XRelation

Page 17: Implémentation XQuery

17

Implémentation des algorithmes

XSélection Par accès à index Intérêt d'indexer

tous les mots Intersection et union

des adresses selon critères

Filtrage final pour vérifier

XJointure Par accès aux index Par produit cartésien Par tri-fusion Par hachage

Intérêt du pipline

Page 18: Implémentation XQuery

18

3. Techniques de Transformation

Notion de modèle d’arbre (Tree Pattern) Jagadish VLDB 2002Jagadish VLDB 2002 Principe des modèles d’arbres généralisés

(GTP) Utilisation des GTP pour XQuery Optimisation & performances

Page 19: Implémentation XQuery

19

TPQ (Tree Pattern Query)

TPQ = arbre modélisant une requête. Il est destiné à être « mappé » sur l’arborescence

du document XML cible

$a

$c$b

$d

$f

$e

$g

Arbre T

Arbre T2

ancêtre

parent

: relation ancêtre-descendant : relation père-fils

Page 20: Implémentation XQuery

20

GTP (Generalized Tree Pattern)

Le GTP ajoute au TPQ des arcs en pointillés symbolisant des relations optionnelles

GTP: G=(T,F) T: arbre F:formule Chaque nœud de l’arbre T est labellisé par une

variable et possède un numéro de groupe. F est une formule booléenne vérifiant les prédicats

applicables aux nœuds. Un ensemble de nœuds forment un groupe s’ils sont

reliés entre eux par des liens non optionnels.

Page 21: Implémentation XQuery

21

GTP - Exemple

FOR $p IN document(“auction.xml”)//person, $l IN $p/profile

WHERE $l/age > 25 AND $p//state != ‘MI’

RETURN <result> {$p//watches/watch} {$l/interest} </result>

$p

$l$s

$g

$w

$t $i

(0)

(0)(0)

(0)(1)

(1)

(2)

$p.tag = person & $s.tag = state &$l.tag = profile & $i.tag = interest &$w.tag = watches & $t.tag = watch &$g.tag = age & $g.content > 25 &$s.content != ‘MI’

Numéro de groupe (par convention le groupe 0 inclut l’élément root)

Relation optionnelle

Page 22: Implémentation XQuery

22

Pattern Match

Un « Pattern Match » de l’arbre G dans une collection d’arbres C est un sous-arbre h partiel

h: G C tel que: h contient au moins le groupe 0 de G. h préserve la structure relationnel de G. h vérifie la formule booléenne F de G.

Page 23: Implémentation XQuery

23

Pattern match : exemple

people

person person

address

state

watches

watch

profile

agewatch

address

state

profile

age interestcitycity

Résultat = H1: $p->2, $s->4, $l->9, $g->10, $w->6, $t->7

“s1” “30” “s2” “28”

$p

$l$s

$g

$w

$t $i

(0)

(0)(0)

(0)(1)

(1)

(2)

1

2

9

87

6

54

3

10

11

13 14

1512

1716

GTP

XML

On mappe le GTP sur l’arborescence XML

Page 24: Implémentation XQuery

24

GTP Universel

Il permet de modéliser les requêtes contenant le quantificateur « EVERY » dans la clause « WHERE »

Un GTP universel est un GTP G=(T, F) tel que plusieurs arcs soient étiquetés ‘EVERY’

Un arc peut être étiqueté ‘EVERY’ seulement s’il pointe sur un nœud atteignable par des arcs non optionnels depuis le nœud racine

Page 25: Implémentation XQuery

25

GTP Universel : Exemple

FOR $o IN document(“auction.xml“)WHERE EVERY $b in $o/bidder SATISFIES $b/increase>100RETURN <result> {$o} </result>

(0) $o

(1) $b

(2) $i

F_L : pc($o, $b) & $b.tag = bidderF_R: pc($b, $i) & $i.tag = increase &

$i.content >100

$b: [F_L → $i: (F_R)

Page 26: Implémentation XQuery

26

GTP Requête imbriquée

FOR $p IN document(“auction.xml”)//person

LET $a := FOR $t IN document(“auction.xml”)//closed_auction

WHERE $p/@id = $t/buyer/@person

RETURN <item>

{FOR $t2 IN document(“auction.xml”)//europe/item

WHERE $t/itemref/@item = $t2/@id

RETURN {$t2/name}}

</item>

WHERE $p//age > 25

RETURN <person name = {$p/name/text()}> {$a} </person>

→ Récupère le nom et les items achetés en europe, par toutes les personnes agées de plus de 25 ans.

Page 27: Implémentation XQuery

27

$p.tag = person & $g.tag = age &$n1.tag = $n2.tag=name & $b.tag = buyer &$t.tag = closed_auction&$i.tag = itemref & $t2.tag = item & $g.content > 25

Join Condition:$p.id=$b.person & $i.item=$t2.id

$p

$n1$g

$t

$b $i $t2

$e

$n2

(0)

(0) (2)

(1.0)

(1.0)

(1.1.0)

(1.1.0)

(1.1.1)

(1.1.0)

GTP Requête imbriquée (2)

Page 28: Implémentation XQuery

28

Transformation XQuery en GTP

XQuery : “FLWR”

Une expression FLWR :

ForClause ::= FOR $fv1 IN E1, … , $fvn IN En.(LetClause ::= LET $lv1 := E1, … , $lvn := En.)WhereClause ::= WHERE (E1, … , En).ReturnClause ::= RETURN {E1} … {En}.

Ei ::= FLWR (Requêtes imbriquées) | XPATH.

Page 29: Implémentation XQuery

29

Algorithme de transformation

Il prend en entrée une expression FLWR et renvoie un GTP

Il parse au fur et à mesure la requête XQuery en utilisant la récursivité afin de gérer les expressions FLWR imbriquées dans une clause ‘FOR’ par exemple

Le parsing d’une expression Xpath entraîne la création d’un nouveau nœud dans le GTP résultat

Page 30: Implémentation XQuery

30

4. Plan d’évaluation

La principale motivation derrière les GTP est de fournir une base pour une exécution efficace.

Pour cela: Supprimer les correspondances répétées pour des

TPQ similaires. Retarder la matérialisation des nœuds autant que

possible.

Page 31: Implémentation XQuery

31

Algèbre physique

Index Scan ISp(S) : Sort chaque nœud satisfaisant le prédicat p en utilisant un index pour

les arbres S d’entrée. Filter Fp(S) :

Sort seulement les arbres satisfaisant le prédicat p des arbres S. L’ordre est préservé.

Sort Sb(S) : Trie la séquence d’entrée des arbres S sur la base de tri b.

Value Join Jp(S1,S2) : une comparaison des deux séquences d'arbres d'entrées, par le

prédicat de jointure p. L'ordre de la séquence de sortie est basé sur l'ordre de séquence d'entrée gauche de S1.

Page 32: Implémentation XQuery

32

Algèbre physique (2)

Structural Join SJr(S1, S2): Les séquences d'arbres S1 et S2 doivent être triées en

fonction du noeud id. L’opérateur joins S1 et S2 basés sur la relation r entre eux (pc ou ad)pour chaque paire. La sortie est triée sur S1 ou S2 si besoin.

Group By Gb(S) : l'entrée S est triée sur le group by basé sur le prédicat b.

Merge M(S1,…,Sn) : Les Sj doivent avoir la même cardinalité k. Pour chaque

1≤i≤k, joindre l'arbre i avec chaque entrée sous une racine artificielle, et produire l'arbre. L'ordre est préservé.

Page 33: Implémentation XQuery

33

Traduire le GTP en plan physique

Utilisation d'un algorithme spécifique pour générer le plan physique à partir du GTP

Obtention d'un plan du type :M

G G

S

SJ OSJ

S

S

watches/watch profile/interest

person, profile

person, profile person, profile

person, profile

F : filterIS : tag index scanSSJ : structural semi-joinSJ : strcutural joinOSJ : outer structural joinS : sortM : merge

Page 34: Implémentation XQuery

34

Optimisation grâce aux schémas

Principe : les informations contenues dans le schéma XML

(.xsd) vont permettrent d’optimiser les GTP et les plans d’exécution physique en résultant

Page 35: Implémentation XQuery

35

Élimination des nœuds « internes »

a//b//c a//c $a

$c

$b

$a

$c

Seulement si le schéma spécifie que tout chemin de a à c passe par un élément b

Page 36: Implémentation XQuery

36

Deux nœud pour le même élément XML

FOR $b IN …//book

WHERE $b/title = ‘Germinal’

RETURN <x> {$b/title} {$b/year} </x>

$b

$t2$t $y

$b

$t $y

Seulement si le schéma spécifie que tout livre ne possède qu’un titre !

Page 37: Implémentation XQuery

37

Éliminer les nœuds inutiles

FOR $a IN …./a[b]

RETURN {$a/c}

$a

$c$b

$a

$c

Seulement si le schéma spécifie que tout élément a possède au moins un sous-élément b !

Page 38: Implémentation XQuery

38

Eliminer un ‘GROUP BY’ du plan physique

RETURN {$a/sous-element}

Une clause ‘FOR’ nécessite un ‘GROUP BY’ du résultat

Mais si le schéma spécifie que le sous-élément est unique alors ce ‘GROUP BY’ devient inutile

Page 39: Implémentation XQuery

39

Performances des GTP

La méthode d’exécution faisant appel aux GTP surpasse en rapidité les méthodes de parcours classique de l’arborescence pour l’exécution de tous les types de requêtes

Les auteurs ont effectués ces tests dans l’environement suivant : TIMBER native XML database, PIII 866MHz, Ms Windows 2000, index sur les principaux éléments

Page 40: Implémentation XQuery

40

5. Conclusion

Les GTP semblent être actuellement la méthode la plus efficace pour XQuery

Mode opératoire en 3 étapes :

Requête XQuery

Plan physique

GTP

Optimisation par schéma

Résultat


Recommended