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
Etudes de cas A vous de faire Bases de données DRES – B. TALON.
Advertisements

Bases de Données XML Natives
Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Projet de Base de Données Groupe Moteur encadré par Mr MAINGUENAUD KikiTeam – ASI3 – 19 / 06 / 2002 Soizic Geslin Minh Le Hoai Samy Fouilleux Maxime Chambreuil.
Les fonctions de XPath et XSLT
La base de données : le modèle relationnel.
TP 3-4 BD21.
Manipulation d’XML avec XSL
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
To Tune or not to Tune? To Tune or not to Tune? A Lightweight Physical Design Alerter Costa Jean-Denis Le Yaouanc Aurélie Mécanismes de SGBD 2007.
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Database B2 2 MIP Paris.
Présentation Struts1-JaxB
Amélioration de la sécurité des données à l'aide de SQL Server 2005
Analyse lexicale Généralités Expressions rationnelles Automates finis
Principes de persistance dans les applications orienté objet
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 instructions PHP pour l'accès à une base de données MySql
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
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
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
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.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
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
 Requêtes MySQL en PHP Introduction
Module 7 : Utilisation de requêtes élaborées
DOSSIER G10 – La base de données Relationnelle
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
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.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
Séance /10/2004 SGBD - Approches & Principes.
Complément sous-requêtes
Introduction Module 1.
De Arnault Chazareix :
PROJET DE SESSION PRÉSENTÉ PAR : Rosemarie McHugh DANS LE CADRE DU COURS : SCG Réalisation d’applications en SIG 16 avril 2007.
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.
Les sous-requêtes ou requêtes imbriquées B.T.S. S.I.O – SI3 – 1.
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

2/30 Sommaire Présentation 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/30 Sommaire Présentation du projet Étude de l'existant Notre solution Autres pistes Conclusion

4/30 Présentation du projet 1/2 Problématique initiale : « Utiliser XQuery pour interroger un ensemble de bases de données » 1 - Décomposition en sous- requêtes 2 - Exécution des sous-requêtes sur les bases respectives 3 - Concaténation des résultats Représentation de la problématique

5/30 Présentation du projet 2/2 Problématique trop volumineuse pour notre projet : Difficulté pour découper la requête XQuery en sous- requêtes Nécessité d’un schéma de traduction différent pour chacune des bases Une seule base SQL utilisée

6/30 Sommaire Présentation du projet Étude de l'existant XQuare XQueryCore SilkRoute Notre solution Autres pistes Conclusion

7/30 XQuare 1/3 XQuery Advanced Runtime Environment, un projet open-source permettant l'utilisation de XQuery avec des bases de données relationnelles Projet mis en place en 2005 par la société Odonota Site officiel :

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

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

10/30 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/30 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 :

12/30 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/30 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/30 Sommaire Présentation du projet Étude de l'existant Notre solution Hypothèses Analyseur syntaxique De AST vers SQL Retour vers le XML Autres pistes Conclusion

15/30 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/30 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/30 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/30 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/30 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/30 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/30 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/30 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/30 Cette requête Xquery : Est transformée en : De AST vers SQL 3/3

24/30 Du SQL vers le XML Utilisation de JDBC (Java DataBase Connectivity) pour :  se connecter à la base de données relationnelle,  exécuter la requête SQL Utilisation de JDOM (Java Document Object Model) pour :  créer un document XML à partir du résultat de la requête SQL

25/30 Exécution XQuery Récupération du fichier XML créé lors de l’étape précédente But : Obtenir un résultat formaté selon la requête XQuery Utilisation de la librairie Saxon pour :  Relancer la requête XQuery de départ sur le fichier XML

26/30 Sommaire Présentation du projet Étude de l'existant Notre solution Autres pistes Conclusion

27/30 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

28/30 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.

29/30 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

30/30 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