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

Slides:



Advertisements
Présentations similaires
REFERENTIEL DE LA SERIE STG
Advertisements

Etudes de cas A vous de faire Bases de données DRES – B. TALON.
C#3 et le projet Linq Mitsuru FURUTA
Bases de Données XML Natives
1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Les fonctions de XPath et XSLT
La base de données : le modèle relationnel.
TP 3-4 BD21.
Manipulation d’XML avec XSL
Projet 4info.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Création d’un langage d’action pour un logiciel MDA
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Database B2 2 MIP Paris.
Analyse lexicale Généralités Expressions rationnelles Automates finis
Geti2101 : Systèmes d’Information et Informatique
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Chap 4 Les bases de données et le modèle relationnel
Les requêtes Les requêtes permettent dinterroger une base de données suivant 3 opérateurs : La projection Affiche le contenu dun champ complet En langage.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
Modèle Logique de Données
Xpath XML Path language par Yves Bekkers
XSLT Langage de transformation darbre par Yves Bekkers.
Intégration ActiveXML - Xyleme
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Les concepts et les méthodes des bases de données
Description de documents XML multistructurés au moyen de nœuds retards Jacques Le Maitre LSIS Université du Sud Toulon-Var.
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
1 Couplage dun langage de contrôle de formatage avec un système de formatage existant DEA ISC : 1 avril 2003 Fateh Boulmaiz
Retour dexpérience Supportech INSA.NET Daniel Boteanu – Michaël Piffret.
PHP & My SQL.
Linq & les expressions lambda. L Language In Integrated Q Query.
Présentation de la nouvelle version CustomerFirst (v5.0 G02.3)
Access Les requêtes Table médias Table (*) Requêtes simples.
Supports de formation au SQ Unifié
Créer des packages.
Optimisation de requêtes
Gestion de documents XML hétérogènes
Arbres binaires et tables de hachage
 Syntaxe du langage PHP
Module 7 : Utilisation de requêtes élaborées
DOSSIER G10 – La base de données Relationnelle
Initiation à la conception des systèmes d'informations
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Par : Baltagi Bilal Alves Mickael
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Sélection de colonnes (la projection)
Présentation AICHA REVEL INGENIEUR D’ÉTUDE STERIA DEPARTEMENT TRD
XML fortement adopté en tant que format indépendant d’échange de données. Utilisation de XML pour la modélisation de données structurées et non structurées.
Jean Paul CHANLON IUT1 Grenoble Génie Mécanique et Productique
 Formulaires HTML : traiter les entrées utilisateur
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
Les bases de données Séance 8 Jointures.
Séance /10/2004 SGBD - Approches & Principes.
Introduction aux Bases de Données et au langage SQL
Complément sous-requêtes
Introduction Module 1.
XSLT. Les documents XML peuvent avoir dans leur prologue une instruction de traitement xml-stylesheet. Cette instruction de traitement indique au navigateur.
19 avril Spécification d’un cadre d’ingénierie pour les réseaux d’organisations Laboratoire de recherche : OMSI à l’EMSE.
Schéma de base de données Présentation. Conception du schéma logique  Transformation du schéma conceptuel en structures de données supportées par les.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
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:

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

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

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

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

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.

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

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 :

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.

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

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) }

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 :

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

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

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

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

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', '(', ')'

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

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

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]

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]

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

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''

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

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.

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

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

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.

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

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