1. XML et les bases de données
INF 7115
Automne 2002
Robert. GODIN
Par
Driss OUAHDI Hayat KRID
16 Décembre 2002
2. Plan
Introduction
Présentation XML
Structure du document XML, DTD, XML Schema,
Feuilles de Style.
XML et les Bases de données:
Bases de données XML-Enabled
Mappage
Stockage et indexation des documents XML
Les langages d’interrogation
XML et Base de données Oracle
Futures Développements et conférences
Benchmarks
Conclusion
3. XML Standard d’échange de données
universel.
Intégration des données et méta-données
Les BD ne peuvent rester indifférentes :
Nécessité de stocker les documents XML
Nécessité de pouvoir interroger ces documents
Quel modèle de données ?
Quels langages d'interrogation ?
Introduction XML et BD
4. Recherche textuelle.
Indexation approchée.
Accès type moteur de
recherche.
Performances attendues
« moyenne » pour une
volumétrie « forte
<Mémo>
S.V.P soyez sûr que vous
êtes au
<Lieu>SH-2040</Lieu> à
<Heure>17:30</Heure>
pour assister au cours
<Cours>INF7115</Cours>
</Mémo>
Exemple
Modèles de documents XML
Approche « Document »
Structure moins organisée et un contenu de
données mixtes
5. Approche « Donnée »
Structure plus organisée et
contenu de données non
mixtes.
Compatibilité SGBDR
existants
Intégrité sémantique
Indexation exacte
Adapté au transactionnel et
décisionnel
Performances attendues
« moyenne » à « forte » pour
une volumétrie « moyenne »
Modèles de documents XML
<Mémo>
<Lieu>SH-2040</Lieu>
<Heure>17:30</Heure>
<Cours>INF7115</Cours>
</Mémo>
Exemple
6. DTD :
(Document Type Definition) est une déclaration
de la structure type à laquelle le document XML
doit se conformer (c’est la grammaire du
document XML).
Limite des DTD
Fondement des DTD hérités des DTD de
SGML
Description limitée des documents (Typage
des PCDATA)
Exprimé dans un langage autre que XML
Concepts de base
7.
SCHEMA :
L'objectif des Schémas est de définir des
contraintes sur des classes de Documents
conformes à un même modèle.
Reprend les acquis des DTD mais utilise la
syntaxe XML au lieu des expressions
régulières SGML.
Concepts de base
8. DOM :
Document Object Model (DOM) : définit
structure logique d'un document.
API destinée au modèle objet de document
Offre une représentation des documents
XML sous forme d’arbre.
Concepts de base
9. XSL :
(eXtensible Stylesheet Language) est un
langage qui transforme et traduit les
données XML d´un format à un autre.
XSLT :
(eXstensible Stylesheet Langage Transform)
peut servir à styliser les documents XML, et à
produire des documents HTML, des supports WML
ou tout autre type de document textuel.
Concepts de base
10. XML et BD, quels Intérêts?
XML fournit une méthode de
représentation des données structurées sans
ajout d’informations.
Étant tout simplement des fichiers textuels,
les documents XML peuvent être produits
et utilisés par d’autres systèmes.
11. XML et BD, quels Intérêts?
XML peut être utilisé par des outils, déjà
disponibles ou en début de diffusion,
permettant des comportements plus
recherchés.
Les données sérialisées au format XML
fournissent la souplesse nécessaire à la
transmission et à la présentation des données.
12. Définition
Ce sont des BD (souvent relationnelles) avec des
fonctionnalités facilitant le transfert et l’échange des
données avec des documents XML.
Adaptées surtout pour le stockage et la manipulation
des documents orientés-Données.
L’échange des données entre les documents XML et
la BD nécessite le passage par l’étape de mappage
(mapping) des données.
Bases de donnée XML-Enabled
13. Mise en correspondance entre le schéma XML et le
schéma de la base de donnée.
Deux types de mappages :
Mappage basé sur les tables (Table-Based
Mapping)
Mappage Relationnel-Objet (Object-
Relationnel Mapping)
Mappage
Bases de donnée XML-Enabled
16. Transforme un document XML en un arbre d’objets spécifiques aux
données contenues dans le document
Mappage Relationnel-Objet
object Commande {
Ncommande = 1234;
Client = "Gallagher Industries";
date = 29.10.00;
Articles = {ptrs to Article objects};
}
object Article {
numéro = 1;
Lot = "A-10";
quantité = 12;
prix = 10.95;
}
object Article {
numéro = 2;
Lot = “B-43";
quantité = 600;
prix = 3.95;
}
17. Stocker dans un système de
fichiers
Stocker dans des BLOBs
(Binary Large OBject)
Stocker en tant que simple
fichier dans le
gestionnaire de fichiers.
GREP et SED (Unix et
Linux)
Bons résultats si
l’ensemble des documents
à stocker est réduit.
Consiste à stocker les
documents XML en tant
que BLOBs dans une
base de données
relationnelles.
Permet d’indexer plus
efficacement les
documents XML.
Stockage et indexation des documents XML
18. <!ELEMENT Brochure (Titre, Auteur, Contenu)>
<!ELEMENT Titre (#PCDATA)>
<!ELEMENT Auteur (#PCDATA)>
<!ELEMENT Contenu (#PCDATA)>
Auteurs
Auteur
BrochureID
Brochures
BrochureID
BLOB
Auteur BrochureID
Victor Sabo 23
… …
Cesar roy 34
Auteurs
BrochureID BLOB
23 XML1
23 XML3
34 XML2
Brochures
BD
… …
Table index Table document
Stockage et indexation des documents XML
DTD se présente comme suit :
19. Les langages d’interrogation
Langages basés sur un modèle donné (template-based langages)
<?xml version="1.0"?>
<InfoLivre>
<SelectStmt>
SELECT titre, auteur,
edition
FROM Livre
</SelectStmt>
<Livre>
<Titre>$titre</Titre>
< Auteur>$auteur</Auteur>
<Edition>$edition</Edition>
</Livre>
</InfoLivre>
Aucun mappage n’est défini entre le document XML et la base de données.
Les instructions SELECT sont incluses dans le modèle.
Les résultats sont traités par un logiciel de transfert de données.
<?xml version="1.0"?>
<InfoLivre>
<Livres>
<Livre>
<Titre>XML et base de
données </Titre>
<Auteur>C. Kelvin</Auteur>
<Edition>Eyrolles</Edition>
</Livre>
…
</Livres>
</InfoLivre>
20. Langages basés sur le SQL (SQL-based langages)
Les langages d’interrogation (suite)
Utilisent les clauses SELECT, le résultat obtenu est transformé en XML.
Les données sont transformées selon le mappage relationnel-objet.
Les résultats sont traités par un logiciel de transfert de données.
Langages d’interrogation XML
Ces langages interrogent directement les documents XML.
Pour interroger une BD relationnelle les données doivent être
transformées au format XML (mapping).
De ce fait, on interroge les documents XML virtuels obtenus.
21. Base de Données Oracle
Les utilitaires "XML-SQL" d'Oracle
correspondent à des classes Java offrant deux
principales fonctionnalités :
Extraire des données d'une base au format
XML.
Insérer des données au format XML dans une
base.
Cet outil est fourni en standard à partir
d'Oracle 8i (version 8.1.7 et plus) ainsi que
sous Oracle 9i.
22. Base de Données Oracle
De la base vers le schéma XML :
La classe "OracleXMLQuery" permet de
construire un document XML à partir d'une
requête SQL. Voici un exemple basique de
son utilisation :
Extraction de données
23. import java.sql.*;
import oracle.xml.sql.query.*;
import oracle.jdbc.driver.*;
public class sample
{
public static void main(String args[]) throws Exception
{
DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection("jdbc:oracle:oci8:scott/tiger@");
OracleXMLQuery qry = new OracleXMLQuery(conn,
"select * from employes");
System.out.println(qry.getXMLString());
conn.close();
}
}
Base de Données Oracle
24. CREATE TABLE employes (
EMPNO NUMBER,
ENAME VARCHAR2(20),
JOB VARCHAR2(20),
MGR NUMBER,
HIREDATE DATE,
SAL NUMBER,
DEPTNO NUMBER
);
Si nous considérons que la table "employes" a été créee par
lescript suivant :
<?xml version='1.0'?>
<ROWSET>
<ROW num="1">
<EMPNO>7369</EMPNO>
<ENAME>Smith</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>12/17/1980
0:0:0</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<!-- rangées supplémentaires... -->
</ROWSET>
Requête "select * from
employes", notre fichier XML
ressemblera à ceci :
Base de Données Oracle
25. Base de Données Oracle
Document XML conçu grâce à l'exploitation d'un
resultset JDBC par la classe "OracleXMLQuery".
Noms des balises XML issus des noms de
colonnes de la requête SQL.
<ROWSET>" constitue le tag "racine" du
document XML, il entoure chacun des tags
"<ROW...> (comportant un numéro), qui eux-
mêmes délimitent chacun des tuples ramenés par
la requête.
26. Base de Données Oracle
CREATE TYPE AddressType AS OBJECT (
STREET VARCHAR2(20),
CITY VARCHAR2(20),
STATE CHAR(2),
ZIP VARCHAR2(10)
);
CREATE TYPE EmployesType AS OBJECT
(
EMPNO NUMBER,
ENAME VARCHAR2(20),
SALARY NUMBER,
EMPADDR AddressType
);
Exemple créé sous forme d'un objet:
27. Base de Données Oracle
On retrouve "EmployesType" dans une collection de type :
CREATE TYPE EmployeeListType AS TABLE OF
EmployeeType;
Enfin, la table "dept" est créee, elle compte parmi ses attributs un objet
et une collection d'objets :
CREATE TABLE dept (
DEPTNO NUMBER,
DEPTNAME VARCHAR2(20),
DEPTADDR AddressType,
EMPLIST EmployeeListType
);
28. Base de Données Oracle
Stockage : du schéma XML vers la base
Classe Oracle prévue "OracleXMLSave".
Capable d'insérer, mettre à jour et supprimer des
données XML.
Les documents XML complexes nécessitent la
création d’une structure Oracle (objet, vue)
correspondant à l'architecture de ces documents.
Pas de "mapping" entre les attributs XML (les
tags) et les champs de la base de données.
D'où la nécessité de créer une "structure
d'accueil " sur mesure pour les documents XML.
29. Prenons les tags XML suivants :
<DEPT>
<DEPTNO>100</DEPTNO>
<DEPTNAME>Sports</DEPTNAME>
<DEPTADDR>Paris</DEPTADDR>
<EMPLIST>
<EMPLIST_ITEM>
<EMPNO>7369</EMPNO>
<ENAME>Sebastien</ENAME>
<SALARY>10000</SALARY>
</EMPLIST_ITEM>
<!-- employes supplementaires... -->
</EMPLIST>
</DEPT>
Base de Données Oracle
30. Base de Données Oracle
“emp_typ”
Informations liées à l'employé (identifiant, nom,
salaire), correspond à <EMPLIST_ITEM>.
"empc_type" :
Décrira une "collection" d'employés, correspond à
<EMPLIST>.
"dept_type" :
Définit un département, correspond à <DEPT>.
des liaisons existent entre chacun de ces types, ils
s'imbriquent ici de la manière suivante :
31. CREATE OR REPLACE TYPE emp_type AS OBJECT (
empno NUMBER(4),
ename VARCHAR2(50),
salary NUMBER(6,2)
);
CREATE TYPE empc_type AS TABLE OF emp_type;
CREATE TYPE dept_type AS OBJECT (
deptno NUMBER(3),
deptname VARCHAR2(50),
deptaddr VARCHAR2(50),
employes EMPC_TYPE
);
Base de Données Oracle
32. Les types étant définis, les données XML peuvent être importées et la
table (objet) Oracle peut être créee :
CREATE TABLE obj_dept OF dept_type
NESTED TABLE employes STORE as nested_emp_table;
Pour conserver une structure de tables relationnelles il faut alors passer
par une vue :
CREATE VIEW v_dept OF dept_type WITH OBJECT OID(deptno) AS
SELECT d.deptno, d.deptname, d.deptaddr,
CAST ( MULTISET ( SELECT e.empno, e.ename, e.salary
FROM emp e WHERE e.deptno = d.deptno)
AS empc_type)
FROM dept d;
Base de Données Oracle
33. En résumé :
Il existe d'autres moyens d'interfacer XML et une base
de données. Cela dépend du SGBD utilisé ainsi que de
la technologie que l'on souhaite employer.
Du Perl en passant par le Java, les bases de données
relationnelles multiplient leurs interactions avec XML,
de quoi freiner un peu plus la progression des bases
natives XML ?
Base de Données Oracle
34. Base de données Oracle
Type de donnée XMLTYPE
Type objet prédéfini qui peut contenir tout un document XML en
entier.
On peut stocker un document XML dans une colonne d’une table ou
d’une vue. Examinons la création de la table suivante :
CREATE TABLE warehouses(
warehouse_id NUMBER(3),
warehouse_spec SYS.XMLTYPE,
warehouse_name VARCHAR2(35),
location_id NUMBER(4));
35. Table que nous venons de créer sera stocker sous
forme CLOB (Character Large OBject) ou BLOB
(Binary Large OBject).
Une autre option est offerte qu’on peut appeler
stockage relationnel-objet.
Stockage sous forme d’objet relationnel le système
a recours à des index en B-Arbre.
Stockage en CLOB/BLOB, des index textes
permettant l’interrogation avec des commandes
SQL spécifiques.
Stockage du XML sous Oracle
36. XPath
Permet d’accéder à une partie d'un document XML
Exploité par XPointer et XSLT, XPath est une
recommandation du W3C.
Fruit de la collaboration entre les "XSL et XPointer
Working Groups", XPath doit permettre de combler
certains besoins communs de ces deux techniques :
accéder à un endroit spéficique d'un arbre XML.
XPath n'est pas seulement un langage
"d'adressage", il est également constitué d'un
ensemble de fonctions (chaînes de caractères,
booléennes, numériques)
Base de données Oracle
37. Requêtes sous Oracle : XPath et ClobVal
select e.poDoc.getClobval() AS poXML
from po_xml_tab e;
POXML
<?xml version="1.0"?>
<PO pono="2">
<PNAME>Po_2</PNAME>
<CUSTNAME>Nance</CUSTNAME>
<SHIPADDR>
<STREET>2 Avocet Drive</STREET>
<CITY>Redwood Shores</CITY>
<STATE>CA</STATE>
</SHIPADDR>
</PO>
38. XPATH
Appel a SQL en Utilisant Xpath
SELECT w.warehouse_spec.extract
('/Warehouse/Building/text()').getStringVal()
"Building"
FROM warehouses w
-------------------------
Building
39. Base de données Oracle
Enrichissement du langage SQL
INSERT into warehouses (warehouse_id, warehouse_spec)
VALUES (1001, sys.XMLType.createXML(
'<Warehouse whNo="100">
<Building>Owned</Building>
</Warehouse>'));
Autres commandes :
XMLSchema, ExistNode, XMLTable,
XMLTransform,
40. Dépot XML
Dépôt XML (XML Repository) :
Vue gestionnaire de fichier des documents XML
dans la base : Propriétaire, date de modification,
version, contrôle d'accès.
Accessible à travers WebDAV, FTP, JNDI et SQL
(en utilisant certains opérateurs spécifiques).
41. Benchmarks
Mark : XML Benchmark Project de Busse,
Carey, Florescu, Kersten, Manolescu, Schmidt, et
Waas. C'est un benchmark destiné aux bases de
données XML natives.
Xmach-1 : XML Data Management Benchmark
de Timo Boehme et Erhard Rahm de l'université de
Leipzig en Allemagne.
Certains BenchMarks
42. Benchmarks
Xmach-1 le plus récent et le plus connu.
Performances indépendantes des schémas
Les choix des index est déterminant et influence
le résultats
Formatage relationnel des données XML plus
adapté pour les grands volumes de documents
43. Futures Développements et conférences
Amélioration du XML (XInclude candidate à une
recommandation.
Description formelle d'un schéma XML (types de
données et contraintes de structure).
Standardisation d'un langage de requête, XPath,
Xquery, SQLX (Oracle et IBM), etc
Futures développements
44. Futures Développements et conférences
Conférences
EEXTT2002 (Efficiency and Effectiveness of XML
Tools, and Techniques) (WorkShop du VLDB
20-23 août 2002), Hong Kong, Chine
Sujets abordés : Stockage des données XML,
Indexation et extraction, les langages de requêtes
XML Europe 2002 : "Down To Business: Getting
Serious About XML" du 20 au 23 mai 2002 à Barcelone
en Espagne
Sujets abordés : Base de données et schémas de
documents, Outils de recherche textuelles pour
des documents XML complexes
45. Conclusion
Produits en évolution
Il reste beaucoup de choses à faire
(standardisation des langages de requêtes,
amélioration des performances, etc.).
Plusieurs opportunités de recherche sont
offertes étant donné l’intérêt tardif de la
communauté des BD pour XML.
46. Références
Ronald, Bourret. “XML and Databases”, [En ligne]
http://www.rpbourret.com/xml/XMLAndDatabases.htm
World Wide Web Consortium (W3C), [En ligne] http://www.w3.org/
Williams, Kevin et autres. "XML et les bases de données", Paris, Eyrolles,
2001, XXII, 1082 p
McLaughlin, Brett. “Java et XML”, Paris, Eyrolles, 2001, 472 p.
Obasanjo, Dare. "An exploration of XML in Database Management
Systems « [En ligne]
http://www.prism.gatech.edu/~gte855q/StoringAndQueryingXML.html
Conrad, Andrew,"A Survey of Microsoft SQL Server 2000 XML Features",
[En ligne] http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/dnexxml/html/xml07162001.asp