XML et bases de données.

Slides:



Advertisements
Présentations similaires
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Advertisements

LES NOMBRES PREMIERS ET COMPOSÉS
[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Vocabulaire 6.2 Français II Bon voyage ! 1.
Page 1 Retour sur le e- tourisme. Page 2 Quelques chiffres…
Distance inter-locuteur
Le pluriel des noms
Évaluation des requêtes relationnelles
Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Les numéros
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Le Modèle Logique de Données
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
TP 3-4 BD21.
Optimisation de Requêtes
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Manipulation d’XML avec XSL
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES COHESION CULTURELLE ET EXPANSION DES IDEES SUR LE TERRITOIRE EUROPEEN.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
-17 Anticipations économiques en Europe Septembre 2013 Indicateur > +20 Indicateur 0 a +20 Indicateur 0 a -20 Indicateur < -20 Union européenne total:
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
20 Données semi-structurées et XML
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.
Développement d’applications web
XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple
XML et les Bases de Données
Interagir avec un objet mixte Propriétés physiques et numériques Céline Coutrix, Laurence Nigay Équipe Ingénierie de lInteraction Homme-Machine (IIHM)
Contrôles d'accès aux données
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Matrice denquête pour observer la configuration des textes de lecteurs de poésie.
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Le Concours de Conaissance Francais I novembre 2012.
Titre : Implémentation des éléments finis sous Matlab
L’utilisation des bases de données
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
VOC 1 CE2 Je sais utiliser des mots de la vie quotidienne.
1 INETOP
Xpath XML Path language par Yves Bekkers
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Cours N°2 Base de Données & Langage SQL
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Notre calendrier français MARS 2014
C'est pour bientôt.....
Les Nombres 0 – 100 en français.
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
CALENDRIER-PLAYBOY 2020.
BD XML 1. Introduction 2. XML : Modèle de données
LES PILES ET FILES.
Les Chiffres Prêts?
Les parties du corps By Haru Mehra Le Frehindi 1Haru Mehra, DELF, DALF,CFP.
Optimisation de requêtes
Transcription de la présentation:

XML et bases de données

Bilan Modèle relationnel Modèle simple, puissant avec des fondements théoriques bien connus Modèle figé Importance du schéma de BD Utilisé pour le stockage efficace, la définition et l’optimisation de langage de requêtes, la cohérence, … Tout doit rentrer dans ce moule

Modèle des Fichiers Information pas ou peu structurée Structure est implicite et tolérante Pas de schéma des données Pas de langage de requêtes, pas d’optimisation, de cohérence Beaucoup de souplesse

Modèles de données semi-structurés Intermédiaire entre modèle relationnel (BD) et modèle de fichier Présence d’un schéma mais souple Possibilité de langages de requêtes Différentes propositions Modèle OEM XML

XML et BD relationnelles SQL XSLT, XPATH, XQUERY Modèle relationnel Modèle XPATH JDBC/ODBC/SQL-CLI DOM et SAX API Bases de données relationnelles Document XML

Introduction Modèle de données et langages de requêtes XML Publication XML de données relationnelles Stockage de documents XML

Langages de requêtes XML

Langages de requêtes XML XPATH (1.0 puis 2.0) langage commun de navigation, sélection, extraction Utilisé dans XSLT, XQUERY, XPOINTER, … XSLT 2.0 : XML vers XML, HTML, texte Langage à typage faible, orienté transformation XQUERY 1.0 : XML vers XML Langage fonctionnel à typage fort (entrées et sorties) Orienté accès BD

Langages de requêtes XPATH 2.0 = XPATH 1.0 + Typage XML schema Séquences ordonnées de nœuds typés et de valeurs atomiques For VAR in EXPR return EXPR Expression conditionnelles If EXPR then EXPR else EXPR Expressions quantifiées Some | every VAR in EXPR satisfies EXPR

Langages de requêtes XQUERY 1.0 = XPATH 2.0 + For-let-where-return (FLWR) : SQL like Sort-by Construction de XML Opérateurs sur les types Fonctions définies par le programmeur Typage fort (statique ou dynamique)

BD Guide (1) GuideExotique : <?xml version="1.0"  encoding="ISO-8859-1" ?> <Guide region="exotique" version="2.0"> <Restaurant type="indhou" categorie="**"> <Nom>Le passage Brady</Nom> <Adresse> <No>43</No><Rue>Faubourg Saint-Denis</Rue><Ville>Paris 10</Ville> </Adresse> <Telephone>0142112310</Telephone> </Restaurant> <Restaurant type="thibetain" categorie="**"> <Nom>Le Lhassa</Nom> <Adresse> <No>13</No><Rue>Montagne Sainte-Genevieve</Rue><Ville>Paris 5</Ville> <Telephone>0144122112</Telephone><Manager>Dicky</Manager> <Epicerie type="egyptienne"> <Nom>Le Caire</Nom> <Telephone>0146134582</Telephone><Manager>Ali Moussa</Manager> <Specialité>falavel</Specialite> </Epicerie> </Guide>

BD Guide (2) GuideNormand: <?xml version="1.0"  encoding="ISO-8859-1" ?> <Guide region="normandie" version="2.0"> <Restaurant type="francais" categorie="***"> <Nom>Le Grand Hotel</Nom> <Adresse> <Rue>Promenade M. Proust</Rue><Ville>Cabourg</Ville> </Adresse> <Prix menu="midi">200</Prix> <Prix menu="soir">300</Prix> </Restaurant> <Restaurant type="francais" categorie="**"> <Nom>L’absinthe</Nom> <Adresse> <No>10</No><Rue>Quai Quarantaine</Rue><Ville>Honfleur</Ville> <Prix menu="midi">150</Prix> <Prix menu="soir">250</Prix> <Telephone>0234142189</Telephone> <Specialité>Fruits de Mer</Specialite> </Guide>

BD Guide (3) BD XML = forêt de documents XML Schéma de BD = Schéma XML si existant Guide de données : Schéma faible généré à partir d’un ensemble de documents par union des arbres de structure décrivant tous les cheminements possibles dans la collection et par typage des données en texte Schéma plus flexible que schéma relationnel

Guide de données de Guide Nom No Restaurant X Adresse X Rue Code Ville Telephone Guide X Prix Nom 0,2 Manager Manager Telephone Epicerie X Specialite

BD Répertoire (1) <?xml version="1.0" encoding="ISO-8859-1" ?> <Repertoire> <Hotel categorie="***"> <Nom>California</Nom> <Adresse><Num>32</Num> <Rue>Rue des Ecoles</Rue><Code>75005</Code><Ville>Paris</Ville> </Adresse> <Commentaire>Charmant hotel pres du centre</Commentaire><Prix>150</Prix> </Hotel> <Hotel categorie="****"> <Nom>Napoleon</Nom> <Adresse><No>40</No> <Rue>Avenue de Friedland</Rue><Code>75008</Code><Ville>Paris</Ville> <Commentaire>Hotel Art Deco</Commentaire><Prix >500</Prix> <Nom>Le Saint Simon</Nom> <Adresse><No>32</No> <Rue>Rue Saint Simon</Rue><Code>75005</Code><Ville>Paris</Ville> <Commentaire>Proche restaurant celebre</Commentaire><Prix >300</Prix> </Repertoire>

Guide de données répertoire Num Nom Rue Repertoire X Hotel X Adresse X Ville Code Commentaire Prix

Fonctionnalités de XQUERY Navigation Support XPATH Sélection Jointure Tri Construction Recherche textuelle Fonction Imbrication agrégat

Expression XPATH Lister les noms des restaurants du guide normand document("http://gnormand.fr")//Restaurant/Nom/text() Lister les noms des restaurants de la forêt Guide collection("Guide")//Restaurant/Nom/text()

Expression FLWR for $var in <forêt> [, $var in <forêt>]... // itération let $var := <sous-arbre> // assignation where <condition> // élagage return <résultat> // construction

Flux de données FLWR For let where return Liste ordonnée De tuples De variables liées Liste élaguée De tuples De variables liées Instances XML

Exemples (1) Q1 : nom des restaurants de Cabourg (liste triée) for $R in collection("Guide")/Restaurant where $R/Adresse/Ville="Cabourg" return $R/Nom sortby Nom descending Q2 : Nom et adresse des restaurants deux étoiles where $R/@categorie="**" return <Restau2E>{$R/Nom} <Adresse>{$R/Adresse//text()}</Adresse> </Restau2E>

Exemples (2) Q3 : Rechercher toutes les valeurs des attributs des restaurants ayant un manager for $R in collection("Guide")/Restaurant where $R/Manager return <RestauAM> {for $A in $R//@* return $A} </RestauAM>

Exemples (3) Q4 : Noms et téléphones des restaurants situés dans la même ville que l’hotel Napoléon for $R in collection("Guide")//Restaurant, $H in collection("Repertoire")/Hotel where $R//Ville=$H//Ville and $H//Nom="Napoleon" return <RestauHRN> <Nom>{$R/Nom/text()} </Nom> <Tel> {$R/Telephone/text()} </Tel> </RestauHRN>

Exemples (4) Q5 : nombre de restaurants dans la collection Guide let $R := collection("Guide")/Restaurant Return <NbRest> {count($R)}</NbRest> Q6 : noms et adresses des restaurants dont la rue contient la chaine « Quai » for $R in collection("Guide")/Restaurant where contains($R//Rue, "Quai") return <Res>$R/Nom <Adr>{$R/Adresse//text()} </Adr> </Res>

Exemples (5) Q7 : Noms des restaurants par ville for $V in distinct-values (collection ("Guide") /Restaurant/Ville) return <Restauparville> <Ville>$V/text()</Ville> <Restaus> { for $R in collection("Guide")/Restaurant where $R//Ville=$V return $R/Nom } </Restaus> </Restauparville>

Exemples (6) Q8 : Adresse et deuxième prix des restaurants parsiens (pour ceux qui en ont deux) for $R in (for $S in collection("Guide")/Restaurant where $S/Prix[2] return $S) where $R/Ville="Paris" return <AdPrix2>{$R/Adresse}{$R/Prix[2]}</Adprix2>

Exemples (7) Q9 : Nom de chaque restaurant avec le prix moyen proposé for $R in collection("Guide")/Restaurant let $A := $R//Prix return <res> {$R/Nom} <MoyPrix>{avg($A)}</MoyPrix> </res>

Exemples (8) Q10 : noms et adresses des restaurants ayant au moins un prix supérieur à 200 for $R in collection("Guide")/Restaurant where some $P in $R/Prix satisfies (number(200)<$P) return <RestC>{$R/Nom}{$R/Adresse}</RestC>

Exemples (9) Q11 : noms et adresses des restaurants ayant tous les prix inférieurs à 100 for $R in collection("Guide")/Restaurant where every $P in $R/Prix satisfies (number(100)>$P) return <RestPC>{$R/Nom}{$R/Adresse}</RestPC>

Algèbre XQUERY une algèbre a été définie pour Xquery Permet le support d’optimisations Assez complexe (sur-ensemble de l’algèbre relationnelle)

XUPDATE Il manque le support des mises à jour dans XQUERY Il existe une proposition mais basée sur XPATH On peut utiliser DOM ou SAX pour faire les mises à jour (mais pas déclaratif)

Publication XML de données relationnelles

Objectifs XPATH, XQUERY XML Vues XML SQL données BD relationnelles

Deux problèmes Exporter une relation dans un format canonique : simple Exporter une base de données (ensemble de relations) dans un format prédéfini Ressemble à du stockage XML dans un SGBDR (sans maj) complexe

Format canonique <row> HOTELS <nom>Napoleon</nom> <categorie>3</categorie> <adresse>Paris</adresse> <prix>600</prix> </row> <nom>Gare</nom> <categorie>2</categorie> <adresse>Evry</adresse> <prix>300</prix> HOTELS Nom Catégorie Adresse prix Napoléon 3 Paris 600 Gare 2 Evry 300

Format canonique (2) Intéressant pour publication de données sur le web ou intégration de données Supporté dans SQLSERVER2000 (SELECT ... FOR XML), DB2 ou ORACLE9i XML SQL Utility

Exporter dans un format prédéfini Spécification du mapping Besoin d’un langage Pas de standard (un par vendeur) À stabiliser Deux grandes approches Relation universelle Schéma annoté

Exemple Acteur(idact, nom, prénom) <1, ‘Depardieu’, ‘gérard’> <2, ‘Clavier’, ‘christian’> Film(idfilm, titre, année) <11, ‘Astérix’, 2001> <12, ‘Vatel’, 2000> Distribution(idfilm, idact) <11,1> <11, 2>, <12, 1> <Acteur> <Nom>Depardieu</Nom> <Prenom>Gérard</Prenom> <Film annee="2001">Astérix</Film> <Film annee="2000">Vatel</Film> </Acteur> <Nom>Clavier</Nom> <Prenom>Christian</Prenom> ...

Relation universelle + template annoté par les A.nom, A.prenom, F.titre, F.année Depardieu, Gérard, Astérix, 2001 Depardieu, Gérard, Vatel, 2000 <SQL_stmt> Select A.nom, A.prenom, F.titre, F.annee From Acteur A, Film F, Distribution D Where A.idact=D.idact and D.idfilm=F.idfilm </SQL_stmt> <Acteur> <Nom>Depardieu</Nom> <Prenom>Gérard</Prenom> <Film annee="2001">Astérix</Film> <Film annee="2000">Vatel</Film> </Acteur> <Nom>Clavier</Nom> <Prenom>Christian</Prenom> ... + template annoté par les colonnes de la relation universelle <element_node Acteur> <element_node Nom> <text_node> <Column name="A.nom"/> </text_node> ...

Relation universelle (2) Support des vendeurs : IBM DB2 XML extender SqlServer2000 Universal XML Peut être complexe selon la nature des transformations souhaitées

Schéma annoté Spécification du schéma de sortie souhaité annoté par la provenance des données <xs:element name="Acteur"> <xs:complexType> <xs:sequence> <xs:element name="nom" type="xs:string"/> <xs:element name="prenom" type="xs:string"/> <xs:element ref="Film"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Film"> <xs:attribute name="annee" type="xs:dateTime"/>

Schéma annoté en SqlServer2000 <xs:element name="Acteur"  sql:relation="Acteur"> <xs:complexType><xs:sequence> <xs:element name="nom" type="xs:string"  sql:field="nom"/> <xs:element name="prenom" type="xs:string" sql:field="prenom"/> <xs:element ref="Film" sql:relationship="ActDist" sql:relationship="DistFilm"/> </xs:sequence></xs:complexType> </xs:element> <xs:element name="Film"  sql:relation="Film" sql:field="titre"> <xs:attribute name="annee" type="xs:dateTime"  sql:field="annee"/>

Schéma annoté SqlServer (2) <xs:annotation> <xs:appinfo> <sql:relationship name=ActDist parent=Acteur parent-key=idact child=Distribution child-key=idact </sql:relationship> </xs:appinfo> </xs:annotation> <xs:annotation> <xs:appinfo> <sql:relationship name=DistFilm parent=Distribution parent-key=idfilm child=Film child-key=idfilm </sql:relationship> </xs:appinfo> </xs:annotation>

Bilan Schéma annoté Variations selon les vendeurs SqlServer 2000 et IBM DB2 Plus flexible que la relation universelle Limitations sur les expressions SQL (pas d’unions, ...) Encore à améliorer!

Stockage de données XML

Système XML Niveau logique XPATH XQUERY DOM XML Niveau physique SGBDR LDAP SGF Système natif SGBD OO

Eléments de choix Données : Requêtes : Besoins applicatifs Plat vs structuré; petit ou volumineux; avec ou sans schéma, ... Requêtes : Avec ou sans maj; accès full-text; navigationnel; relationnel (jointures, ...) Besoins applicatifs Transactions, contrôle de concurrence, réplication, ...

Principes de stockage XML Plat : Un document XML est stocké dans un BLOB Simple, mais pas de requêtes possibles et maj difficiles Natif Définir un nouveau SGBD adapté au stockage de documents XML Redéfinir toutes les fonctions classiques d’un SGBD (transactions, concurrence, …) Par conversion ou « mapping » Utiliser un SGBD existant (souvent relationnel) pour stocker des documents XML Nécessite certaines extensions (index spécifiques par exemple)

Systèmes natifs Besoins Représentation concise des documents Support efficace des API XML Possibilité de maj données et structure Correspondance entre structure d’arbre et des pages physiques De nombreuses possibilités

Différents mappings APPLI ENTETE LISTE_FORM TITRE UID FORMULAIRE MonAppli Citcom/citcom@MICA NOM_TABLE MODE NOM_TABLE MODE @NOR @INS producteurs vins ATTRIBUT ATTRIBUT ANNEE CRU

Indexation Un placement physique ne peut être optimal pour toutes les requêtes possibles Besoin de plusieurs index XML a besoin d’index Sur les valeurs Sur la structure (navigation) Full-text (mots-clés)

Quelques systèmes natifs origine API Full-text XPATH XQUERY XYLEME ? O Y NATIX Bas niveau XINDICE XML:DB XML:RPC N eXcelon SGBDOO DOM/XSLT Tamino ADABAS DOM/SAX Partiel GoXML

Systèmes à base de mapping Stockage : convertir modèle de données XML vers graphe, relations, objets Chargement de données : convertir données XML vers arcs, tuples, objets Réécriture de requêtes : transformer requêtes XML vers requêtes cibles Transformation du résultat : système cible vers XML

Stockage de données XML vers relationnel Défini par l’utilisateur Générique (fixe) Dirigé par les données Dirigé par le schéma Basé sur un modèle de coût (adaptation aux besoins réels de l’application)

Mapping défini par l’utilisateur Supporté par la majorité des SGBDR commerciaux Utilisateur spécifie comment transformer éléments en relations Flexible mais Nécessite de connaitre XML et BD Relationnelles Beaucoup de solutions possibles (laquelle choisir ?) Maj des données implique maj du mapping

Stockage générique (arcs) attribut mode nom_table formulaire &0 &1 &2 &3 &4 &5 &6 &7 &8 @valeur &9 &10 Source cible Num fils élément &0 &1 1 formulaire &2 2 &3 nom_table &4 mode &5 @valeur &6 &7 &8 &9 attribut &10 3 VALEURS Noeud valeur &3 producteurs &5 INS &6 vins &8 NOR &9 ANNEE &10 CRU Select V.valeur From Valeurs V, Arcs A1, Arcs A2 Where A1.élément=« formulaire » And A1.cible=A2.source and A2.élément=« nom_table » And A2.cible=V.noeud

Stockage générique (éléments) attribut mode nom_table formulaire &0 &1 &2 &3 &4 &5 &6 &7 &8 @valeur &9 &10 FORMULAIRE Source cible &0 &1 &2 NOM_TABLE Source Cible &1 Producteurs &2 Vins Select N.cible From Formulaire F, Nom_table N Where F.cible=N.source

Bilan stockage générique Ne tient pas compte de régularité dans la structure Schéma relationnel canonique Arcs : stocke tous les arcs dans la même relation Éléments : partitionne horizontalement relation Arcs sur éléments Interrogation : nécessite des jointures MAJ : pas besoin de changer de schéma relationnel si le schéma des documents XML évolue

SGBDR commerciaux SGBD Stockage Chargement Requête Oracle9i CLOB Canonique User-defined SQL Loader Par programme Full-text, XPATH, SQL DB2 User-defined DAD Via DAD SQL+full-text, SQL SQL Server ARCS User-defined++ OpenXML Schéma annoté SQL+full-text, XPATH Pas de support XQUERY, MAJ via DOM

Conclusion Nombreux travaux pour le support XML et SGBD Produits encore en forte évolution Pas de standard Manque encore XQUERY et langage de MAJ

Bibliographie G. Gardarin; XML des bases de données aux services web, 2002, Dunod M. Fernandez, M. Benedikt, J. Freire, A. Sahuguet; XML and Data Management, Tutorial WWW2002 Conference, Hawai D. Chamberlin; Xquery: An XML Query Language, IBM Systems Journal, Vol41, No4, 2002