Implmentation XQuery Georges Gardarin w Introduction w Algbre
Implémentation XQuery Georges Gardarin w Introduction w Algèbre XML w Génération des plans 1
1. Introduction w Des techniques en évolution n VLDB 50% des articles sur XML DB 2
Techniques de base XQuery Parser Analyse de la requête Normalisation Mise en forme normale Transformation et simplification Génération d'un plan d'exécution Optimizer Optimisation Query Plan Run Time Machine d'exécution de l'algèbre 3
2. Algèbres pour XML w De multiples algèbres n n n 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 11 th VLDB, Stockholm, 1985. Galanis L. , Viglas E. , De. Witt 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 4
XAlgèbre w Proposée et implémentée pour un médiateur n n XMLMedia, XQuark XLive w Besoin d’une algèbre adaptée à XQuery. n n XTuples, représentation de données semistructurées. XOpérateurs, une extension des opérateurs relationnels, manipulant les XTuples. 5
XTuples w Pourquoi ce besoin de nouvelle représentation? n n n Valeurs nulles Attributs multivalués Extensions w Nécessité d’une représentation adaptée aux données semistructurées. Nom Prénom Club Palmarès Mutu Adrian NULL Coupe d’Italie Palermo Martin Villareal NULL Del Piero Allessandr o FC Juventus Ligue des champion s, Champion nat d’Italie 6
XTuples : représentation w Un XTuple est composé de n n n un ensemble d’arbre A un ensemble de références R sur A. Ces références sont appelées XAttributs. w Les opérations relationnelles se font sur R. w Les parcours et recomposition se font sur A. w Un ensemble de XTuples du même type forment une XRelation R A a/b a/c f/h/i f a f c b A e. D d B C a i j E F f c b G h g d H g e. J I h i j K L 7
Les XOpérateurs w Opérateurs étendus du relationnel adapté aux données semi-structurées. w Ils opèrent sur les XRelations (composées de XTuples) Semi-pipeline Full-pipeline • XJoin. Hash Bloquant • XMin • • Non-bloquant • XConstruct • XJoin. Multi. Hash • XIntersection Xsource (‘STADIUM’) ( « STADIUM » ) Xsource (‘STADIUM’) ( « STADIUM » ) (‘PLAYERS’) Relation Étudiée XMax Dans son intégralité 1° relation, Puis 2° Puis jointure XTuple Hashage avant de retourner un XTuple XOrder. By par XTuple de la relation 1 U XOrder. By XJoin. Hash XUnion • XRestrict • XProject • Xunion • XProduct • XJoin. Simple • XSource 8
Construction et Projection w XSource n n construction XAttribut construction forêt ordre de la source <SAX/> non-bloquant a bc XSource w XProjection n n destruction de colonnes destruction de (sous-) arbres a bc ordre préservé non-bloquant bc XProjection 9
Filtrage w XRestriction n destruction de lignes complètes ordre préservé non bloquant a bc XRestriction 10
Union w XUnion n n ordre préservé en mode bloquant, non préservé sinon bloquant ou non suivant paramétrage a bc XUnion a bc 11
Jointure w XJointure n n n Jointure des tables et juxtaposition d'arbres ordre préservé en mode bloquant, non préservé sinon bloquant ou non suivant paramétrage a bc XJointure w XFusion n Concaténation d'arbres d ef a bc d e 12
Algèbre XML : Imbrication w Nesting operations required to compute multi-valued variables n n Example : for $r in //restaurant Let $m : = $r//menu Return ($r/name, $r/region, count($m)) w Solution: introduce Nest/Unest operators n n $r. Project(/name, /region, //menu) $r 1. Nest(/name, /region, //menu*) w In short and more powerful: n $r. Project((/name), /region, //menus*) w Also useful for quantifiers (every) 13
Algèbre XML: Valeurs nulles w Null in XML is two-folds n n Empty tag <region /> Missing tag w XQuery requires predicates be true (no null) n Mandatory element w XQuery allows null (empty tag) in results n Optional element w Useful to check at processing time n n Restriction may eliminate nulls Join is (left/right) outer join according to optionality 14
Annotation des attributs w Defined by a path sequence n $r/nom, $r/region, $r/offer/menus/menu w Each attribute can be annotated n n A 0 = optional, A 1 = mandatory A* = nested optional, A+ = nested mandatory w Attributes can be the base for a group by (nesting) n (A, B) w Example n ($r/nom 1), $r/region 0, $r/offer/menus/menu* 15
XAlgebra: Overview w Datasource. XSource (Path seq, atomic XQuery) XRelation n Transform a source in an XRelation of attributes Path sequence w XRelation. XRestrict (unary Constraint) XRelation n select Xtuples satisfying conditions on attribute values w XRelation. XProject (Path seq) XRelation n Remove attributes that are not in path sequence w XRelation. XJoin (XRelation, binary Constraint) XRelation n join of two XRelations on attribute values w XRelation. XFusion (Path seq) XRelation n Remove attributes and merge each XTuple trees in one of given schema w XRelation. XReconstruct (Path seq) XML n Extract XML documents of given schema from the XRelation 16
Implémentation des algorithmes w XSélection n n 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 w XJointure n n Par accès aux index Par produit cartésien Par tri-fusion Par hachage l Intérêt du pipline 17
3. Techniques de Transformation w Notion de modèle d’arbre (Tree Pattern) w Jagadish VLDB 2002 w Principe des modèles d’arbres généralisés (GTP) w Utilisation des GTP pour XQuery w Optimisation & performances 18
TPQ (Tree Pattern Query) w TPQ = arbre modélisant une requête. n Il est destiné à être « mappé » sur l’arborescence du document XML cible $a Arbre T $b $c Arbre T 2 $e ancêtre $f parent $d $g : relation ancêtre-descendant : relation père-fils 19
GTP (Generalized Tree Pattern) w Le GTP ajoute au TPQ des arcs en pointillés symbolisant des relations optionnelles w GTP: G=(T, F) T: arbre F: formule w Chaque nœud de l’arbre T est labellisé par une variable et possède un numéro de groupe. w F est une formule booléenne vérifiant les prédicats applicables aux nœuds. w Un ensemble de nœuds forment un groupe s’ils sont reliés entre eux par des liens non optionnels. 20
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 (0) $s $w (0) (1) $l (0) $t $g (1) (0) $i (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’ Relation optionnelle Numéro de groupe (par convention le groupe 0 inclut l’élément root) 21
Pattern Match w Un « Pattern Match » de l’arbre G dans une collection d’arbres C est un sous-arbre h partiel w h: G C tel que: n n n 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. 22
Pattern match : exemple On mappe le GTP sur l’arborescence XML $p (0) $s $w (0) (1) $l (0) $t $g $i (2) (1) (0) GTP XML 1 people 11 person 2 3 6 9 address watches profile 4 5 7 8 state city watch “s 1” 12 address 15 profile 10 13 14 16 17 city age interest age state “ 30” “s 2” “ 28” Résultat = H 1: $p->2, $s->4, $l->9, $g->10, $w->6, $t->7 23
GTP Universel w Il permet de modéliser les requêtes contenant le quantificateur « EVERY » dans la clause « WHERE » w Un GTP universel est un GTP G=(T, F) tel que plusieurs arcs soient étiquetés ‘EVERY’ w 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 24
GTP Universel : Exemple FOR $o IN document(“auction. xml“) WHERE EVERY $b in $o/bidder SATISFIES $b/increase>100 RETURN <result> {$o} </result> (0) $o F_L : F_R: (1) $b pc($o, $b) & $b. tag = bidder pc($b, $i) & $i. tag = increase & $i. content >100 $b: [F_L → $i: (F_R) (2) $i 25
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 $t 2 IN document(“auction. xml”)//europe/item WHERE $t/itemref/@item = $t 2/@id RETURN {$t 2/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. 26
GTP Requête imbriquée (2) (0) $p $g (0) (1. 0) $t (1. 1. 0) $e $n 1 $b $i $t 2 (1. 1. 0) (2) (1. 0) (1. 1. 0) $n 2(1. 1. 1) $p. tag = person & $g. tag = age & $n 1. tag = $n 2. tag=name & $b. tag = buyer & $t. tag = closed_auction& $i. tag = itemref & $t 2. tag = item & $g. content > 25 Join Condition: $p. id=$b. person & $i. item=$t 2. id 27
Transformation XQuery en GTP XQuery : “FLWR” Une expression FLWR : For. Clause : : = (Let. Clause : : = Where. Clause : : = Return. Clause : : = FOR $fv 1 IN E 1, … , $fvn IN En. LET $lv 1 : = E 1, … , $lvn : = En. ) WHERE (E 1, … , En). RETURN {E 1} … {En}. Ei : : = FLWR (Requêtes imbriquées) | XPATH. 28
Algorithme de transformation w Il prend en entrée une expression FLWR et renvoie un GTP w 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 w Le parsing d’une expression Xpath entraîne la création d’un nouveau nœud dans le GTP résultat 29
4. Plan d’évaluation w La principale motivation derrière les GTP est de fournir une base pour une exécution efficace. w Pour cela: n n Supprimer les correspondances répétées pour des TPQ similaires. Retarder la matérialisation des nœuds autant que possible. 30
Algèbre physique w Index Scan ISp(S) : n Sort chaque nœud satisfaisant le prédicat p en utilisant un index pour les arbres S d’entrée. w Filter Fp(S) : n Sort seulement les arbres satisfaisant le prédicat p des arbres S. L’ordre est préservé. w Sort Sb(S) : n Trie la séquence d’entrée des arbres S sur la base de tri b. w Value Join Jp(S 1, S 2) : n 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 S 1. 31
Algèbre physique (2) w Structural Join SJr(S 1, S 2): n Les séquences d'arbres S 1 et S 2 doivent être triées en fonction du noeud id. L’opérateur joins S 1 et S 2 basés sur la relation r entre eux (pc ou ad)pour chaque paire. La sortie est triée sur S 1 ou S 2 si besoin. w Group By Gb(S) : n l'entrée S est triée sur le group by basé sur le prédicat b. w Merge M(S 1, …, Sn) : n 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é. 32
Traduire le GTP en plan physique w Utilisation d'un algorithme spécifique pour générer le plan physique à partir du GTP w Obtention d'un plan du type : M G person, profile SJ watches/watch F : filter IS : tag index scan SSJ : structural semi-join SJ : strcutural join OSJ : outer structural join S : sort M : merge OSJ profile/interest S 33
Optimisation grâce aux schémas w Principe : n 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 34
Élimination des nœuds « internes » w a//b//c a//c $a $a $b $c $c Seulement si le schéma spécifie que tout chemin de a à c passe par un élément b 35
Deux nœud pour le même élément XML FOR $b IN …//book $b $b WHERE $b/title = ‘Germinal’ RETURN <x> {$b/title} {$b/year} </x> $t $t 2 $y $t $y Seulement si le schéma spécifie que tout livre ne possède qu’un titre ! 36
Éliminer les nœuds inutiles $a FOR $a IN …. /a[b] RETURN {$a/c} $b $a $c $c Seulement si le schéma spécifie que tout élément a possède au moins un sous-élément b ! 37
Eliminer un ‘GROUP BY’ du plan physique w RETURN {$a/sous-element} w Une clause ‘FOR’ nécessite un ‘GROUP BY’ du résultat w Mais si le schéma spécifie que le sousélément est unique alors ce ‘GROUP BY’ devient inutile 38
Performances des GTP w 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 w Les auteurs ont effectués ces tests dans l’environement suivant : TIMBER native XML database, PIII 866 MHz, Ms Windows 2000, index sur les principaux éléments 39
5. Conclusion w Les GTP semblent être actuellement la méthode la plus efficace pour XQuery w Mode opératoire en 3 étapes : Requête XQuery GTP Optimisation par schéma Plan physique Résultat 40
- Slides: 40