La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "XML 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."— Transcription de la présentation:

1 XML 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

2 III.2 1. 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

3 III.3 XML 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

4 III.4 Limites 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

5 III.5 Exemple de documents Le Grand Hôtel Promenade M. Proust Cabourg Dupont Plat du jour L'Absinthe 10 quai Quarantaine Honfleur 0231893900 Dupont Durand Fruits de Mer Introduction

6 III.6 2. 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é

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

8 III.8 Diagramme XML Spy Modèle semi-structuré

9 III.9 Et 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é d’inférer des types à partir des valeurs Modèle semi-structuré

10 III.10 Bilan 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é

11 III.11 3. Langage de requêtes Langages de requêtes ???XML OQLObjet SQL: SELECT …Relationnel DML CODASYLRéseau DML DL1Hiérarchique LANGAGE REQUETESMODELE

12 III.12 Qu’est ce que XQuery ? XQuery est le langage de requêtes pour XML défini et standardisé par le W3C XQuery s’impose comme le langage de requêtes: Pour les bases de données XML natives Pour les documents XML textuels (XQuery Text)‏ Pour l’intégration de données (bases de données virtuelles)‏ Le besoin d’interroger les bases relationnelles en XQuery existe Pour l’intégration et la publication de données Compétition avec les extensions de SQL (SQL/XML)‏ Langages de requêtes

13 III.13 Objectifs Types XML Schema XPath 2 Puissance de SQL Structure d'arbres Recherche d'information Langage fonctionnel Langages de requêtes

14 III.14 La base Proposé par IBM, MS, AT&T, Data Direct,... Langage fonctionnel type CAML Forme de requête élémentaire FOR $ in [, $ in ]+ //itération LET $ := // assignation WHERE // élagage RETURN // 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

15 III.15 Exemple 1 : XPath (Q1) Noms de tous les restaurants : collection(“Restaurants”)/Restaurant/Nom/text()‏ collection(“Restaurants”)/Restaurant/Nom Langages de requêtes

16 III.16 Exemple 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”)/Restaurant[1]/Menu/@Nom Langages de requêtes

17 III.17 Exemple 4 : Sélection Lister le nom des restaurants de Cabourg: collection(“Restaurants”)/Restaurant [Adresse/Ville= “Cabourg"] /Nom {for $R in collection("Restaurants")/Restaurant where $R/Adresse/Ville = “Cabourg” return {$R/Nom}} Langages de requêtes

18 III.18 Exemple 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 {$R/Nom} {$R/Téléphone} Langages de requêtes

19 III.19 Exemple 6 : Restructuration d'arbre Construire une liste de restaurants par Ville for $c in distinct(collection(“Restaurants”)/Restaurant//Ville)‏ return {$c} {for $r in collection(“Restaurants”)/Restaurant where $r//Ville = $c return {$r}} Langages de requêtes

20 III.20 Exemple 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”)/Restaurant where $r/@categorie = "***"$r/@categorie return {$r/Adresse/Ville/text()} return {$h/Adresse} Langages de requêtes

