Title: XML et les BD
1XML et les BD
- 1. Introduction
- 2. Modèle de données
- 3. Langage de requêtes
- 4. Produits
- 5. Conclusion
- 6. Exécution/Optimisation de Requêtes
21. Introduction
- Générations de BD
- Réseau et hiérarchique 70 - 80
- Relationnel 80 - 90
- Objet-Relationnel 90 -
- Web et BD
- un rendez-vous manqué
- couplage faible par serveur d'applications
- le Web est une vaste BD distribuée
- la structuration est faible
- plutôt orienté documentaire ...
Introduction
3XML s'impose
- Intégration des données et méta-données
- Standard déchange de données universel
- Les BD ne peuvent rester indifférentes
- nécessité de stocker les documents XML
- nécessité de pouvoir interroger ces documents
- évolution ou révolution ?
- Quel modèle de données ?
- Quel langage d'interrogation ?
- Quelle intégration avec l'existant ?
Introduction
4Limites de SQL
- Mauvais support de l'imbrication
- GROUP BY limités
- Généralement dans les éditeurs de rapports
- SQL3 trop complexe
- Requêtes imbriquées difficiles
- Méthodes en qualification coûteuse
- Références pas très claires
- Peu adapté à XML
- Vision tabulaire
- Manipulation par des fonctions (SQL/XML)?
- SQL à 30 ans !
- Inventé en 1970 pour la gestion
- XQuery le successeur ?
Introduction
5Exemple de documents
- lt?xml version"1.0"?gt
- ltRestaurants region"Normandie" version"2.0"gt
-
- ltRestaurant type"francais" categorie""gt
- ltNomgtLe Grand Hôtellt/ Nomgt
- ltAdressegt ltRuegtPromenade M. Proust
lt/Ruegt ltVillegtCabourglt/Villegt - lt/Adressegt
- ltManagergtDupontlt/Managergt
- ltMenugtPlat du jourlt/Menugt
- lt/Restaurantgt
- ltRestaurant type"francais" categorie""gt
- ltNomgtL'Absinthelt/Nomgt
- ltAdressegt ltNogt10lt/Nogt ltRuegtquai Quarantaine
lt/Ruegt ltVillegtHonfleurlt/Villegt
- lt/Adressegt
ltTéléphonegt0231893900 lt/Téléphonegt - ltManagergtDupontlt/Managergt
- ltManagergtDurandlt/Managergt
- ltMenu Prix"12"gt Fruits de Mer lt/Menugt
- lt/Restaurantgt
- lt/Restaurantsgt
Introduction
62. Modèle de données
- Schémas flexibles et irréguliers
- Optionnels, avec ou sans DTD
- Données auto-descriptives
- Balises et attributs
- Modèle de type hypertexte
- Support des références
- Éléments atomiques ou complexes
- Composition par agrégation
- Types de données variés et extensibles
- Textes, numériques, , types utilisateur
Modèle semi-structuré
7Le modèle de données
- XQuery Data Model
- Modèle des schémas et de XPath 2
- Un document est un arbre à nœud étiqueté
- Chaque nœud possède une identité
- Exprimé en XML, souvent représenté graphiquement
- Une forêt est une collection de documents de même
schéma - Une source de données est soit un document, soit
une forêt
Modèle semi-structuré
8Diagramme XML Spy
Modèle semi-structuré
9Et les documents sans schéma ?
- Possibilité de stocker des documents sans schéma
- Le SGBD génère un schéma (arbre couvrant sans
feuilles)? - Maintenu lors des mises à jour (compteur
d'utilité)? - Schéma de base pour l'interrogation
- Facilite la conception
- Dégager des collections de documents apparentés
- Le SGBD conçoit pour vous !
- Solution
- Forêt fermée versus forêt ouverte
- Construction et gestion dynamique des schémas
- Notion de "document guide" ou DTD généralisée
- Schéma faible avec typage string
- Possibilité dinférer des types à partir des
valeurs
Modèle semi-structuré
10Bilan Modèle de données
- Un standard riche
- schémas standardisés depuis 3 mai 2001
- Représentation graphique ad-hoc
- Génération automatique en cas d'absence
- Faut-il un autre modèle que les schémas ?
- Doit couvrir les schémas
- Doit couvrir les DTD
- Doit couvrir l'absence de schéma et DTD
- Syntaxe plus simple
Modèle semi-structuré
113. Langage de requêtes
Langages de requêtes
12Quest ce que XQuery ?
- XQuery est le langage de requêtes pour XML défini
et standardisé par le W3C - XQuery simpose comme le langage de requêtes
- Pour les bases de données XML natives
- Pour les documents XML textuels (XQuery Text)?
- Pour lintégration de données (bases de données
virtuelles)? - Le besoin dinterroger les bases relationnelles
en XQuery existe - Pour lintégration et la publication de données
- Compétition avec les extensions de SQL (SQL/XML)?
Langages de requêtes
13Objectifs
Types XML Schema XPath 2
Puissance de SQL
Recherche d'information
Structure d'arbres
Langage fonctionnel
Langages de requêtes
14La base
- Proposé par IBM , MS, ATT, Data Direct, ...
- Langage fonctionnel type CAML
- Forme de requête élémentaire
- FOR ltvargt in ltforestgt , ltvargt in ltforestgt
//itération - LET ltvargt ltsubtreegt // assignation
- WHERE ltconditiongt // élagage
- RETURN ltresultgt // construction
- Les forêts sont sélectionnées par des Xpath
(document ou collection)? - Le résultat est une forêt (un ou plusieurs
arbres)?
Langages de requêtes
15Exemple 1 XPath
- (Q1) Noms de tous les restaurants
- collection(Restaurants)/Restaurant/Nom/text()?
- collection(Restaurants)/Restaurant/Nom
Langages de requêtes
16Exemple 2 et 3 XPath
- Expression régulière
- Menu de tous les restaurants
- collection(Restaurants)//Menu
- Accès via indice à attribut
- Donnez le nom des menus du premier restaurant
- collection(Restaurants)/Restaurant1/Menu/_at_Nom
Langages de requêtes
17Exemple 4 Sélection
- Lister le nom des restaurants de Cabourg
- collection(Restaurants)/Restaurant
- Adresse/Ville Cabourg" /Nom
- ltresultatgt
- for R in collection("Restaurants")/Restauran
t - where R/Adresse/Ville Cabourg
- return R/Nom
- lt/resultatgt
Langages de requêtes
18Exemple 5 Jointure
- Lister le nom des Restaurants avec téléphone dans
la rue de l'Hôtel Lutecia - for R in collection("Restaurants")/Restaurant,
- H in collection("Hotels")/Hotel
- where H//Rue R//Rue
- and H//Nom "Le Lutecia"
- return
- ltResultgt
- R/Nom
- R/Téléphone
- lt/Resultgt
Langages de requêtes
19Exemple 6 Restructuration d'arbre
- Construire une liste de restaurants par Ville
- for c in distinct(collection(Restaurants)/Resta
urant//Ville)? - return
- ltVillegtclt/Villegt
- ltRestaurantsgt
- for r in collection(Restaurants)/Restaur
ant - where r//Ville c
- return r
- ltRestaurantsgt
Langages de requêtes
20Exemple 7 Imbrication en Where
- Adresses des hotels dans des villes ayant des
restaurants trois étoiles - for h in collection(Hotels)/Hotel
- where h/Adresse/Ville in
- for r in collection(Restaurants)/Restaur
ant - where r/_at_categorie ""
- return r/Adresse/Ville/text()
- return h/Adresse
Langages de requêtes
21Syntaxe Simplifiée (XLive)?
- // Réduite à FWR
- XQuery ForClause WhereClause ReturnClause
- ForClause for VarDef ,VarDef
- VarDef VarName in collection (
QuotedText )/XPath - WhereClause where CplexCond
- CplexCond Cond Cond AND CplexCond Cond OR
Cplex - CondCond Expr Op Constant Expr Op Expr
contains( Expr , Text ) - Op ! lt lt gt gt
- Expr VarName/XPath
- ReturnClause return XMLElement
- XMLElement lttaggtXMLElementlt/taggt
XPath XQuery - VarName Any variable
- nameTag XML label
- QuotedText Any text between quotes "
- Constant Quoted text or number
- XPath XPath expression restricted to child
and descendant directions
Langages de requêtes
22Exemple 8 Agrégat simple
- Combien de restaurants y-a-t-il en collection ?
- let R collection(Restaurants)/Restaurant
- return
- ltNombreRestaurant gt count (R)
lt/NombreRestaurantgt
Langages de requêtes
23Exemple 9 Agrégat partitionné
- Lister le nom de chaque restaurant avec le prix
moyens des menus proposés - for r in collection(Restaurants)//Restaurant
- let a collection(Restaurants)//
- Restaurant r//Menu/_at_Prix
- return
- ltresultatgt
- r/Nom
- ltavgPrixgtAVG(a)lt/avgPrixgt
- lt/resultatgt
Langages de requêtes
24Exemple 10 recherche textuelle
- Lister les bons restaurants de Paris
- for r in collection(Restaurants)//Restaurant
- where (contains (r/Comments, Bon)
- or contains (r/Comments, Excellent))
- and r/Adresse/Ville Paris
- return r/Nom
Langages de requêtes
25Exemple 11 Ordre et désordre
- Lister les bons restaurants de Paris par ordre
alphabétique - for r in unordered(collection(Restaurants)//Res
taurant)? - where (contains(r/Comments, "Excellent)
- or contains(r/Comments, "Good))?
- and r/Adresse/Ville Paris
- return r/Nom
- orderby (r/Nom descending)
Langages de requêtes
26Exemple 12 Multi-requêtes
- Construire un document avec en-tête, titre, liste
restaurants peu chers, titre, liste restaurants
chers - ltXML_documentgt
- ltVery_Expensive_Restaurantsgt
- ltTitlegtList of very expensive restaurantslt/Titlegt
- for r in collection("Restaurants)//Restaurant
- where every p in r/Menu/_at_Prix satisfies
(pgt100)? - return r
- lt/Very_Expensive_Restaurantsgt
- ltVery_Inexpensive_Restaurantsgt
- ltTitlegtList of very inexpensive
restaurantslt/Titlegt - for r in collection(Restaurants)//Restaurant
- where some p in r/Menu/_at_Prix satisfies (plt10)?
- return r
- ltDategtdate()lt/Dategt
- lt/Very_Inexpensive_Restaurantsgt
- lt/XML_documentgt
Langages de requêtes
27Exemple 13 String
- Trouver les livres dans lequel le nom d'un
élément se termine par "or" et le même élément
contient la chaîne "Suciu" quelque part. Pour
chaque tel livre, retourner le titre et l'élément
qualifiant. - for b in document("document")//book
- let e b/contains(string(.), "Suciu")
- and ends-with(local-name(.
), "or") - where exists(e)
- return ltbookgt b/title e lt/bookgt
Langages de requêtes
28Fonctionnalités XQuery Text
- Recherche sur mot-clés
- Recherche de phrase
- Support des mots de laiaison
- Recherche sur préfix, suffix, infix
- Normalisation des mots, accents, capitales,
- Recherche par proximité (unité mots)?
- Spécification de l'ordre des mots
- Combinaison logic avec AND, OR , NOT
- Recherche par similarité
- Tri des résultats par pertinence
Langages de requêtes
29Bilan XQuery
- Véritable langage de programmation
- Très puissant
- Sélection
- Jointure
- Imbrication
- Restructuration
- Agrégation
- Tri
- Plein texte
- Sur des forêts dont les arbres sont des documents
- Questions ?
Langages de requêtes
304. Aperçu des produits
- Systèmes natifs
- Technique spécialisée de stockage et recherche
- Extension des techniques documentaires à
l'élément - SGBD relationnels étendus
- Séparation des éléments et du graphe
- Mapping en tables
- SGBD objet adapté
- Utilisation d'une structuration objet (DOM)?
- Un produit Excelon (Object Store)?
- Racheter par Progress Software
SGBDX
314.1 SGBD Natif XML
- SGBD
- conçu pour XML,
- stockant les documents en entiers sans les
décomposer en éléments, - utilisant de techniques d'indexation d'arbres
spécifiques.
Requête
XML
XML
Recherche XML
Stockage XML
Noyau SGBD Concurrence, Fiabilité
Forêts d'arbres
Index
SGBDX
32Indexation Plein Texte
- Utilisation d'un thésaurus au chargement
- ensemble de termes reliés
- liste des mots importants
- synonymes et préférés
- spécialisations, traductions
- Standards ISO 2788 et ANSI Z39.19
- Stémisation (racine) ou lémisation (préféré)?
- Listes inverses
- fichiers de mots significatifs
- pour chaque mot, adresse document
(élémentoffset)?
SGBDX
33Principaux produits
- De multiples start-up
- Software A.G. Tamino http//www.softwareag.com/
- X-Hive/Db http//www.x-hive.com/
- Coherity http//www.coherity.com
/ - IXIA soft http//www.ixiasoft.com/
- XML Global http//www.xmlglobal.com/
- NeoCore http//www.neocore.com/
- Xyleme http//www.xyleme.com/
- Exist http//exist.sourceforge.net/
- Intégration comme type spécialisé à SGBD OR
- DB2 XML Extender, Oracle XML DB, SQL Server 2005
SGBDX
34Xyleme
- Entrepôt XML efficace
- Architecture distribuée
- Cluster de PCs
- Communication avec Corba
- Développé sur Linux en C
- Support du langage de requêtes XyQL
- OQL étendu avec des expressions de chemins
- Recherche plein texte en éléments efficace
SGBDX
35Xyleme Functionnalities
SGBDX
36Xyleme Natix Repository
- Objectifs
- Minimiser les I/O pour accès directe et balayage
- Accès direct efficace via index et identifiant
- Compression des données sans pénaliser les accès
- Stockage efficace darbre
- Pages de taille fixe classique
- Enregistrements de taille variable à lintérieur
- Equilibrage des arbres par éclatement de pages
SGBDX
37Xyleme Architecture Physique
XyQuery
Global Query Manager
Local Query Manager Loader/Indexer
Local Query Manager Loader/Indexer
Repository Context
XyIndex
Repository Context
XyIndex
xyIndex
xyIndex
SGBDX
38Xyleme Exemple de Requêtes
- Extension de OQL avec XPath
- Orientation recherche textuelle
- Select boss/Name, boss/Phone
- From comp in BusinessDomain,
- boss in comp//Manager
- Where comp/Product contains Xyleme
SGBDX
39Xyleme Indexation
- Liste inversée standard
- mot ? documents contenant ce mot
- Index Xyleme
- mot ? éléments contenant ce mot (document
élément identifier) - La plupart des requêtes sur mots-clés sont
traitées en index, sans accès aux documents - Possibilité denrichir la requête via un
thésaurus avant la recherche en index
SGBDX
404.2 Mapping SGBDR
- Composant logiciel au-dessus d'un SGBDR assurant
- le stockage et l'interrogation de documents XML
- en transformant le XML en tables
- et les tables en XML
XQuery
XML
XML
Recherche XML
Stockage XML
SQL
SGBD
Tables de lignes
Index
SGBDX
41Exemple de Mapping
Restaurant(R, Nom, Tel) Adresse(R,N, Rue,
Ville) Manager(R, Nom)?
SGBDX
42SQL/XML
- Intégration de fonctionnalités XQuery à SQL
- Support à la SQL3
- Type de donnée natif XML Type (colonnes XML)?
- Fonctions dextraction XPath
- Fonctions de construction de XML (pont
relationnel)? - Insertion et Maj de XML en colonne(s)?
- Exemple de requête
- SELECT XMLElement("Emp",
- XMLForest ( e.hire, e.dept AS "department")
)AS "result - FROM EMPLOYEE e
- WHERE ExtractValue(e.XMLemp, /emp/_at_id) gt 200
- Intégré à Oracle et DB2
SGBDX
43Fonctions SQL/XML
SGBDX
44Oracle XML/DB
- Stockage et publication
- Mapping de XML plat sur une table
- Mapping de XML imbriqué en tables imbriquées
- Stockage de XML en colonne (XML Type)?
- Commandes PutXml et GetXml
- Interrogation
- Support de SQL/XML
- Servlet XSQL
- document XML avec requêtes SQL/XML
- transformation du résultat des requêtes en XML
SGBDX
45Microsoft SQL Server 2005
- Stockage de XML
- Stockage natif comme "XMLtype"
- Mapping de XML en tables
- défini par assistants
- exécuté par procédures stockées
- Stockage en Large OBject
- varchar et varbinary
- Interrogation en XML
- XQuery et XML DML
- Proposé pour interroger et mettre à jour les
données XML - Possibilité de définir des vues XML et de les
interroger - SELECT FOR XML
- Retourne du XML à partir de requêtes SQL et
permet de définir le format du XML retourné - OpenXML
- Manipulation de documents XML comme des tables
avec des procédures stockées
SQL
SQL Server
RowSet
SGBDX
46XQuare Bridge (Open Source)?
- Extraction XML
- via XQuery traduite en SQL
- Stockage XML en base
- Mapping via schema
- Accélérateur XTree (Repository)?
- Portable
- Oracle, SQLServer, PostGres,
- Version industrielle
- www.datadirect.com
Règles de Mapping
Scripts XQuery
Extractor
Mapper
API SAX2
API XML/DBC
JDBC
SGBDR
SGBD
BD relationnelle
SGBDX
47Natif versus XORDBMS
- Points forts XOR
- pas de nouveau SGBD
- possibilité de normaliser les données
- possibilité de stocker comme valeur dattribut
- une certaine portabilité multi-SGBD
- performance pour accès grain fin
- Points forts Natif
- un nouveau SGBD fait pour XML
- jamais de mapping à définir et maintenir
- intégrité du document
- recherche plein texte
- performance pour accès gros grain
SGBDX
485. Conclusion
- XML peut-il changer les bases de données ?
- Recherche en BD semi-structurées
- Besoin de schémas faibles (XML Schéma)?
- Langage de requêtes standardisé (XQuery)?
- L'effet du Web ...
- Intégration douce à l'Objet/relationnel
- Transformation en tables
- Gestion du graphe
- Support des textes libres niveau élément
49Résumé
- XML fournit un cadre uniforme pour
- échanger des données structurées (DTD, schéma)?
- échanger des données semi-structurées (graphes)?
- interroger des documents (XQuery)?
- intégrer des sources de données hétérogènes
(table, multimédia)? - Beaucoup de travaux sont en cours
- Gestion efficace au sein d'Oracle, de DB2, etc.
- Construction de middlewares pull/push fondés sur
XQuery - Construction de SGBD pur XML (Xylème, etc.)?
50Implémentation XQuery
- Introduction
- Algèbre XML
- Génération des plans
511. Introduction
- Des techniques en évolution
- Beaucoup de recherche sur XML DB
- Extension des techniques relationnelles
- Algèbre XML
- Réécriture de requêtes en arbre algébrique
- Transformation et optimisation des arbres
- Prise en compte des index de structure et contenu
52Techniques 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
532. 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
54XAlgèbre
- Proposée et implémentée pour un médiateur
- XQuare
- XLive à lUVSQ
- Besoin dune 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.
55XTuples
- Pourquoi ce besoin de nouvelle représentation?
- Valeurs nulles
- Attributs multivalués
- Extensions
- Nécessité dune représentation adaptée aux
données semi-structurées.
56XTuples représentation
- Un XTuple est composé de
- un ensemble darbre A
- un ensemble de références R sur les nœuds des
arbres 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
57Les XOpérateurs
- Opérateurs étendus du relationnel adapté aux
données semi-structurées. - Ils opèrent sur les XRelations (composées de
XTuples)?
- Semi-pipeline
- XJoinHash
- XJoinMultiHash
- XIntersection
- Full-pipeline
- XConstruct
- XRestrict
- XProject
- Xunion
- XProduct
- XJoinSimple
- XSource
Non-bloquant
Bloquant
Puis jointure XTuple par XTuple
Hashage de la relation 1
58Construction 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
ltSAX/gt
b
c
a
b
c
XProjection
59Filtrage
- XRestriction
- destruction de lignes complètes
- ordre préservé
- non bloquant
a
b
c
a
b
c
XRestriction
60Union
- XUnion
- ordre préservé en mode bloquant, non préservé
sinon - bloquant ou non suivant paramétrage
XUnion
a
b
c
a
b
c
61Jointure
- 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
62Algèbre XML Imbrication
- Opérations dimbrication nécessaire pour calculer
les éléments multi-valués - Exemple
- for r in //restaurant
- Let m r//menu
- Return (r/name, r/region, count(m))?
- Solution introduire les opérateurs Nest/Unest
- r.Project(/name, /region,
//menu) ?r1 - r1.Nest(/name,/region,
//menu)? - En plus court et plus puissant
- r.Project((/name), /region,
//menus)? - Aussi utile pour les quantifiers (quel que soit
every)?
63Algèbre XML Valeurs nulles
- Nul en XML à deux aspects
- Élément vide ltregion /gt
- Elément absent
- XQuery recherche les prédicats vrai (non nuls)?
- Elément en condition obligatoire
- XQuery permet les éléments vides en résultat
- Correspond à une valeur optionnelle
- Doit être pris en compte par lalgèbre
- Les restrictions peuvent éliminer les nuls
- Les jointures sont des (left/right) outer join si
le résultat nest pas soumis à condition
64Annotation des attributs
- Les attributs des XRelations sont associés à un
XPath - r/nom, r/region, r/offer/menus/menu
- Chaque attribut peut être annoté style DTD
- A0 optional, A1 mandatory
- A nested optional, A nested mandatory
- Les attributes peuvent être la base dun groupe
dimbrication - (A, B)?
- Exemple
- (r/nom1),r/region0, r/offer/menus/menu
65XAlgebra Vue densemble
- 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
66Implé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
673. Techniques de Représentation
- Notion de modèle darbre (Tree Pattern)?
- Jagadish VLDB 2002
- Principe des modèles darbres généralisés (GTP)?
- Utilisation des GTP pour XQuery
- Optimisation performances
- Variante TGV (N. Travers)?
68TPQ (Tree Pattern Query)?
- TPQ arbre modélisant une requête.
- Il est destiné à être mappé sur
larborescence du document XML cible
a
ancêtre
e
Arbre T1
c
b
Arbre T2
f
d
parent
g
69GTP (Generalized Tree Pattern)
- Le GTP ajoute au TPQ des arcs en pointillés
symbolisant des relations optionnelles - GTP G(T,F) T arbre Fformule
- Chaque nœud de larbre 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 sils sont
reliés entre eux par des liens non optionnels.
70GTP - Exemple
FOR p IN document(auction.xml)//person, l IN
p/profile WHERE l/age gt 25 AND p//state !
MI RETURN ltresultgt p//watches/watch
l/interest lt/resultgt
p.tag person s.tag state l.tag
profile i.tag interest w.tag watches
t.tag watch g.tag age g.content gt 25
s.content ! MI
Relation optionnelle
Numéro de groupe (par convention le groupe 0
inclut lélément root)?
71Pattern Match
- Un Pattern Match de larbre G dans une
collection darbres 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.
72Pattern match Exemple
On mappe le GTP sur larborescence XML
p
(0)?
XML
1
s
(0)?
l
w
people
(1)?
(0)?
g
t
i
(2)?
11
person
2
(0)?
(1)?
person
GTP
9
6
3
15
12
address
watches
profile
address
profile
8
7
5
4
10
13
14
17
16
state
watch
age
watch
state
age
interest
city
city
s1
30
s2
28
Résultat H1 p-gt2, s-gt4, l-gt9, g-gt10,
w-gt6, t-gt7
73GTP 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 sil
pointe sur un nœud atteignable par des arcs non
optionnels depuis le nœud racine
74GTP Universel Exemple
FOR o IN document(auction.xml)? WHERE EVERY b
in o/bidder SATISFIES b/increasegt100 RETURN
ltresultgt o lt/resultgt
F_L pc(o, b) b.tag bidder F_R pc(b,
i) i.tag increase i.content gt100
b F_L ? i (F_R)?
75GTP Requête imbriquée
FOR p IN document(auction.xml)//person LET a
FOR t IN document(auction.xml)//closed_auct
ion WHERE p/_at_id t/buyer/_at_person RETURN
ltitemgt FOR t2
IN document(auction.xml)//europe/item
WHERE t/itemref/_at_item
t2/_at_id RETURN
t2/name lt/itemgt WHERE
p//age gt 25 RETURN ltperson name
p/name/text()gt a lt/persongt
? Récupère le nom et les items achetés en europe,
par toutes les personnes agées de plus de 25 ans.
76GTP Requête imbriquée (2)?
p.tag person g.tag age n1.tag
n2.tagname b.tag buyer t.tag
closed_auction i.tag itemref t2.tag
item g.content gt 25 Join Condition p.idb.
person i.itemt2.id
77Transformation 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.
78Algorithme 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 dune expression Xpath entraîne la
création dun nouveau nœud dans le GTP résultat
794. 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.
80Algèbre physique
- Index Scan ISp(S)
- Sort chaque nœud satisfaisant le prédicat p en
utilisant un index pour les arbres S dentrée. - Filter Fp(S)
- Sort seulement les arbres satisfaisant le
prédicat p des arbres S. Lordre est préservé. - Sort Sb(S)
- Trie la séquence dentré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.
81Algè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. Lopé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 1ik, joindre l'arbre i avec chaque
entrée sous une racine artificielle, et produire
l'arbre. L'ordre est préservé.
82Traduire 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
F filter IS tag index scan SSJ structural
semi-join SJ strcutural join OSJ outer
structural join S sort M merge
M
G
G
person, profile
person, profile
S
S
person, profile
person, profile
OSJ
SJ
profile/interest
watches/watch
S
83Optimisation grâce aux schémas
- Principe
- les informations contenues dans le schéma XML
(.xsd) vont permettrent doptimiser les GTP et
les plans dexécution physique en résultant
84Élimination des nœuds internes
a
a
b
c
c
Seulement si le schéma spécifie que tout chemin
de a à c passe par un élément b
85Deux nœud pour le même élément XML
- FOR b IN //book
- WHERE b/title Germinal
- RETURN ltxgt b/title b/year lt/xgt
b
b
t2
t
y
t
y
Seulement si le schéma spécifie que tout livre ne
possède quun titre !
86Éliminer les nœuds inutiles
a
a
c
b
c
Seulement si le schéma spécifie que tout élément
a possède au moins un sous-élément b !
87Eliminer 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
88Performances des GTP
- La méthode dexécution faisant appel aux GTP
surpasse en rapidité les méthodes de parcours
classique de larborescence pour lexécution de
tous les types de requêtes - Les auteurs ont effectués ces tests dans
lenvironement suivant TIMBER native XML
database, PIII 866MHz, Ms Windows 2000, index sur
les principaux éléments
895. 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