1 Implémentation XQuery Georges Gardarin  Introduction  Algèbre XML  Génération des plans.

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
Évaluation des requêtes relationnelles
Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Classe : …………… Nom : …………………………………… Date : ………………..
ACTIVITES Les fractions (10).
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours MIAGE Henry Boccon-Gibod 1 XML, langage de structuration documentaire Langage de transformation et langage d'interrogation.
Witold Litwin Structures physiques Witold Litwin
Algèbre relationnelle
Optimisation algébrique de requêtes relationnelles
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
Optimisation de Requêtes
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Manipulation d’XML avec XSL
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Christelle Scharff IFI Juin 2004
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Cours Systèmes logiques
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
LMD: Langage de Manipulation de Données
Développement d’applications web
XML et les Bases de Données
OCaml - Les listes L3 MI.
Contrôles d'accès aux données
Eléments d ’algèbre relationnelle
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
OCaml – Les arbres L3 MI.
Les structures de données arborescentes
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Titre : Implémentation des éléments finis sous Matlab
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
Xpath XML Path language par Yves Bekkers
Représentation des systèmes dynamiques dans l’espace d’état
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
1.1 LES VECTEURS GÉOMÉTRIQUES
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Cours N°2 Base de Données & Langage SQL
COURS DE PROGRAMMATION ORIENTEE OBJET :
Description de documents XML multistructurés au moyen de nœuds retards Jacques Le Maitre LSIS Université du Sud Toulon-Var.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
2 Industrialisation des développements sur SQL Server avec Visual Studio 2010 Mardi 8 Février – 17h30 Karim Zegour – Winwise Michel Perfetti – MVP VS.
Mise en forme en Mathématiques
Limiter et trier des données
Algèbre Relationnelle : Implémentation
Modélisation des données Niveau conceptuel DON-2 V0-0.
Slide 1 of 39 Waterside Village Fête ses 20 ans.
LES PILES ET FILES.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Traduction des opérations sous MySQL
Les Chiffres Prêts?
Chapitre 3 :Algèbre de Boole
XPath XML Path UP Web Année universitaire
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Optimisation de requêtes
Arbres binaires et tables de hachage
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
Indexation et Optimisation
Sélection de colonnes (la projection)
Les bases de données Séance 8 Jointures.
Transcription de la présentation:

1 Implémentation XQuery Georges Gardarin  Introduction  Algèbre XML  Génération des plans

2 1. Introduction  Des techniques en évolution VLDB 50% des articles sur XML DB

3 Techniques de base Parser Normalisation Génération Optimizer XQuery Run Time Machine Query Plan 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

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, Fernandez M., Simeon J., Wadler P.. An Algebra for XML Query, In Foundations of Software Technology and Theoretical Computer Science, New Delhi, Zaniolo C. The Representation and Deductive Retrieval of Complex Objects, Proc 11th VLDB, Stockholm, 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

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.

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. NomPrénomClubPalmarès MutuAdrianNULLCoupe d’Italie PalermoMartinVillarealNULL Del PieroAllessandr o FC JuventusLigue des champion s, Champion nat d’Italie

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 b A C a c e d B f E g h i D F j a/b a/cf/h/if b G I a c e d H f K g h i J L j AR

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’) XJoinHash Hashage de la relation 1 Puis jointure XTuple par XTuple Xsource (« STADIUM ») U XUnion 1° relation, Puis 2° Non-bloquant Bloquant Semi-pipeline XJoinHash XJoinMultiHash XIntersection

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 abc XSource XProjection bcabc

10 Filtrage  XRestriction destruction de lignes complètes ordre préservé non bloquant XRestriction abcabc

11 Union  XUnion ordre préservé en mode bloquant, non préservé sinon bloquant ou non suivant paramétrage abc XUnion abc abc

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 XJointure abc def abc de

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)

14 Algèbre XML: Valeurs nulles  Null in XML is two-folds Empty tag 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

15 Annotation des attributs  Defined by a path sequence $r/nom, $r/region, $r/offer/menus/menu  Each attribute can be annotated A 0 = optional, A 1 = 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*

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

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

18 3. Techniques de Transformation  Notion de modèle d’arbre (Tree Pattern)  Jagadish VLDB 2002  Principe des modèles d’arbres généralisés (GTP)  Utilisation des GTP pour XQuery  Optimisation & performances

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

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.

21 GTP - Exemple FOR $p IN document(“auction.xml”)//person, $l IN $p/profile WHERE $l/age > 25 AND $p//state != ‘MI’ RETURN {$p//watches/watch} {$l/interest} $p $l$s $g $w $t$i (0) (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

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.

23 Pattern match : exemple people person address state watches watch profile age watch address state profile ageinterestcity 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) (1) (2) GTP XML On mappe le GTP sur l’arborescence XML

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

25 GTP Universel : Exemple FOR $o IN document(“auction.xml“) WHERE EVERY $b in $o/bidder SATISFIES $b/increase>100 RETURN {$o} (0) $o (1) $b (2) $i F_L : pc($o, $b) & $b.tag = bidder F_R: pc($b, $i) & $i.tag = increase & $i.content >100 $b: [F_L → $i: (F_R)

26 GTP Requête imbriquée FOR $p IN document( “ auction.xml ” )//person LET $a := FOR $t IN document( “ auction.xml ” )//closed_auction WHERE = RETURN {FOR $t2 IN document( “ auction.xml ” )//europe/item WHERE = RETURN {$t2/name}} WHERE $p//age > 25 RETURN {$a} → Récupère le nom et les items achetés en europe, par toutes les personnes agées de plus de 25 ans.

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) (2) (1.0) (1.1.0) (1.1.1) (1.1.0) GTP Requête imbriquée (2)

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.

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

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.

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.

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é.

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 GG S SJ OSJ S S watches/watch profile/interest person, profile F : filter IS : tag index scan SSJ : structural semi-join SJ : strcutural join OSJ : outer structural join S : sort M : merge

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

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

36 Deux nœud pour le même élément XML FOR $b IN …//book WHERE $b/title = ‘Germinal’ RETURN {$b/title} {$b/year} $b $t2$t$y $b $t$y Seulement si le schéma spécifie que tout livre ne possède qu’un titre !

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 !

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

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

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