UNIVERSIT DU QUBEC MONTRAL XML et Bases de
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 n Introduction n Analyse comparative de trois langages de requêtes. n Techniques d’indexation n Techniques d’optimisation n Conclusion 2
Introduction n n n 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 W 3 C. 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 q 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 q Expressions chemin - LOREL - XML-QL - XML-GL Partiellement 6
Exemple comparatif Manufacturer …… YEAR MN. NAME Model MERCURY 1999 - RAN MO K N A ME <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> 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. nhscmanufacturers. xml Manufacturer XML-QL * WHERE <manufacturer> <model> <rank>$r</rank> </model> </manufacturer> ELEMENT_AS $m IN www. nhscmanufacturers. 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. nhscmanufacturers. 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 YEAR MN-NA Manufacturer MN-NAME Manufacturer YEAR Manufacturer ME Manufacturer 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. nhscmanufacturers. xml <vehicle> <model>$mon</model> <year>$y</year> <make>$mn</make> </vehicle> CONTENT_AS $v IN www. nhscvehicles. xml CONSTRUCT <manufacturer> <mn_name>$mn</mn_name> <year>$y</year> <vehiclemodel> $mo, $v </vehiclemodel> </manufacturer> 11
Jointure (suite) XML-GL www. nhscvehicles. xml www. nhscmanufacturers. xml YE R M EL MO D Vehicle. Model Vehicle * M O- YEAR AK E MN-NAME E AM -N MN Model Manufacturer Vehicle YEA AR Manufacturer NA * M E 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> <mo_name>$mon</mo_name> <rank>$r</rank> </model> <vehicle> <price>$y</price> <vendor>$mn</vendor> </vehiclemodel> </manufacturer> IN www. nhscqueryresult 3. 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. nhscvehicles. xml www. nhscmanufacturers. xml YE R Vehicle YEA RA VENDOR MODE L PRICE VENDOR MODEL NK MAKE AR Manufacturer PRICE CAR Model RA NK M O- NA M E 14
Qualités q Déclaratif : contenu du résultat défini par la requête n LOREL ressemble à OQL, basé sur le calcul XML-QL représente un langage de logique XML-GL fait appel à QBE q Support de définition de fonction : supporter la définition n n n des fonctions XML-QL Fonctionnel q Puissance expressive : supporter tous les opérateurs algébriques n relationnels (restructuration, réduction, …. ) LOREL, XML-QL q Facile à utiliser n LOREL, XMX-QL et XML-GL 15
Fabric [COOPER 2001] n n n 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 q Chemin en ligne : « Trouver toutes les factures de l’acheteur ABC Corp » Réponse: «Invoice. Buyer. Name. ABC Corp» q 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] Exemple 2: /dblp/article [contains(. //author, « John » ) and year > 94]/title Les éléments 1: 0 et 1: 2 sont les réponses 1. puisque les 0 et 2 sont contenus dans les Frame (0, 1, 3, 4, 2) correspond aux noeuds de la requete: dblp, article, author, year, title groupes 2 et 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 n /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 Frame. Finder commence la recherche à partir de la racine vers les feuilles pour recher 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: q q 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 f. I n. Le coût de tri d’une liste de n items est de nlong f. S Le coût de jointure de A et B est donnée par : Arbre-pile ascendant : 2 |AB| f. IO + 2 |A| f. ST q Arbre-pile descendant : 2 |A| f. ST q avec |A|, |B| les cardinalités des nœud A et B respectivement. f. I , f. S , f. IO des constantes 26
Optimisation: Notions 3/3 ü Ayant une requête patron Q=(VQ, EQ), un statut est un arbre S=(VS, ES), où : q VQ = {v / v NS } NS , N’S VS N’S = . U NS = VQ NS VS ES EQ q NS VS , u, v NS (u, v) ES. q q q ü ü ü 3 types de statuts: initial S 0, intermédiaire Si, final Sf A chaque statut S est associé un coût. C’est le coût demandé pour passer du statut S 0 à S. Un mouvement M d’un statut S est un vecteur (a. N, d. N, Algo, St, Cost), où a. N et d. N sont nœuds patrons et (a. N, d. N) 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 p. M(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 S 0 à S dépasse le coût minimal du chemin menant de S 0 à 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 n n n 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 31
Programmation dynamique avec taillement agressif Plans à profondeur gauche n Par analogie au mode relationnel, l’exploration se fait en profondeur gauche. n Exemple: le statut 9 ne sera pas généré. 32
Conclusion n n 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 : q q n n Ê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 recher 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 n n n n 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, 27 th 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, 27 th VLDB Conference, 2001 WWW. XML. org http: //peccatte. karefil. com/Software/RBourret/xml. BD. htm http: //actu. ladoc. net/55011127/index. php 3 http: //www. xml. com/pub/a/2001/06/20/databases. html 34
Questions ? 35
- Slides: 35