Présenté par :
Ramdane Guenineche
Nabila Rahmoune
Miloud Benotmane
XML et Bases de Données
UNIVERSITÉ DU QUÉBEC À MONTRÉAL
INF 7115 Bases de données - Session d’Hiver 2005.
2
Sommaire Introduction
Analyse comparative de trois langages de requêtes.
Techniques d’indexation
Techniques d’optimisation
Conclusion
3
Introduction
XML est un métalangage permettant de représenter des documents sous forme d’éléments balisés et imbriqués
Standardisé en 1998 par W3C. Son objectif est de rendre possible le transfert de données
et leur structure indépendamment de la plate-forme. Représentation par DTD ou schémas Langages XPath, XQuery XSQL Supporté par des SGBR : Oracle, SQL Server
4
Analyse comparatives de trois langages de requêtes XML
Source : A. Bonifati, S.Ceri “Comparative Analysis of Five XML Query Languages” Sigmod Record, March 2000.
5
Langages de requêtes
LOREL ( Lightweight Object Repository Language )
• Extension de OQL
• Basé sur l’expression de chemin simple
XML QL ( XML Query Language )
• Extension de SQL
• Arête marquée avec l’étiquette identificateur de
l’élément
• Chaque graphe est distingué par une racine
XML GL ( XML Graphical Language )
• Langage graphique
• Basé sur le marquage du graphe XML
6
Modèle de données
Modèle de données spécifique
- LOREL - < Identif, Valeur > - > graphe XML (noeud=donnée)
- XML-QL - > Graphe XML (noeud =ID Objet)- XML-GL - > Modèle de données XML graphique
Expressions chemin
- LOREL - XML-QL - XML-GL Partiellement
7
Exemple comparatif<manufacturer><mn-name>Mercury</mn-name><year>1999</year><model><mo-name>Sable LT</mo-name><front-rating>3.84</front-rating><side-rating>2.14</side-rating><rank>9</rank></model>………</manufacturer><vehicle><vendor>Scott Thomason</vendor><make>Mercury</make><year>1999</year><model>Sable LT</model><color>metallic blue</color><option opt=“sunroof”>……<price>26800</price></vehicle>
Manufacturer
Model
MN
.NA
ME
YE
AR
MERCURY 1999
MO
-NA
ME
RA
NK
Front-rating
3.84 2.14
Sable LT
Side-rating
9
……
8
Sélection et extraction Sélectionner et extraire de <manufacturer> les <model> ayant <rank> <=10.
select Mfrom nhsc.manufacturer Mwhere M.model.rank <=10
WHERE <manufacturer><model><rank>$r</rank></model></manufacturer> ELEMENT_AS $m INwww.nhsc\manufacturers.xml,$r<=10CONSTRUCT $m
XML-GLLOREL
XML-QL
www.nhsc\manufacturers.xml
Manufacturer
Model
Manufacturer
*
RANK
<= 10
9
Réduction
De < manufacturer > laisser tomber les sous
éléments < model > dont < rank > est >10
ainsi que les éléments < front rating > et
< side rating > des modèles restants.
select Z.mn_name, Z.year,(select Z.model.mo_name, Z.model.rankwhere Z.model.rank <= 10)from nhsc.manufacturer Z
WHERE <manufacturer><mn_name>$mn</mn_name><year>$y</year></manufacturer> CONTENT_AS $m INwww.nhsc\manufacturers.xmlCONSTRUCT<manufacturer><mn_name>$mn</mn_name><year>$y</year>{ WHERE <model><mo_name>$mon</mo_name><rank>$r</rank></model> IN $m,$r<=10CONSTRUCT<model><mo_name>$mon</mo_name><rank>$r</rank></model>}</manufacturer>
LOREL
XML-QL
10
Réduction (suite)
Model
Manufacturer
Model
ManufacturerManufacturer Manufacturer
Model
MN
-NA
ME
YE
AR
MN
-NA
ME
YE
AR
MO-NAME RANK
RANK
<= 10
XML-GL
11
Jointure
Génerer les paires d’éléments
< manufacturer > et < vehicle > ou
<mn-name > =<make>,<mo-name >
= < model > et < year > = < year >.
temp:= select (M,V) as pair from hsc.manufacturer M, nhs.vehicle Vwhere M.mn_name = V. make and M.model.mo_name = V.modeland M.year = V.year
WHERE <manufacturer><mn_name>$mn</mn_name><year>$y</year><model><mo_name>$mon</mo_name></model> CONTENT_AS $mo</manufacturer> CONTENT_AS $m INwww.nhsc\manufacturers.xml<vehicle><model>$mon</model><year>$y</year><make>$mn</make></vehicle> CONTENT_AS $v IN www.nhsc\vehicles.xmlCONSTRUCT<manufacturer><mn_name>$mn</mn_name><year>$y</year><vehiclemodel>$mo,$v</vehiclemodel></manufacturer>
XML QL
LOREL
12
Jointure (suite)XML-GL
www.nhsc\manufacturers.xml
Manufacturer
www.nhsc\vehicles.xml
Vehicle
Model
YEA
R
YE
AR
MAKE
MN
-NA
ME
MO
DE
L
MO-NAM
E
VehicleModel
Manufacturer
ModelVehicle
YE
AR
MN
-NA
ME
**
13
Restructuration
select xml(car: (select X.vehicle.make, X.vehicle.model,X.vehicle.vendor, X.manufacturer.rank,X.vehicle.pricefrom temp.pair X))
WHERE <manufacturer><mn_name>$mn</mn_name><vehiclemodel><model><mo_name>$mon</mo_name><rank>$r</rank></model><vehicle><price>$y</price><vendor>$mn</vendor></vehicle></vehiclemodel></manufacturer> IN www.nhsc\queryresult3.xmlCONSTRUCT<car><make>$mn</make><mo_name>$mon</mo_name><vendor>$v</vendor><rank>$r</rank><price>$p</price></car>
Collecter les éléments <car> et lister leur make,model,vendor,rank et prix dans cet ordre
LOREL
XML-QL
14
Restructuration(suite)
YEA
R
RA
NK
www.nhsc\manufacturers.xml
Manufacturer
www.nhsc\vehicles.xml
Vehicle
Model
YE
AR
MO
DE
L
MO-NAM
EV
EN
DO
R
PR
ICE
VE
ND
OR
CAR PRICE
RANK
MO
DE
L
MA
KE
XML-GL
15
Qualités
Déclaratif : contenu du résultat défini par la requête LOREL ressemble à OQL, basé sur le calcul XML-QL représente un langage de logique XML-GL fait appel à QBE
Support de définition de fonction : supporter la définition des fonctions
XML-QL Fonctionnel
Puissance expressive : supporter tous les opérateurs algébriques relationnels (restructuration, réduction,….)
LOREL, XML-QL Facile à utiliser LOREL, XMX-QL et XML-GL
16
Fabric [COOPER 2001]
Basé sur l’algorithme PATRICIA (Practical Algorithm To Retrieve Information)
Indexer des chaînes de caractères Index subdivisé en blocs,
constituant des couches. Organisé en couches horizontales Liaison séquentielle entre couches
par deux types: Liens directs non étiquetés et liens distants étiquetés
17
Principes de PATRICIA
Liens directs
Liens distants
Exemple: casting
18
Principes de Fabric
19
Exemples pratiques
Chemin en ligne :« Trouver toutes les factures de l’acheteur ABC Corp »
Réponse: «Invoice.Buyer.Name.ABC Corp»
Chemins raffinés: « Trouver toutes les factures quand une compagnie X solde à une
compagnie Y »
Réponse: La réponse consiste à trouver une conjonction entre le vendeur <seller> et l’acheteur <buyer> correspondant à la même facture <invoice>. Si la campagnie « Acme Inc. » solde des articles à « ABC Corp » alors une clé de type « Z ABC Corp Acme Inc. » est générée
20
Ctree (Compact Tree)
Exemple de données XML organisé en d’arbre
21
CTreeArbre de document initial
Arbre de chemins ordonnés
Requête Q: /dblp/article/author, Réponse est: 4,15,18
22
Chemin sommaire et Index CTree
(b) Un index CTree pour l’arbre
(a) Un chemin ordonné sommaire
Exemple: /dblp/article[titre and year]
Les éléments 1:0 et 1:2 sont les réponses puisque les 0 et 2 sont contenus dans les groupes 2 et 4
Exemple2: /dblp/article [contains(.//author, « John ») and year > 94]/title
1. Frame (0,1,3,4,2) correspond aux noeuds de la requete: dblp,article,author, year,title
2. Prédicats: author = «John» et year > 94 • 3:0 et 3:1 correspondants aux nœuds 4, 15 • 4:0 et 4:1 correspond au nœud 5, 19
3. La conjonction des résultats retournés l’étape 2 donne 2:0 correspond au nœud 3
23
Traitement de requêtes /dblp/article [contains(.//author, « John ») and year > 94]/title
Arbre d’une requête
Algorithme de traitement de requête basée sur l’index CTree
Input : T, index avec Ctree, Q : Requête
Output : La liste des éléments dans T satisfaisant la requête
1 Le module FrameFinder commence la recherche à partir de la racine vers les feuilles pour rechercher les frames.
2 Pour chaque frame, évaluer les prédicats en utilisant l’index
3 Évaluer les contraintes et retourne le résultat
4 La liste des éléments comme sortie
24
Évaluation de la performance
Ctree prend l’avantage sur Fabric et XISS
25
Optimisation: Notions 1/3 [Yuqing 2003]
T=(VQ,ET) est un arbre Requête patron est le plus petit
arbre étiqueté, nommé Q=(VQ,EQ). L’image d’une requête patron Q
dans T est définie par la correspondance h
{ u : u Q } { x : x T } tel que:
Pour chaque nœud u Q, le prédicat du nœud étiqueté u est satisfait par h(u) dans T
Pour chaque arc (u,v) de Q, h(v) est le descendant(fils)de h(u) dans T.
26
Optimisation: Notions 2/3
Le coût d’acces à un index pour retrouver n items est donné par fI n.
Le coût de tri d’une liste de n items est de nlong fS
Le coût de jointure de A et B est donnée par : Arbre-pile ascendant : 2 |AB| fIO + 2 |A| fST
Arbre-pile descendant : 2 |A| fST
avec |A|, |B| les cardinalités des nœud A et B respectivement.
fI , fS , fIO des constantes
27
Optimisation: Notions 3/3 Ayant une requête patron Q=(VQ,EQ), un statut est un arbre S=(VS,ES), où :
VQ = {v / v NS }
NS , N’S VS NS N’S = .
U NS = VQ
NSVS
ES EQ
NS VS , u,v NS (u,v) ES. 3 types de statuts: initial S0, intermédiaire Si, final Sf
A chaque statut S est associé un coût. C’est le coût demandé pour passer du statut S0 à S.
Un mouvement M d’un statut S est un vecteur (aN,dN,Algo,St,Cost), où aN et dN sont nœuds patrons et (aN,dN) ES est l’arc à évaluer; Algo
spécifie l’opérateur physique; St est le nœud sur lequel portera l’ordre de tri; Cost est le coût estimé de la jointure (plus le coût de tri si St est spécifié).
28
Algorithme: Programmation dynamique
29
Programmation dynamique taillée
1. Pour chaque statut, calculer un cout + bacout2. Établir une liste de statuts ordonnés selon l’étape 1.3. Un sous plan sera abandonné quand sont cout dépasse celui d’un
autre qui lui similaire.4. L’exploration des sous plans se termine quand le statut final est
atteint.Statut amorti: Un statut S est amorti si les mouvements possibles
pM(S)=. Règles d’exploration: explorer les statuts dont le cout + bacout est
minimal.
Règles de taillement : Un statut S est mort si le coût de S0 à S dépasse le coût minimal du chemin menant de S0 à Sf.
Règles de prévention : En explorant un statut, le nouveau statut ne sera pas généré s’il est amorti
30
Exemple de Programmation dynamique taillée
31
Programmation dynamique avec taillement agressif
Te : paramètre d’exploration en profondeur
Heuristique: « Un bon sous plan a la chance de mener à la solution optimale ».
Formule pour un niveau n:
|E|
Te (|E| - n) n
n=0
Exemple: Te = 2, les statuts 3 et 4 ne seront pas explorés
32
Programmation dynamique avec taillement agressif
Plans à profondeur gauche
Par analogie au mode relationnel, l’exploration se fait en profondeur gauche.
Exemple: le statut 9 ne sera pas généré.
33
Conclusion XML comme nouvelle approche de représentation des données
est encore un champ fertile aux recherches selon divers aspects: langages, indexation, optimisation, …
Les langages Lorel, XML QL, XML GL de requêtes doivent : Être amélioré (même niveau ) afin de se communiquer entre eux. Constituer un langage hiérarchique similaire à ceux qui existent
pour les bases de données relationnelles objet . Les méthodes d’indexage sont basées sur le principe de
mémorisation des chemins d’accés dans des structures de données souvent sous forme d’arbre. La technique Ctree représente un moyen très puissant pour rechercher les données.
La programmation dynamique taillée et celle avec taillement agressif proposent des plans d’exécution de requêtes très efficaces.
34
Bibliographie R. Godin Note de cours, Hiver 2005. Qinghua Zou, Shorong Liu, Wesley W. Chu, Using a Compact Tree to Index and Query XML
Data, CKIM’04, ACM November 2004 Qinghua Zou, Shorong Liu, Wesley W. Chu, Ctree : A compact Tree for Indexing XML Data,
WIDM’04, ACM November 2004 Brian F. Cooper, Neal Sample, Michael J. Franklin, Gisli R. Hjaltason, Moshe Shadmon
A Fast Index for Semistructured Data, 27th VLDB Conference, 2001 Yuqing Wu, Jignesh M. Patel, H. V. Jagadish Structural Join Order Selection for
XML Query Optimisation, in Proceedings of the 19th International Conference on Data Engineering (ICDE), 2003
V. Marík, Database and expert systems applications, 2003 G. Gardarin, XML Des bases de données aux services, Dunod, 2002. A. Bonifati, S.Ceri “Comparative Analysis of Five XML Query Languages” Sigmod
Record, March 2000. Brian F. Cooper, Neal Sample, Michael J. Franklin, Gisli R. Hjaltason, Moshe Shadmon A Fast
Index for Semistructured Data, 27th VLDB Conference, 2001 WWW.XML.org http://peccatte.karefil.com/Software/RBourret/xmlBD.htm http://actu.ladoc.net/55011127/index.php3 http://www.xml.com/pub/a/2001/06/20/databases.html
35
Questions ?