Publication de données relationnelles en XML

Transcription

Publication de données relationnelles en XML
Objectifs
XPATH,
XQUERY
Publication XML de données
relationnelles
XML
Vues XML
SQL
données
BD
relationnelles
1
2
Deux problèmes
Format canonique
HOTELS
• 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
3
B. Defude - INT Evry - 2003
Nom
Catégorie
Adresse
prix
Napoléon
3
Paris
600
Gare
2
Evry
300
<row>
<nom>Napoleon</nom>
<categorie>3</categorie>
<adresse>Paris</adresse>
<prix>600</prix>
</row>
<row>
<nom>Gare</nom>
<categorie>2</categorie>
<adresse>Evry</adresse>
<prix>300</prix>
</row>
4
1
Exporter dans un format
prédéfini
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
• Spécification du mapping
– Besoin d’un langage
– Pas de standard (un par vendeur)
– À stabiliser
• Deux grandes approches
– Relation universelle
– Schéma annoté
5
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>
Relation universelle
<Acteur>
<Nom>Depardieu</Nom>
<Prenom>Gérard</Prenom>
<Film annee="2001">Astérix</Film>
<Film annee="2000">Vatel</Film>
</Acteur>
<Acteur>
<Nom>Clavier</Nom>
<Prenom>Christian</Prenom>
<Film annee="2001">Astérix</Film>
</Acteur>
...
7
B. Defude - INT Evry - 2003
6
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
<Acteur>
Where A.idact=D.idact and D.idfilm=F.idfilm
<Nom>Depardieu</Nom>
</SQL_stmt>
<Prenom>Gérard</Prenom>
<Film annee="2001">Astérix</Film>
+ template annoté par les
<Film annee="2000">Vatel</Film>
colonnes de la relation universelle
</Acteur>
<element_node Acteur>
<Acteur>
<element_node Nom>
<Nom>Clavier</Nom>
<text_node>
<Prenom>Christian</Prenom>
<Column name="A.nom"/>
<Film annee="2001">Astérix</Film>
</text_node>
</Acteur>
...
...
8
2
Relation universelle (2)
Schéma annoté
• Spécification du schéma de sortie souhaité
annoté par la provenance des données
• Support des vendeurs :
– IBM DB2 XML extender
– SqlServer2000 Universal XML
• Peut être complexe selon la nature des
transformations souhaitées
9
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"/>
</xs:element>
11
B. Defude - INT Evry - 2003
<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"/>
</xs:element>
10
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:annotation>
</xs:appinfo>
<xs:appinfo>
</xs:annotation>
<sql:relationship name=DistFilm
parent=Distribution parent-key=idfilm
child=Film child-key=idfilm
</sql:relationship>
</xs:appinfo>
12
</xs:annotation>
3
Bilan Schéma annoté
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
• 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!
13
B. Defude - INT Evry - 2003
14
4

Documents pareils