xml_bd_ouahdikrid

publicité
INF 7115
Automne 2002
Robert. GODIN
XML et les bases de données
Par
Driss OUAHDI
16 Décembre 2002
Hayat KRID
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



Introduction XML et BD





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 ?
Modèles de documents XML

Approche « Document »
 Structure moins organisée et un contenu de
données mixtes
 Recherche textuelle.
Indexation approchée.
 Accès type moteur de
Exemple
recherche.
<Mémo>
 Performances attendues
S.V.P soyez sûr que vous
êtes au
« moyenne » pour une
<Lieu>SH-2040</Lieu> à
volumétrie « forte
<Heure>17:30</Heure>
pour assister au cours
<Cours>INF7115</Cours>
</Mémo>
Modèles de documents XML

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 »
Exemple
<Mémo>
<Lieu>SH-2040</Lieu>
<Heure>17:30</Heure>
<Cours>INF7115</Cours>
</Mémo>
Concepts de base

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


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

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

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.
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.
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.
Bases de donnée XML-Enabled
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
 Mappage
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 (ObjectRelationnel Mapping)
Mappage basé sur les tables
<Etudiants>
<Personne>
<Nom>ccc</Nom>
<Prénom>ddd</Prénom>
<Age>26</Age>
</Personne>
….
</Etudiants>
Etudiants
Nom
Prénom
ccc
….
<Table>
<ligne>
<colonne>ccc</colonne>
<colonne>ddd</colonne>
<colonne>26</colonne>
</ligne>
….
</Table>
…
ddd
….
…
Age
26
….
…
Mappage Relationnel-Objet
EXEMPLE
<Commande>
<Ncommande>1234</Ncommande>
<Client>Gallagher Industries</Client>
<Date>29.10.00</Date>
<Article numéro="1">
<Lot>A-10</Lot>
<Quantité>12</Quantité>
<Prix>10.95</Prix>
</Article>
<Article numéro="2">
<Lot>B-43</Lot>
<Quantité>600</Quantité>
<Prix>3.99</Prix>
</Article>
</Commande>
Mappage Relationnel-Objet
Transforme un document XML en un arbre d’objets spécifiques aux
données contenues dans le document
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;
}
Stockage et indexation des documents XML
Stocker dans un système de
fichiers

Stocker dans des BLOBs
(Binary Large OBject)
Stocker en tant que simple  Consiste à stocker les
fichier dans le
documents XML en tant
gestionnaire de fichiers.
que BLOBs dans une
 GREP et SED (Unix et
base de données
Linux)
relationnelles.
 Bons résultats si
 Permet d’indexer plus
l’ensemble des documents
efficacement les
à stocker est réduit.
documents XML.
Stockage et indexation des documents XML
DTD se présente comme suit :
BD
<!ELEMENT Brochure (Titre, Auteur, Contenu)>
<!ELEMENT Titre (#PCDATA)>
<!ELEMENT Auteur (#PCDATA)>
<!ELEMENT Contenu (#PCDATA)>
Auteurs
Auteur
Table index
Auteurs
Auteur
BrochureID
Table document
Brochures
BrochureID
BLOB
Victor Sabo
23
Cesar roy
34
…
Brochures
BrochureID
…
BrochureID
BLOB
23
XML1
34
XML2
23
XML3
…
…
Les langages d’interrogation
 Langages basés sur un modèle donné (template-based langages)
 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>
<SelectStmt>
SELECT titre, auteur,
edition
FROM Livre
</SelectStmt>
<Livre>
<Titre>$titre</Titre>
< Auteur>$auteur</Auteur>
<Edition>$edition</Edition>
</Livre>
</InfoLivre>
<?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>
Les langages d’interrogation (suite)
 Langages basés sur le SQL (SQL-based langages)

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.
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.
Base de Données Oracle
 Extraction de données
 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 :
Base de Données Oracle
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
Si nous considérons que la table "employes" a été créee par
lescript suivant :
CREATE TABLE employes (
EMPNO NUMBER,
ENAME VARCHAR2(20),
JOB VARCHAR2(20),
MGR NUMBER,
HIREDATE DATE,
SAL NUMBER,
DEPTNO NUMBER
);
Requête "select * from
employes", notre fichier XML
ressemblera à ceci :
<?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>
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 euxmêmes délimitent chacun des tuples ramenés par
la requête.
Base de Données Oracle
Exemple créé sous forme d'un objet:
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
);
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
);
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.
Base de Données Oracle
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
 “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 :
Base de Données Oracle
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
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
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
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));
Stockage du XML sous Oracle
 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.
Base de données Oracle
 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)
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>
XPATH
 Appel a SQL en Utilisant Xpath
SELECT w.warehouse_spec.extract
('/Warehouse/Building/text()').getStringVal()
"Building"
FROM warehouses w
------------------------Building
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,
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).
Benchmarks
Certains 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.
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
Futures Développements et conférences
 Futures développements

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 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
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.
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/enus/dnexxml/html/xml07162001.asp
Références (suite)
 Oracle, "Oracle9i Application Developer's Guide – XML", Release 1 (9.0.1)
[En ligne] http://downloadwest.oracle.com/otndoc/oracle9i/901_doc/appdev.901/a88894/adx05xml.htm
 Software AG, "XML Database and Persistency Engines", [En Ligne]
http://www.softwareagusa.com/images/news/XML Database and Persistency
Engines Report (Dist).pdf
 B-Bop, Xfinity™ Server, [En ligne]
 http://www.b-bop.com/products_xfinity_server.htm
Böhme, Timo & Erhard Rahm, Université de Leipzig, Allemagne, [En ligne]
http://www.research.microsoft.com/~jamesrh/hpts2001/submissions/ErhardRahm.
pdf
Téléchargement