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 bases de données.

Présentations similaires


Présentation au sujet: "XML et bases de données."— Transcription de la présentation:

1 XML et bases de données

2 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

3 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

4 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

5 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

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

7 Langages de requêtes XML

8 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

9 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

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

11 BD Guide (1) GuideExotique :
<?xml version="1.0"  encoding="ISO " ?> <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> </Telephone> </Restaurant> <Restaurant type="thibetain" categorie="**"> <Nom>Le Lhassa</Nom> <Adresse> <No>13</No><Rue>Montagne Sainte-Genevieve</Rue><Ville>Paris 5</Ville> <Telephone> </Telephone><Manager>Dicky</Manager> <Epicerie type="egyptienne"> <Nom>Le Caire</Nom> <Telephone> </Telephone><Manager>Ali Moussa</Manager> <Specialité>falavel</Specialite> </Epicerie> </Guide>

12 BD Guide (2) GuideNormand:
<?xml version="1.0"  encoding="ISO " ?> <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> </Telephone> <Specialité>Fruits de Mer</Specialite> </Guide>

13 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

14 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

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

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

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

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

19 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

20 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

21 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 return <Restau2E>{$R/Nom} <Adresse>{$R/Adresse//text()}</Adresse> </Restau2E>

22 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 return $A} </RestauAM>

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

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

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

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

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

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

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

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

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

32 Publication XML de données relationnelles

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

34 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

35 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

36 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

37 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é

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

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

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

41 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"/>

42 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"/>

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

44 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!

45 Stockage de données XML

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

47 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, ...

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

49 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

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

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

52 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

53 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

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

55 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

56 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

57 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

58 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

59 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

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

61 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


Télécharger ppt "XML et bases de données."

Présentations similaires


Annonces Google