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

Utiliser XQuery pour interroger des bases SQL Présenté par : Cosquer Pierre Guillon Verne Martin El Bazi Siham Ben Othman Mohamed Malek Galech Mercado.

Présentations similaires


Présentation au sujet: "Utiliser XQuery pour interroger des bases SQL Présenté par : Cosquer Pierre Guillon Verne Martin El Bazi Siham Ben Othman Mohamed Malek Galech Mercado."— Transcription de la présentation:

1 Utiliser XQuery pour interroger des bases SQL Présenté par : Cosquer Pierre Guillon Verne Martin El Bazi Siham Ben Othman Mohamed Malek Galech Mercado Alejandro Przybylski Bastien Enseignant Responsable : Pascale Sebillot

2 Sommaire Déroulement du projet Étude de l'existant Xquare XQueryCore SilkRoute Notre solution Hypothèses Analyseur syntaxique De AST vers SQL Retour vers le XML Autres pistes Conclusion

3 Sommaire Déroulement du projet Étude de l'existant Notre solution Autres pistes Conclusion

4 Déroulement du projet 1/2 Problématique initiale : « Utiliser XQuery pour interroger un ensemble de bases de données » Décomposition en sous- problèmes. Etude de l'existant Plan de travail Représentation de la problématique

5 Déroulement du projet 2/2 La problématique est trop volumineuse pour notre projet : Très peu d'informations sur « comment » découper la requête XQuery Le souci de traduction ==> Seule une seule base SQL sera utilisée.

6 Sommaire Déroulement du projet Étude de l'existant Xquare XQueryCore SilkRoute Notre solution Autres pistes Conclusion

7 Xquare 1/3 XQuery Advanced Runtime Environment, un projet open-source permettant l'utilisation de XQuery avec des bases de données relationelles Projet peu récent (2005) mis en place par la société Odonota Site officiel : http://xquare.ow2.org/index.html

8 Xquare 2/3 Constitué de deux outils : XQuare Bridge, permettant la traduction d'une requete XQuery pour l'utiliser sur une base relationelle. XQuare Fusion, faisant la « fusion » de bases de données en un unique XML pouvant être interrogé par XQuery.

9 Xquare 3/3 Fonctionnalités de XQuare Bridge: Convertir un fichier XML en une base relationnelle via l'utilisation d'un fichier de mapping Execution directe d'une requête XQuery sur une base de donnée relationnelle ayant une architecture précise

10 XQuery Core Sous ensemble de XQuery des requêtes sous forme normale définit par le W3C. L'ensemble des expressions complètes FLOWER sont réécrites en expressions plus simples Le XQuery Core contient des redondances, necessaires pour la simplicité de lecture. Exemple en XQuery : for $i in (1, 2), $j in (3, 4) return element pair { ($i,$j) } Exemple en XQuery Core : for $i in (1, 2) return for $j in (3, 4) return element pair { ($i,$j) }

11 SilkRoute 1/3 Framework de publication de données relationnelles en XML, dont l'objectif est d'être général, sélectif et efficace. Developpé par un département de l'université de Washinhton S'appuie sur Galax, un framework XQuery, et OCaml. Site officiel : http://silkroute.sourceforge.net/.http://silkroute.sourceforge.net/

12 SilkRoute 2/3 Lors de son éxecution, SilkRoute va : Traduire la requête XQuery dans un sous ensemble de XQuery nommé XQueryCore Traduire la requête XQueryCore en une forêt Traduire la forêt en du langage SQL Produire le résultat sous la forme d'un XML

13 SilkRoute 3/3 Avantages : Performances proches des optimaux SQL Supporte pratiquement tout le XQuery v1 Inconvénients : Code source indisponible Installation compliquée Vétusté du projet

14 Sommaire Déroulement du projet Étude de l'existant Notre solution Hypothèses Analyseur syntaxique De AST vers SQL Retour vers le XML Autres pistes Conclusion

15 Hypothèses 1/2 Contraintes sur les formats : Un fichier XML = Une table SQL Les feuilles d'un fichier XML = Une colonne de la table SQL Les noeuds d'un fichier XML = l'ensemble des colonnes SQL de leurs feuilles Pas d'attributs, pas d'élements mixtes Un seul namespace

16 Hypothèses 2/2 Contraintes sur XQuery : Une seule variable pour les boucles for Les chemins XPath peuvent descendre plusieurs niveaux Les raccourcis d'écriture sont autorisés (//) Pas d'opérateur de selection XPath Opérateurs autorisés dans la partie WHERE : '=', ' ', 'and, 'or', '(', ')'

17 Analyseur syntaxique 1/4 Plusieurs outils fournissent un analyseur syntaxique : Saxon, un outil permettant d'exécuter des requêtes XQuery XQGrammar, un projet développant une syntaxe XQuery pour ANTLR (ANother Tool for Language Recognition) Un applet de test du site W3C, codé en JavaCC

