UNIVERSITÉ DU QUÉBEC À MONTRÉAL
XML et Bases de Données
Présenté par :
Ramdane Guenineche
Nabila Rahmoune
Miloud Benotmane
INF 7115 Bases de données - Session d’Hiver 2005.
Sommaire

Introduction

Analyse comparative de trois langages de requêtes.

Techniques d’indexation

Techniques d’optimisation

Conclusion
2
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
3
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.
4
Langages de requêtes
LOREL ( Lightweight Object Repository Language )
• Extension de OQL
• Basé sur l’expression de chemin simple
XML QL ( XML Query Language )
XML GL ( XML Graphical Language )
• Extension de SQL
• Langage graphique
• Arête marquée avec l’étiquette identificateur de • Basé sur le marquage du graphe XML
l’élément
• Chaque graphe est distingué par une racine
5
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
6
Exemple comparatif
Manufacturer
……
YEAR
MN.NAME
<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>
Model
MERCURY
1999
Front-rating Side-rating
Sable LT
3.84
2.14
9
7
Sélection et extraction
Sélectionner et extraire de <manufacturer> les <model> ayant <rank> <=10.
LOREL
select M
from nhsc.manufacturer M
where M.model.rank <=10
XML-GL
www.nhsc\manufacturers.xml
Manufacturer
Manufacturer
XML-QL
*
WHERE <manufacturer>
<model>
<rank>$r</rank>
</model>
</manufacturer> ELEMENT_AS $m IN
www.nhsc\manufacturers.xml,
$r<=10
CONSTRUCT $m
Model
RANK
<= 10
8
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.
LOREL
select Z.mn_name, Z.year,
(select Z.model.mo_name, Z.model.rank
where Z.model.rank <= 10)
from nhsc.manufacturer Z
XML-QL
WHERE <manufacturer>
<mn_name>$mn</mn_name>
<year>$y</year>
</manufacturer> CONTENT_AS $m IN
www.nhsc\manufacturers.xml
CONSTRUCT
<manufacturer>
<mn_name>$mn</mn_name>
<year>$y</year>
{ WHERE <model>
<mo_name>$mon</mo_name>
<rank>$r</rank>
</model> IN $m,
$r<=10
CONSTRUCT<model>
<mo_name>$mon</mo_name>
<rank>$r</rank>
</model>
}
</manufacturer>
9
Réduction (suite)
XML-GL
Manufacturer
YEAR
Manufacturer
MN-NAME
Manufacturer
YEAR
Manufacturer
Model
Model
Model
RANK
MO-NAME
RANK
<= 10
10
Jointure
XML QL
Génerer les paires d’éléments
< manufacturer > et < vehicle > ou
<mn-name > =<make>,<mo-name >
= < model > et < year > = < year >.
LOREL
temp:= select (M,V) as pair from
hsc.manufacturer M, nhs.vehicle V
where M.mn_name = V. make and
M.model.mo_name = V.model
and 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 IN
www.nhsc\manufacturers.xml
<vehicle>
<model>$mon</model>
<year>$y</year>
<make>$mn</make>
</vehicle> CONTENT_AS $v IN www.nhsc\vehicles.xml
CONSTRUCT
<manufacturer>
<mn_name>$mn</mn_name>
<year>$y</year>
<vehiclemodel>
$mo,$v
</vehiclemodel>
</manufacturer>
11
Jointure (suite)
XML-GL
Manufacturer
www.nhsc\vehicles.xml
Manufacturer
Vehicle
MN-NAME
Model
YEAR
www.nhsc\manufacturers.xml
VehicleModel
Model
Vehicle
*
*
12
Restructuration
XML-QL
Collecter les éléments <car> et lister
leur make,model,vendor,rank et prix dans
cet ordre
LOREL
select xml(car: (select X.vehicle.make,
X.vehicle.model,
X.vehicle.vendor, X.manufacturer.rank,
X.vehicle.price
from 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.xml
CONSTRUCT
<car>
<make>$mn</make>
<mo_name>$mon</mo_name>
<vendor>$v</vendor>
<rank>$r</rank>
<price>$p</price>
</car>
13
Restructuration(suite)
XML-GL
www.nhsc\vehicles.xml
Manufacturer
PRICE
CAR
PRICE
VENDOR
VENDOR
Vehicle
MODEL
www.nhsc\manufacturers.xml
Model
14
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
15
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
16
Principes de PATRICIA
Exemple: casting
Liens
distants
Liens
directs
17
Principes de Fabric
18
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
19
Ctree (Compact Tree)
Exemple de données XML organisé en d’arbre
20
CTree
Arbre de
document
initial
Arbre de
chemins
ordonnés
Requête Q: /dblp/article/author, Réponse est: 4,15,18
21
Chemin sommaire et Index CTree
(a) Un
chemin
ordonné
sommaire
Exemple: /dblp/article[titre
and year]
Exemple2:
/dblp/article [contains(.//author,
« John »)
year > 94]/title
Lesand
éléments
1:0 et 1:2 sont les réponses
1.puisque
Frameles
(0,1,3,4,2)
correspond
noeuds
0 et 2 sont
contenusaux
dans
les de la
requete:
year,title
groupes
2 etdblp,article,author,
4
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
(b) Un index CTree pour l’arbre
22
Traitement de requêtes

/dblp/article [contains(.//author, « John ») and year > 94]/title
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
Arbre d’une requête
4 La liste des éléments comme sortie
23
Évaluation de la performance
Ctree prend
l’avantage sur
Fabric et XISS
24
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.
25
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
26
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
NSVS
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é).
27
Algorithme: Programmation dynamique
28
Programmation dynamique taillée
Pour chaque statut, calculer un cout + bacout
2.
É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
1.
29
Exemple de Programmation dynamique taillée
30
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|
 T  (|E| - n)  n
e
n=0
Exemple: Te = 2, les statuts 3 et 4 ne seront pas explorés
31
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é.
32
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.
33
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
th
Query Optimisation, in Proceedings of the 19 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
34
Questions
?
35
Descargar

Services d’annuaires