Impl mentation xquery
This presentation is the property of its rightful owner.
Sponsored Links
1 / 40

Implémentation XQuery PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Implémentation XQuery

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Impl mentation xquery

Implémentation XQuery

Georges Gardarin

  • Introduction

  • Algèbre XML

  • Génération des plans


1 introduction

1. Introduction

  • Des techniques en évolution

    • VLDB 50% des articles sur XML DB


Techniques de base

Techniques de base

XQuery

Parser

Analyse de la requête

Normalisation

Mise en forme normale

Transformation

Transformation et simplification

Génération

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

Run Time

Machine

Query

Plan

Optimizer

Optimisation

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


2 alg bres pour xml

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 GardarinFederating heterogeneous data sources with xml, IKS 2003


Xalg bre

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.


Xtuples

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.


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

R

A

a/c

f/h/i

f

a/b

a

a

f

f

c

c

b

b

g

g

h

h

G

A

e

e

d

d

D

J

i

j

i

j

H

B

C

I

E

K

F

L

XTuples : représentation


Les xop rateurs

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

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

Xsource(‘STADIUM’)

Xsource(‘STADIUM’)

Xsource(« STADIUM »)

Xsource(« STADIUM »)

Xsource(‘PLAYERS’)

Relation Étudiée

Dans son intégralité

avant de retourner un XTuple

1° relation,

Puis 2°

U

XOrderBy

XJoinHash

XUnion

Les XOpérateurs

  • Semi-pipeline

  • XJoinHash

  • XJoinMultiHash

  • XIntersection

  • Full-pipeline

  • XConstruct

  • XRestrict

  • XProject

  • Xunion

  • XProduct

  • XJoinSimple

  • XSource

Non-bloquant

Bloquant

  • XMin

  • XMax

  • XOrderBy

Puis jointure XTuple

par XTuple

Hashage

de la relation 1


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

Construction et Projection

a

b

c

XSource

<SAX/>

a

b

c

b

c

XProjection


Filtrage

Filtrage

  • XRestriction

    • destruction de lignes complètes

    • ordre préservé

    • non bloquant

a

b

c

a

b

c

XRestriction


Union

a

b

c

Union

  • XUnion

    • ordre préservé en mode bloquant, non préservé sinon

    • bloquant ou non suivant paramétrage

XUnion

a

b

c

a

b

c


Jointure

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

a

b

c

XJointure

d

e

a

b

c

d

e

f


Alg bre xml imbrication

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)


Alg bre xml valeurs nulles

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


Annotation des attributs

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*


Xalgebra overview

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


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

Implémentation des algorithmes


3 techniques de transformation

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


Tpq tree pattern query

: relation ancêtre-descendant

: relation père-fils

TPQ (Tree Pattern Query)

  • TPQ = arbre modélisant une requête.

    • Il est destiné à être « mappé » sur l’arborescence du document XML cible

$a

ancêtre

$e

Arbre T

$b

$c

Arbre T2

$f

parent

$d

$g


Gtp generalized tree pattern

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.


Gtp exemple

$p

(0)

(0)

$s

$l

$w

(0)

(1)

$t

$g

$i

(1)

(0)

(2)

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


Pattern match

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.


Pattern match exemple

Pattern match : exemple

On mappe le GTP sur l’arborescence XML

$p

(0)

XML

1

$s

(0)

$l

$w

people

(1)

(0)

$t

$g

$i

(2)

11

person

2

(1)

(0)

person

GTP

3

6

9

12

15

address

watches

profile

address

profile

4

5

7

8

10

13

14

16

17

city

watch

watch

state

city

age

interest

state

age

“30”

“s2”

“28”

“s1”

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


Gtp universel

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


Gtp universel exemple

(0) $o

(1) $b

(2) $i

GTP Universel : Exemple

FOR $o IN document(“auction.xml“)

WHERE EVERY $b in $o/bidder SATISFIES $b/increase>100

RETURN <result> {$o} </result>

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)


Gtp requ te imbriqu e

GTP Requête imbriquée

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

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

WHERE [email protected] = [email protected]

RETURN <item>

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

WHERE [email protected] = [email protected]

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.


Gtp requ te imbriqu e 2

(0)

(1.0)

(1.1.0)

$p

$t

$e

(1.1.0)

$g

$n1

$b

$i

$t2

(1.0)

(1.1.0)

(0)

(2)

$n2

(1.1.1)

GTP Requête imbriquée (2)

$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


Transformation xquery en gtp

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.


Algorithme de transformation

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


4 plan d valuation

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.


Alg bre physique

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.


Alg bre physique 2

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


Traduire le gtp en plan physique

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

F : filter

IS : tag index scan

SSJ : structural semi-join

SJ : strcutural join

OSJ : outer structural join

S : sort

M : merge

G

G

person, profile

person, profile

S

S

person, profile

person, profile

OSJ

SJ

profile/interest

watches/watch

S


Optimisation gr ce aux sch mas

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


Limination des n uds internes

Élimination des nœuds « internes »

  • 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


Deux n ud pour le m me l ment xml

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

$b

$t

$t2

$y

$t

$y

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


Liminer les n uds inutiles

Éliminer les nœuds inutiles

FOR $a IN …./a[b]

RETURN {$a/c}

$a

$a

$b

$c

$c

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


Eliminer un group by du plan physique

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


Performances des gtp

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


5 conclusion

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


  • Login