XML et les bases de données

publicité
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
XML et les bases de données
Mihaela JUGANARU-MATHIEU
[email protected]
École Nationale Supérieure des Mines de St Etienne
février 2012
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
XML - un format de représentation de l’information
XML ou autre langage dérivé : SVG, MathML, SMIL, RSS,
EDI-XML, ebXML, OWL, RDF etc.
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
XML - modèle de représentation de données
C’est un modèle très différent du modèle EAR, modèle relationnel
ou modèle par objets (diagramme de classe en UML).
Les données qui se prêtent à cette modélisation ont :
un degré de régularité assez variable (des composants ou des
attributs peuvent manquer ou être en nombre très variable)
une certaine "sérialisation" (ordre) parmi les composants
une granularité évidente (un element peut faire partie d’un
autre)
On parle de données semi-structurées.
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple : pour chaque type de document papier d’une entreprise
(contrat, facture, etc.) on peut facilement proposer une DTD ou
une XML Schema.
Domaines : informations médicales et biologiques, informations de
type document, informations de biologie moléculaire et de
représentation du génome.
Bibliographie :
Serge Abiteboul, Peter Buneman et Dan Suciu. Data on the
Web : From Relations to Semistructured Data and XML.
Morgan Kaufmann, 2001.
Antoine Lonjon et Jean-Jacques Thomasson Modélisation
XML, Eyrolles, 2006.
La modélisation XML des données se prête bien aussi à l’usage des
techniques de type "design pattern" et tire pleinement profit des
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Avantages clairs de XML :
décrit des informations de façon non-ambigue et supporte bien
n’importe quelle mise en page ultérieure (séparation contenu structure)
excellent compromis pour des informations orientées données
et pour celles orientées contenu
bon vecteur pour échanger des informations entre SI, logiciels
ou BD
**
un document XML = une base de données ?
une "collection" de documents XML = une base de données ?
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Plusieurs questions :
comment garder XML dans une base de données “classique” ?
quels autres types de base de données pour contenir du XML ?
comment explorer les flux XML contenus ?
comment assurer le même fichier XML en entrée et en sortie ?
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Base de donnés contenant du XML :
solution "simple" : garder XML dans le modèle relationnel
solution "naïve" : garder XML comme attribut de table de
type LOB (Large Object) - CLOB ou BLOB
admettre XML comme type de base
base de données étendues
base de données native XML
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Rappel des fonctionnalités qu’un SGBD doit assurer :
la définition des bases de données et des “objets” contenus
la manipulation des données
la confidentialité
l’intégrité des données
la sécurité de fonctionnement
la gestion des accès concurrents
Ces fonctionnalités doivent être assurées pour tout SGBD, mais le
modèle de représentation de données influent grandement sur leur
mise en place
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Caractéristiques des documents XML :
les objets XML nécessitent moins de modifications (que les
enregistrements des tables).
consulter XML signifie avoir soit le contenu complet, soit une
partie du document
présenter un résultat : forme textuelle ou autre (XSLT)
valider un document XML : par rapport à sa description
(DTD, XML XSchema) mais moins par rapport à d’autres
documents XML (clé étrangère ?)
les documents XML peuvent être partitionnés de diverses
manière en collections
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Les fonctionnalités d’un SGBD supportant XML :
la définition des bases de données et des “objets” contenus :
documents, collections, procédures
la manipulation des données :
validation
comparaison entre documents : Xdiff
interrogation : langages de type XPath, Xquery
traitements de type XSLT, transformation XSL-FO, etc.
modification : insertion, suppression, mise à jour ( ?)
recherche d’information
fouille (à la rigueur)
la confidentialité - les utilisateurs définissent des droits d’accès
à des collections,mais pas à des éléments de documents
l’intégrité des données - pas plus que ID et IDREF à l’intérieur
d’un même document
la sécurité de fonctionnement - classique
la gestion des accès concurrents ( ?)
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Soit le document :
<?xml version="1.0"?>
<biblio>
<livre>
<titre>Germinal</titre>
<auteur>E. Zola</auteur>
</livre>
<livre>
<titre>Comprendre XSLT</titre>
<auteur>B. Amann</auteur>
<auteur>P. Rigaux</auteur>
<editeur>O’Reilly</editeur>
</livre>
</biblio>
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
L’arbre associé :
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Si on connait le sens (la sémantique) des données enregistrées, pour
ce type de document on peut proposer les 2 tables :
LIVRE :
titre
Germinal
Comprendre XSLT
AUTEUR :
nom_auteur
E. Zola
B. Amann
P. Rigaux
code_livre
l1
l2
editeur
NULL
O’Reilly
code_livre
l1
l2
l2
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple : trouver le titres des livres d’E. Zola :
En XQuery
for $i in doc("biblio.xml")/biblio/livre
where $i/auteur = "E. Zola"
return $i/titre
En SQL avec une seule jointure sur les deux tables :
SELECT L.*
FROM LIVRE L, AUTEUR A
WHERE L.CODE_LIVRE = A.CODE_LIVRE AND
A.AUTEUR = ’E. Zola’;
Défauts : la méthode n’est pas générique, car elle impose la
connaissance de la sémantique des balises et l’augmentation du
nombre de tables (même ordre que le nombre de balises).
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Représentation par structure/valeur
Pour représenter n’importe quel document XML deux tables
suffissent :
une qui garde la structure arborescente avec le numéro du
nœud, sa balise, son type, son père et le numéro d’ordre parmi
ses frères.
une table qui garde les valeurs des feuilles
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Représentation :
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Même interrogation en SQL : 5 tables de sélection et 4 conditions
de jointure
select V2.val
from R L, R A, R T, S V1, S V2
where L.lab=’livre’ and A.lab=’auteur’ and
T.lab=’titre’ and L.id=A.par and
L.id=T.par and A.id=V1.noeud and
T.id=V2.noeud and V1.val=’E. Zola’ ;
Défaut : lourdeur dans l’écriture (et la résolution de requête).
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Méthode Monet
Fragmentation en tables basée sur les chemins
Classe : type de chemin
biblio.livre, biblio.livre.titre, biblio.livre.auteur, etc.
Chaque chemin correspond à une table binaire
Types d’associations :
père - fils
nœud - valeur
nœud - attribut
nœud - rang
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
SQL : 4 tables de sélection et 3 conditions de jointure :
select V2.val
from biblio.livre.titre A,
biblio.livre.auteur B,
biblio.livre.auteur.val V1,
biblio.livre.titre.val V2
where A.Par=B.Par and A.Id=V1.Id and
B.Id=V2.Id and V2.Val=’E. Zola’ ;
Défaut : nombre important de tables générées
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
BD native XML
BD native XML (NXD - Native XML Data) : définit un modèle
logique de document XML, stocke et retrouve les documents en
fonction de ce modèle.
Unité fondamentale de stockage = document XML.
Deux types de NXD :
basée sur le texte
basée sur un modèle interne
L’indexation se fait en format propriétaire ou avec un SGBD
classique.
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Caractéristiques de NXD :
supporte la notion de collection (équivalente à celle de table)
langages de requête : plusieurs et variés - XPath, XQL, XQuery
supporte les mises à jour et les effacements
supporte les transactions, verrouillages et accès concurrents au
niveau du document
aller-retour des documents (un document est restitué dans la
même forme qu’il a été introduit)
supporte parfois les données distantes
stockage des entités externes difficile
peu de redondance de l’information (normalisation, XLink)
intégrité référentielle (interne, externe) ?
passage à l’échelle
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Deux exemples NXD :
XediX (CEA et Aristote) - stockage des copies d’écran, 100 TB,
indexation par le biais d’un SGDB classique
Xyleme (Sofia A.) - entrepôt XML, Xdiff, stockage des versions,
indexation en format propriétaire (exemple : la collection du
"Monde").
Beaucoup d’autres produits : Tamino, XQuareBridge (OpenSource),
eXist, Berkley (Oracle)
Bibliographie :
http://www.rpbourret.com/xml/XMLAndDatabases.htm
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Bases de données étendues
Autre solution envisagée : étendre les fonctionnalités des BD du
marché (Oracle, DB2 d’IBM et SQLServer de Microsoft) afin de
supporter XML comme type natif.
Premières solutions très simples : garder du XML dans une chaine
de caractères : VARCHAR2 ou LONG RAW. On ne tirait aucun
profit du XML.
Solution actuelle :
type de données à part pour XML et sur ce type des fonctions
spécifiques XML sont implémentées.
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Avantages des BD étendues :
on tire profit des notions très fortes de normalisation,
indexation, intégrité référentielle qui sont déjà implémentées.
on profite également de toutes les fonctions SGBD accessibles
et fiables : accès multiples, gestion complexe d’utilisateurs,
techniques de sauvegarde.
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Solutions Oracle pour XML :
garder XML dans un LOB (Large OBject) de type VARCHAR2
ou extensions. Mais les requêtes SQL, encore moins XPath,
Xquery, ne fonctionnent pas. On peut utiliser Oracle Text pour
faire de la RI simple
mapper XML dans une structure relationnelle : approche
manuelle ou le package DBMS_XMLSAVE
garder XML dans un ficher externe manipulable par le module
Oracle XML Database Repository
utiliser le type natif XML : XMLTYPE
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Voici l’évolution dans la vision d’XML depuis la version 8i en 1999 :
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Les tables peuvent don contenir des attributs de type XML (1 par
table !). Ces attributs peuvent être indexés et parsés avec des
chemins XPath, on peut faire de requêtes XQuery.
Exemples : requête SELECT avec une expression XPath dans la
clause WHERE et création d’un index sur la partie textuelle d’un
élément.
create table purcchaseorder(x xmltype);
select value(x) from purchaseorder x
where
existsNode(value(x),’ /PurchaseOrder[User="SMITH"]’) = 1;
create index ipurchaseorderuser
on purchaseorder x
(extract(value(x), ’/PurchaseOrder/User’));
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
La vérification des contraintes référentielles ou la validation du
document XML se réalise avec des mécanismes spécifiques de BDR.
Exemples : trigger et clé étrangère :
create or replace trigger
VALIDATE_PURCHASEORDER
before insert on purchaseorder
for each row
begin
if (:new.sys_nc_rowinfo\$ is not null) then
:new.sys_nc_rowinfo\$.schemavalidate();
end if;
end;
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
SQL/XML
SQL/XML est une extension du langage SQL afin d’obtenir des flux
XML depuis une BD relationnelle.
Plusieurs fonctions ont été proposées, on a choisi d’implémenter :
XMLElement - qui construit un élément XML à partir d’une
valeur issue de la base de données
XMLAttribute - qui place dans un attribut XML une valeur
XMLAgg - fonction agrégat qui construit un élément composé
à partir d’une liste de valeurs
XMLConcat - qui concatène deux ou plusieurs éléments XML
XMLForest : construit une séquence d’éléments XML
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Soit la table attraction sur laquelle on exécutera nos requêtes :
select * from attraction;
COUNTY_NAM ATTRACTION_NAME ATTRACTION_URL G LOCATION
---------- ------------------------------ -----------------------------Alger Pictured Rocks http://www.nps.gov/piro/ Y Munising
Marquette Da Yoopers Tourist Trap http://www.dayoopers.com/thetrap.html
Chippewa Valley Camp Museum Ship http://www.thevalleycamp.com/ N Sault S
Mackinac Mackinac Bridge http://www.mackinacbridge.org/ Y
Alger Valley Spur http://ValleySpur.com Y Munising
Marquette Ski Hall of Fame http://skihall.com/www/ N Ishpeming
6 rows selected.
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple 1 : construction d’éléments XML successifs.
SELECT XMLElement("Attraction",attraction_name)
FROM attraction;
produit :
<Attraction>Pictured Rocks</Attraction>
<Attraction>Da Yoopers Tourist Trap</Attraction>
<Attraction>Valley Camp Museum Ship</Attraction>
<Attraction>Mackinac Bridge</Attraction>
<Attraction>Valley Spur</Attraction>
<Attraction>Ski Hall of Fame</Attraction>
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple 2 : construction d’un unique élément XML.
SELECT XMLElement("Attraction",
XMLAttributes(government_owned AS GOV),
XMLForest(attraction_name AS "Name",
Location AS "Location",
attraction_url AS "URL"))
FROM attraction
WHERE attraction_name=’Mackinac Bridge’;
produit :
XMLELEMENT("ATTRACTION",XMLATTRIBUTES(GOV
------------------------------------------------<Attraction GOV="Y">
<Name>Mackinac Bridge</Name>
<URL>http://www.mackinacbridge.org/</URL>
</Attraction>
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple 3 : Utilisation d’une fonction agrégat.
SELECT XMLElement("County",
XMLAttributes(c.county_name AS "Name"),
XMLAgg(
XMLElement("Attraction",
XMLAttributes(government_owned AS GOV),
XMLForest(a.attraction_name AS "Name",
a.Location AS "Location",
a.attraction_url AS "URL"))))
FROM county c, attraction a
WHERE c.county_name = a.county_name
GROUP BY c.county_name;
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple 3 : Utilisation d’une fonction agrégat - suite
XMLELEMENT("COUNTY",XMLATTRIBUTES(C.COUNTY_NAMEAS"NAME"),XMLAGG
-------------------------------------------------------------------------<County Name="Chippewa">
<Attraction GOV="N">
<Name>Valley Camp Museum Ship</Name><Location>Sault Ste. Marie</Location>
<URL>http://www.thevalleycamp.com /</URL>
</Attraction>
</County>
<County Name="Mackinac">
<Attraction GOV="Y">
<Name>Mackinac Bridge</Name><URL>http://www.mackinacbridge.org/</URL>
</Attraction>
</County>
<County Name="Marquette">
<Attraction GOV="N">
<Name>Da Yoopers Tourist Trap</Name><Location>Ishpeming</Location>
<URL>http://www.dayoopers.com/thetrap.h tml</URL>
</Attraction>
<Attraction GOV="N">
<Name>Ski Hall of Fame</Name><Location>Ishpeming</Location>
<URL>http://skihall.com/www/</URL>
</Attraction>
</ County>
...
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
XML - modèle de représentation de données
XML dans quelles BD
Modèle XML vers modèle relationnel
BD XML native
BD étendues
SQL/XML
Exemple 3 : Utilisation d’une fonction - autre écriture pour
le même résultat.
SELECT XMLElement("County",
XMLAttributes(c.county_name AS "Name"),
XMLAgg(
XMLElement("Attraction",
XMLAttributes(government_owned AS GOV),
XMLConcat(XMLElement("Name", a.attraction_name),
XMLElement("Location", a.Location),
XMLElement("URL", a.attraction_url)))))
FROM county c, attraction a
WHERE c.county_name = a.county_name
GROUP BY c.county_name;
Mihaela JUGANARU-MATHIEU [email protected]
XML et les bases de données
Téléchargement