18 Analyseur syntaxique 2/4 L'applet, developpé par Liam Quin, permet d'obtenir l'Arbre Syntaxique Abstrait (en anglais, AST) d'une requête XQuery. Exemple : for $client in doc("clients.xml")//clients where $client/prenom = "Robert" return $client/nom

19 Analyseur syntaxique 3/4 |START [1:0 - 3:18] | QueryList [1:0 - 3:18] | Module [1:0 - 3:18] | MainModule [1:0 - 3:18] | Prolog [1:0 - 0:0] | QueryBody [1:0 - 3:18] | Expr [1:0 - 3:18] | FLWORExpr10 [1:0 - 3:18] | ForClause [1:0 - 1:42] | VarName [2:5 - 1:11] | QName client [2:5 - 1:11] | PathExpr [2:13 - 1:42] | FunctionCall [2:13 - 1:33] | FunctionQName doc [2:13 - 1:18] | StringLiteral "clients.xml" [2:20 - 1:32] | SlashSlash // [2:34 - 1:35] | StepExpr [2:34 – 1:42] | AbbrevForwardStep [2:34 - 1:42] | NodeTest [2:34 - 1:42] | NameTest [2:34 - 1:42] | QName clients [2:34 - 1:42]

20 Analyseur syntaxique 4/4 | AbbrevForwardStep [2:34 - 1:42] | NodeTest [2:34 - 1:42] | NameTest [2:34 - 1:42] | QName clients [2:34 - 1:42] | WhereClause [2:36 - 2:31] | ComparisonExpr = [3:24 - 2:31] | PathExpr [3:1 - 2:20] | VarName [3:7 - 2:13] | QName client [3:7 - 2:13] | StepExpr [3:14 - 2:20] | AbbrevForwardStep [3:14 - 2:20] | NodeTest [3:14 - 2:20] | NameTest [3:14 - 2:20] | QName prenom [3:14 - 2:20] | StringLiteral "Robert" [3:24 - 2:31] | PathExpr [4:1 - 3:18] | VarName [4:8 - 3:14] | QName client [4:8 - 3:14] | StepExpr [4:15 – 3:18] | AbbrevForwardStep [4:15 - 3:18] | NodeTest [4:15 - 3:18] | NameTest [4:15 - 3:18] | QName nom [4:15 - 3:18]

21 De AST vers SQL 1/3 Necessité de traduire chaque concept XQuery en SQL → Utilisation d'une table de hachage. Une table de hachage comporte les entités XML (clés) et leur équivalent en Sql (valeurs). Une autre lie les variables Xquery à des alias SQL

22 De AST vers SQL 2/3 La requête SQL est générée en 3 parties : Entre ''select'' et ''from' Les colonnes à sélectionner se trouvent : Dans la variable XQuery Dans le chemin du ''return'' Création des alias SQL à partir des variables Xquery Entre ''from'' et ''where'' Sélectionner la table de la variable XQuery Imbriquer d'autres requêtes SQL recursivement (une par boucle ''for'') Après ''where'' Seulement pour la requête SQL englobante Concatène toutes les parties ''where'' XQuery des boucles ''for''

23 Cette requête Xquery : Est transformée en : De AST vers SQL 3/3

24 Retour vers le XML Utilisation de JDOM (Java Document Object Model), pour créer un document XML. Creation d'un squelette XML « vide » devant servir de réponse à la requête XQuery. Ajout des informations obtenues après interrogation de la base SQL dans le squelette.

25 Sommaire Déroulement du projet Étude de l'existant Notre solution Autres pistes Conclusion

26 Autres pistes 1/2 Utilisation de CAML : Sur le même principe que SilkRoute, utiliser Caml et Galax pour écrire un algorithme de traduction d'AST. Utilisation de Prolog : Utiliser des prédicats de mapping entre schéma XQuery et SQL Utiliser des prédicats pour traduction de nœuds XQuery en nœuds SQL

27 Autres pistes 2/2 La première catégorie de prédicats retranscrit les chemins XPath. Ex : correspondance([doc("clients.xml")|[\_|client]], "client") La second catégorie traduisent récursivement tout l'AST.

28 Conclusion Sur le déroulement de projet : Savoir réduire ses ambitions face à des contraintes Évaluer, réévaluer les besoins requis par chaque phase du projet Diviser la problématique Analyser l'existant

29 Conclusion Sur le résultat de notre projet : Notre projet traduit une requête XQuery en AST, puis en SQL et rends son résultat en XML Les boucles ''for'' imbriquées sont compatibles Compatibilité avec plusieurs tables dans une même base de données


Télécharger ppt "Utiliser XQuery pour interroger des bases SQL Présenté par : Cosquer Pierre Guillon Verne Martin El Bazi Siham Ben Othman Mohamed Malek Galech Mercado."

Présentations similaires


Annonces Google