21 III.21 Syntaxe 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::=“=” | “!=” | “ ” | “>=” Expr::=“$”VarName/XPath ReturnClause::=“return” XMLElement* XMLElement ::= “ ”XMLElement“ ”| “{” 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

22 III.22 Exemple 8 : Agrégat simple Combien de restaurants y-a-t-il en collection ? let $R := collection(“Restaurants”)/Restaurant return {count ($R)} Langages de requêtes

23 III.23 Exemple 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/@Prix return {$r/Nom} {AVG($a)} Langages de requêtes

24 III.24 Exemple 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

25 III.25 Exemple 11 : Ordre et désordre Lister les bons restaurants de Paris par ordre alphabétique for $r in unordered(collection(“Restaurants”)//Restaurant)‏ 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

26 III.26 Exemple 12 : Multi-requêtes Construire un document avec en-tête, titre, liste restaurants peu chers, titre, liste restaurants chers List of very expensive restaurants {for $r in collection("Restaurants”)//Restaurant where every $p in $r/Menu/@Prix satisfies ($p>100)‏$r/Menu/@Prix return {$r}} List of very inexpensive restaurants {for $r in collection(“Restaurants”)//Restaurant where some $p in $r/Menu/@Prix satisfies ($p<10)‏$r/Menu/@Prix return {$r}} {date()} Langages de requêtes

27 III.27 Exemple 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 { $b/title } { $e } Langages de requêtes

28 III.28 Fonctionnalité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

29 III.29 Bilan 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

30 III.30 4. 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

31 III.31 4.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. Forêts d'arbres Stockage XML Recherche XML RequêteXML Index Noyau SGBD Concurrence, Fiabilité SGBDX

32 III.32 Indexation 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ément+offset)‏ SGBDX

33 III.33 Principaux produits De multiples start-up Software A.G. Tamino http://www.softwareag.com/http://www.softwareag.com/ X-Hive/Db http://www.x-hive.com/http://www.x-hive.com/ Coherity http://www.coherity.com/http://www.coherity.com/ IXIA soft http://www.ixiasoft.com/http://www.ixiasoft.com/ XML Global http://www.xmlglobal.com/http://www.xmlglobal.com/ NeoCorehttp://www.neocore.com/http://www.neocore.com/ Xylemehttp://www.xyleme.com/http://www.xyleme.com/ Existhttp://exist.sourceforge.net/http://exist.sourceforge.net/ Intégration comme type spécialisé à SGBD OR DB2 XML Extender, Oracle XML DB, SQL Server 2005 SGBDX

34 III.34 Xyleme 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

35 III.35 Xyleme Functionnalities SGBDX

36 III.36 Xyleme: 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 d’arbre Pages de taille fixe classique Enregistrements de taille variable à l’intérieur Equilibrage des arbres par éclatement de pages SGBDX

37 III.37 Xyleme: Architecture Physique Global Query Manager Local Query Manager Loader/Indexer Repository Context XyIndex Local Query Manager Loader/Indexer Repository Context XyIndex xyIndex XyQuery SGBDX

38 III.38 Xyleme: 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

39 III.39 Xyleme 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é d’enrichir la requête via un thésaurus avant la recherche en index SGBDX

40 III.40 4.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 SQL SGBD Tables de lignes Stockage XML Recherche XML XQueryXML Index SGBDX

41 III.41 Exemple de Mapping Restaurant(#R, Nom, Tel) Adresse(#R,N°, Rue, Ville) Manager(#R, Nom)‏ SGBDX

42 III.42 SQL/XML Intégration de fonctionnalités XQuery à SQL Support à la SQL3 Type de donnée natif XML Type (colonnes XML)‏ Fonctions d’extraction 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/@id) > 200; Intégré à Oracle et DB2 SGBDX

43 III.43 Fonctions SQL/XML FonctionRôle XMLAggprend en argument une collection de fragments et retourne un document XML agrégé ; XMLConcatreçoit en argument une série d’instances XMLType correspondant aux valeurs d’une colonne pour les lignes d’une table et retourne les instances concaténées ; XMLElementprend en argument un nom d’élément, une collection d’attributs optionnels, un contenu d’élément et retourne une instance XMLType ; XMLForestconvertit la suite de ses argument en XML et retourne un fragment XML concaténation des arguments convertis ; XMLColAttValconverti une valeur de colonne en XML ; XMLSequencetransforme une suite de lignes référencées par un curseur en séquence XML ; XMLTransformapplique une feuille de style XSL à une instance XMLType et retourne une instance XMLType ; ExtractValue.reçoit en argument une instance XMLType et une expression XPath et retourne la valeur scalaire des nœuds sélectionnés ExtractXMLreçoit en argument une instance XMLType et une expression XPath et retourne une instance XML représentant les nœuds sélectionnés. SGBDX

44 III.44 Oracle 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

45 III.45 Microsoft: 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 SQLServer RowSet SQL XMLFiles XPathXQuery XML XMLView SGBDX

46 III.46 XQuare 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 SGBD Extractor Mapper JDBC BD relationnelle Scripts XQuery API XML/DBC Règles de Mapping API SAX2 SGBDR SGBDX

47 III.47 Natif versus XORDBMS Points forts XOR pas de nouveau SGBD possibilité de normaliser les données possibilité de stocker comme valeur d’attribut 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

48 III.48 5. 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

49 III.49 Ré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.)‏

50 Implémentation XQuery Introduction Algèbre XML Génération des plans

51 III.51 1. 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

52 III.52 Techniques de base Parser Normalisation Génération Optimizer XQuery Run Time Machine Query Plan Analyse de la requête Mise en forme normale Transformation et simplification Génération d'un plan d'exécution Optimisation Machine d'exécution de l'algèbre Transformation

53 III.53 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 Gardarin Federating heterogeneous data sources with xml, IKS 2003

54 III.54 XAlgèbre Proposée et implémentée pour un médiateur XQuare XLive à l’UVSQ 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.

55 III.55 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. NULLVillarealMartinPalermo Coupe d’Italie NULLAdrianMutu Ligue des champions, Championnat d’Italie FC JuventusAllessandroDel Piero PalmarèsClubPrénomNom

56 III.56 XTuples : représentation Un XTuple est composé de un ensemble d’arbre 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 b A C a c e d B f E g h i D F j a/b a/cf/h/if b G I a c e d H f K g h i J L j AR

57 III.57 Les XOpérateurs Xsource (‘PLAYERS’)‏ XOrderBy Relation Étudiée Dans son intégralité avant de retourner un XTuple Opérateurs étendus du relationnel adapté aux données semi- structurées. Ils opèrent sur les XRelations (composées de XTuples)‏ Full-pipeline XConstruct XRestrict XProject Xunion XProduct XJoinSimple XSource XMin XMax XOrderBy Xsource (‘STADIUM’)‏ XJoinHash Hashage de la relation 1 Puis jointure XTuple par XTuple Xsource (« STADIUM »)‏ U XUnion 1° relation, Puis 2° Non-bloquant Bloquant Semi-pipeline XJoinHash XJoinMultiHash XIntersection

58 III.58 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 abc XSource XProjection bcabc

59 III.59 Filtrage XRestriction destruction de lignes complètes ordre préservé non bloquant XRestriction abcabc

60 III.60 Union XUnion ordre préservé en mode bloquant, non préservé sinon bloquant ou non suivant paramétrage abc XUnion abc abc

61 III.61 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 XJointure abc def abc de

62 III.62 Algèbre XML : Imbrication Opérations d’imbrication 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)‏

63 III.63 Algèbre XML: Valeurs nulles Nul en XML à deux aspects Élément vide 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 l’algèbre Les restrictions peuvent éliminer les nuls Les jointures sont des (left/right) outer join si le résultat n’est pas soumis à condition

64 III.64 Annotation 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 A 0 = optional, A 1 = mandatory A* = nested optional, A + = nested mandatory Les attributes peuvent être la base d’un groupe d’imbrication (A, B)‏ Exemple ($r/nom1),$r/region0, $r/offer/menus/menu*

65 III.65 XAlgebra: Vue d’ensemble 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

66 III.66 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

67 III.67 3. Techniques de Représentation 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 Variante : TGV (N. Travers)‏

68 III.68 TPQ (Tree Pattern Query)‏ TPQ = arbre modélisant une requête. Il est destiné à être « mappé » sur l’arborescence du document XML cible $a $c$b $d $f $e $g Arbre T1 Arbre T2 ancêtre parent : relation ancêtre-descendant: relation père-fils

69 III.69 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.

70 III.70 GTP - Exemple FOR $p IN document(“auction.xml”)//person, $l IN $p/profile WHERE $l/age > 25 AND $p//state != ‘MI’ RETURN {$p//watches/watch} {$l/interest} $p $l$s $g $w $t$i (0)‏ (1)‏ (2)‏ $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’ Numéro de groupe (par convention le groupe 0 inclut l’élément root)‏ Relation optionnelle

71 III.71 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.

72 III.72 Pattern match : Exemple people person address state watches watch profile age watch address state profile ageinterestcity Résultat = H1: $p->2, $s->4, $l->9, $g->10, $w->6, $t->7 “s1” “30”“s2”“28” $p $l $s $g $w $t$i (0)‏ (1)‏ (2)‏ 1 2 9 87 6 54 3 10 11 1314 1512 1716 GTP XML On mappe le GTP sur l’arborescence XML

73 III.73 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

74 III.74 GTP Universel : Exemple FOR $o IN document(“auction.xml“)‏ WHERE EVERY $b in $o/bidder SATISFIES $b/increase>100 RETURN {$o} (0) $o (1) $b (2) $i 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)‏

75 III.75 GTP Requête imbriquée FOR $p IN document(“auction.xml”)//person LET $a := FOR $t IN document(“auction.xml”)//closed_auction WHERE $p/@id = $t/buyer/@person RETURN {FOR $t2 IN document(“auction.xml”)//europe/item WHERE $t/itemref/@item = $t2/@id RETURN {$t2/name}} WHERE $p//age > 25 RETURN {$a} → Récupère le nom et les items achetés en europe, par toutes les personnes agées de plus de 25 ans.

76 III.76 $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 $p $n1$g $t $b$i$t2 $e $n2 (0)‏ (2)‏ (1.0)‏ (1.1.0)‏ (1.1.1)‏ (1.1.0)‏ GTP Requête imbriquée (2)‏

77 III.77 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.

78 III.78 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

79 III.79 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.

80 III.80 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.

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

82 III.82 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 GG S SJ OSJ S S watches/watch profile/interest person, profile F : filter IS : tag index scan SSJ : structural semi-join SJ : strcutural join OSJ : outer structural join S : sort M : merge

83 III.83 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

84 III.84 Élimination des nœuds « internes » a//b//c  a//c $a $c $b $a $c Seulement si le schéma spécifie que tout chemin de a à c passe par un élément b

85 III.85 Deux nœud pour le même élément XML FOR $b IN …//book WHERE $b/title = ‘Germinal’ RETURN {$b/title} {$b/year} $b $t2$t$y $b $t$y Seulement si le schéma spécifie que tout livre ne possède qu’un titre !

86 III.86 Éliminer les nœuds inutiles FOR $a IN …./a[b] RETURN {$a/c} $a $c$b $a $c Seulement si le schéma spécifie que tout élément a possède au moins un sous-élément b !

87 III.87 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

88 III.88 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

89 III.89 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


Télécharger ppt "XML 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."

Présentations similaires


Annonces Google