1
XML et bases de données
Formation SANDRE
Pierre LAGARDE
2
Données versus Documents
3
Documents centrés données / XML structuré
Utilisé pour les échanges de données
Construit pour l’analyse par l’ordinateur
Caractéristiques :– Structures régulières– Données faible granularité– Pas de contenu mixte– L’ordre des balises n’a pas d’importance
Exemples– Données scientifiques– …
4
Exemple de fichier XML data-centric
XML-SANDRE<Prelevement> <CdPrelevementCommanditaire>06036970 - 01012004 - TEST PES_EAU</CdPrelevementCommanditaire> <NumeroOrdrePrelevement>1</NumeroOrdrePrelevement> <JourPrel>01</JourPrel> <MoisPrel>01</MoisPrel> <AnneePrel>2004</AnneePrel> <PrecisionDatePrel>5</PrecisionDatePrel> <StationPrelevement> <CdStationPrelevement schemeAgencyID="1">06036970</CdStationPrelevement> </StationPrelevement> <Support> <CdSupport>3</CdSupport> </Support> <Preleveur> <Intervenant> <CdIntervenant schemeAgencyID="SIRET">41054531300018</CdIntervenant> </Intervenant> </Preleveur> <Echantillon> <DestinataireEchant> <Intervenant> <CdIntervenant schemeAgencyID="SIRET">22260001700081</CdIntervenant> </Intervenant> </DestinataireEchant> <Analyse> <NoAna>1</NoAna> <InsituAna>2</InsituAna> <Parametre> <CdParametre>1264</CdParametre> <NomParametre>2 4 5 T</NomParametre> </Parametre> <FractionAnalysee> <CdFractionAnalysee>23</CdFractionAnalysee> </FractionAnalysee> <Methode> <CdMethode>386</CdMethode> </Methode> <UniteReference> <CdUniteReference>133</CdUniteReference> <LbUniteReference>µg/l</LbUniteReference> </UniteReference> </Analyse> <Analyse> <NoAna>1</NoAna> <InsituAna>2</InsituAna> <Parametre>
5
Document centré document/ unstructured XML
Elaboré pour la lecture “humaine”
Caractéristiques– Structures irrégulières– Données à granularité importante (un élément = le
document !)– Données mixtes– L’ordre des élément est important
Souvent ne provient pas d’une base de données
Exemples– Un livre– Un document issu de Word– ..
6
Principales solutions pour gérer du XML
XML documents
Files system
BD Relationnel ou object
XML DBBD
XML- enabled
BDXML- enabled
BD XMLnative
BD XMLnative
Applicationmapping
Applicationmapping
Middleware XML
Middleware XML
7
Stocker et retrouver des données
8
Solutions pour les données
XML documents
XML- enabled database
Mapping
XML structures
(XML schema)Database schema
Mapper la structure XMLUtilisation d’un langage XML Utilisation de XSLT pour transformer la structure XML structure dans une structure attendue par la base de données
databaseMiddlewareMiddleware
9
Mapper les fichiers dans le schéma de la base
Le mapping concerne– Les éléments, attributs et textes– Ignore la structure physique (CDATA sections,
encoding,…) – Ignore les structures logiques (processing
instructions, comments, order,…)
2 approches du mapping– Table-Based mapping– Object-relational mapping
Un ”import et un export” ne crée pas le même fichier (mais les mêmes données)
Un ”import et un export” ne crée pas le même fichier (mais les mêmes données)
10
Table-based mapping
Transférer les données dans les tables relationnelles
<Parametre> <CdParametre>1340</CdParametre> <NomParametre>Nitrates</NomParametre> <StParametre>Validé</StParametre> <DateCreationParametre>1987-06-01</DateCreationParametre> <DateMajParametre>2004-12-20T00:00:00</DateMajParametre> <AuteurParametre>DIREN de bassin ILE-de-FRANCE et CENTRE</AuteurParametre> <LbCourtParametre>NO3-</LbCourtParametre> <LbLongParametre>Nitrates</LbLongParametre> <MethodeAnalyse> <CdMethode>24</CdMethode> <NomMethode>Essais des eaux – Dosage colorimétrique des ions nitrateNF T 90-012 - Février 1952)</NomMethode> </MethodeAnalyse> <MethodeAnalyse> <CdMethode>25</CdMethode> <NomMethode>Essais des eaux - Dosage des nitrates (NF T 90-012 - Août 1975)</NomMethode> </MethodeAnalyse></Parametre>
Parameter
Methods
11
Table-based mapping avec Oracle
En deux opérations
Java OracleXML getXML –conn “jdbc:oracle:thin@localhost:1521:orcl” –user “system/admin” “select * from parametres”
<database> <table> <row> <column1>...</column1> <column2>...</column2> ... </row> <row> ... </row> ... </table> <table> ... </table> ... </database>
OracleXML(XSU)
La structure XML
XSLT
12
Demonstration with Oracle
Need Oracle 8i, 9i or 10g
Creates (or exists) a specific schema (relational)
To show XML documents : Java OracleXML getXML –user “system/admin” “select * from parametres”
To put XML Documents : Java OracleXML putXML –user “system/admin” -fileName “nvpara.xml” “parametres”
13
Object-Relational mapping
Modélisation des données comme des arbres d’objets
<Parametre> <CdParametre>1340</CdParametre> <NomParametre>Nitrates</NomParametre> <StParametre>Validé</StParametre> <DateCreationParametre>1987-06-01</DateCreationParametre> <DateMajParametre>2004-12-20T00:00:00</DateMajParametre> <AuteurParametre>DIREN de bassin ILE-de-FRANCE et CENTRE</AuteurParametre> <LbCourtParametre>NO3-</LbCourtParametre> <LbLongParametre>Nitrates</LbLongParametre> <MethodeAnalyse> <CdMethode>24</CdMethode> <NomMethode>Essais des eaux – Dosage colorimétrique des ions nitrateNF T 90-012 - Février 1952)</NomMethode> </MethodeAnalyse> <MethodeAnalyse> <CdMethode>25</CdMethode> <NomMethode>Essais des eaux - Dosage des nitrates (NF T 90-012 - Août 1975)</NomMethode> </MethodeAnalyse></Parametre>
0..*
0..*MethodeAnalyse
<<complexType>>
PARAMETRE : 1
+++++++++++++
Code du paramètreNom du paramètreStatut du paramètreDate de création du paramètreDate de la dernière mise-à-jour du paramètreAuteur du paramètreLibellé court du paramètreLibellé long du paramètreDéfinition du paramètreRéférences bibliographiques sur le paramètreCommentaires sur le paramètreNom international du paramètreParamètre calculé
: IdentifierType: TextType: TextType: DateType: DateTimeType: TextType: TextType: TextType: TextType: TextType: TextType: TextType: CodeType
<<complexType>>
METHODE : 4
++++++++++
Code de la méthodeNom de la méthodeStatut de la méthodeDate de création de la méthodeDate de la dernière mise-à-jour de la méthodeAuteur de la méthodeRéférences de la méthodeCommentaires sur la méthodeLibellé long de la méthodeNom international de la méthode
: IdentifierType: TextType: TextType: DateType: DateTimeType: TextType: TextType: TextType: TextType: TextType
XML document
Objects view
DatabaseXMLdata
bindingObject/
relational
14
2 solutions– Use Object view– XMLType
Demonstration of object view
Demonstration of XMLTYPE… a native XML in Oracle ?
Very complex to create…
Object-Relational mapping dans Oracle
15
Les langages de requêtes
Permettre d’extraire des données XML d’une base de données
Trois approches :– Un développement spécifique– Un langage SQL amélioré– Un langage XML Query
Parameter
Methods
<Parametre> <CdParametre>1340</CdParametre> <NomParametre>Nitrates</NomParametre> <StParametre>Validé</StParametre> <DateCreationParametre>1987-06-01</DateCreationParametre> <DateMajParametre>2004-12-20T00:00:00</DateMajParametre> <AuteurParametre>DIREN de bassin ILE-de-FRANCE et CENTRE</AuteurParametre> <LbCourtParametre>NO3-</LbCourtParametre> <LbLongParametre>Nitrates</LbLongParametre> <MethodeAnalyse> <CdMethode>24</CdMethode> <NomMethode>Essais des eaux – Dosage colorimétrique des ions nitrateNF T 90-012 - Février 1952)</NomMethode> </MethodeAnalyse> <MethodeAnalyse> <CdMethode>25</CdMethode> <NomMethode>Essais des eaux - Dosage des nitrates (NF T 90-012 - Août 1975)</NomMethode> </MethodeAnalyse></Parametre>
16
Un langage SQL amélioré
Utilisé le SQL avec de nouvelles commandes
SQL / XML : une évolution de ANSI/ISO SQL 2003
Exemple : – select XMLElement("Code",code_parametre) from
parametres
– Select XMLElement("Parametre",XMLElement("CodeParametre",XMLAttributes('SANDRE' as "schemeAgency"),code_parametre),XMLElement("NomParametre",nom_parametre)) from parametres
17
Langage XML Query
Un langage de programmation pour interroger des collections de données XML
XQuery– Développé par W3C (Working Draft in 2005)– Utilisation XPATH– Sources multiples– Spécifique à XML
18
Principes XQUERY
FLWR Expressions
For …. Let ….Where …Return ….
Exemples – let $a := input()/SI_DC return <p>Actually, there are
{ count($a) } networks.</p>– for $a in input()/SI_DC/Bdd where
$a/TypeBdd/CdTypeBanque = '3‘ return $a– for $a in input()/SI_DC/Bdd, $b in input()//BddRdd
where $b/Bdd/CdBdd=$a/CdBdd return <Bdd>{$b/Bdd/CdBdd}{$a/LbBdd}</Bdd>
19
Principes XQUERY
Tri
Fonctions d’update– update replace
input()/SI_DC/DispositifCollecte/MnRdd[.="RBESOUQAP"] with <MnRdd>test</MnRdd>
– for $a in input()//DispositifCollecte return $a/MnRdd
Recherche de texte
20
Stocker et retrouver des documents
21
Principals solutions to store XML documents
XML documents
Files system
Relational databaseobject-oriented database
XML DBXML- enabled
databaseXML- enabled
database
Native XMLdatabase
Native XMLdatabase
Applicationmapping
Applicationmapping
XMLMiddleware
XMLMiddleware
22
Stockage Files system
Très simple
Outils comme grep pour accéder XML
Pas très performant
23
Stocker les fichiers dans un BLOB
XML documents
XML documents(no structured)
Database schema
Mapper les documents XML dans un champ binaire : BLOB
Utilisation des technologies full-text
BINARY
24
Avantages– transactionnel– Sécurité– multiutilisateur– Administration
Quelques produits sont are XML-aware– Elimine le problème des tags– Compatible avec le langage XQUERY
Utilisation des BLOBs
Oracle 9i+Db2
Oracle 9i+Db2
25
Utilisation d’une base native XML
XML documents
XML documents(no structured)
XML native database
Une base de données optimisée pour le stockage XMLUtilise uniquement des XML technologies : XPath, XQuery,…
26
Définition d’une base de données XML native
Un terme marketing de Tamino et non une définition technique.
Définition – Un modèle logique pour des documents XML – XML document = l’unité de base du stockage (= une
ligne en BD relationnel)– Pas de modèle particulier pour le stockage physique
27
Native XML Database Architecture
Text-Based Native XML Database– Store XML as text– File system, BLOB, …– Indexes of all text– Speed advantage when retrieving entire documents– Slow to find pieces of many documents
Model-Based Native XML Database– Store XML documents in an internal object model– Performance similar to text-based – Less slower to find pieces of many documents
Similar to a hierarchical database
Similar to a hierarchical database
28
Features of Native XML Databases
Document Collections– Notion of collection (=table in an relational database)– Hierarchy of collections like directories in an file
system
Query Languages– Support one or more query languages– XPath, XQuery,…
Transactions, Locking and Concurrency– Support transactions– Locking at the level of entire documents– In the future, locking at the level of elements,…
29
Features of Native XML Databases
Application Programming Interface : API– Offer programmatic APIs– Proprietary APIs – XQuery for Java– Most XML Databases offer the ability to execute
HTTP queries
Round-tripping– Store an XML document and get the “same”
document back again
Remote data / repository– Some database include remote data and repository
30
Features of native XML Databases
Indexes– A way to increase query speed– Structural indexes– Full-text indexes
External entity storage– The problem to store external entities
31
An example : Tamino (Software AG)
A server oriented native XML DatabaseFeatures
– Proprietary Model-based storage
– Storage and search data with Query interpreter
– Based from XML Standards
– Connexion with XML softwares
32
An example : Tamino (Software AG)
XML Engine– Native XML storage
Query processors– XQuery– X-Query (!)
XML Datamap– Metadata about XML documents– Describes where the data in a given XML
document is stored
X-Tension– access various external applications
Management / Security
33
Demonstration Tamino
34
An example : eXist http://exist.sourceforge.net/
An OpenSource native XML databaseFeatures– Proprietary Text-based storage (B+-trees and paged
files)– Hierarchical collections– Automatic Indexes– Supports XQuery– Full-text search– Work with HTTP / Java– Support XUpdate– No transaction support
35
Demonstration eXist
36
eXist : example of SANDRE
Store schemas XML published by the SANDRE
Find markup and characteristics
Download schemas
Parse XML documents
37
An example SANDRE
Schema = an XML document
DB Schema = XML database eXist
Search and publish tags = XQuery
38
The market for XML database products
Categories of XML products– Middleware : Software you call from your application to transfer data
between XML documents and databases
– XML-enabled database – Native XML database– XML Servers : XML-aware J2EE servers, Web application servers,
integration engines, and custom servers.
– Wrappers : Software that treats XML documents as a source of relational data. These products typically query XML documents using SQL.
– XML Query engines : Standalone engines that can query XML documents
– XML Data bindings : Products that can bind XML documents to objects. Some of these can also store/retrieve objects from the database.
39
Products : Middleware
Lot of products !
ADO Microsoft DBXML XML DB
XML SQL Utility for Java
Oracle DBXML XML DB
XSQL Servlets Oracle DBXML XML DB
Castor (Java) OpenSource DBXML XML DB
Alliance XML/400 (AS/400)
Patrick Townsend DBXML XML DB
Pear_XML (php) Opensource DBXML XML DB
40
Products : XML-Enabled database
Main databases are XML-Enabled…
… if you buy recent versions
… with important differences in the implementation of XML features
ACCESS (2000+) Microsoft Relational
DB2 IBM Relational
Informix IBM Relational
Oracle 8i,9i, 10g Oracle Relational
SQL Server (2000+) Microsoft Relational
Sybase ASE Sybase Relational
41
Products : Native XML database
Lot of opensource implementations…
Commercial ?
Tamino Sofware AG Proprietary model
Sonic XML Server Sonic software Object-oriented
dbXML OpenSource Proprietary model
eXist OpenSource Text model
Berkeley DB XML OpenSource Key-value
ozone OpenSource Object-oriented
XIndice (Apache) OpenSource Proprietary (Model-based)
42
Products : others
XML Servers– Cocoon (Apache)– ColdFusion
(Macromedia)– Zope (OpenSource)
XQuery engine– BQ-XQuery engine – Web Logic Integration
XQuery engine – DataDirect XQuery™ – XQEngine – XQuery for .NET – XQuery Processor
Data bindings– Castor– JAXB for Java– Jakarta (Apache)– XDK Oracle– XML definition tool
(.net)
Wrappers– SQLServer– DB2 Information
Integrator
43
Advantages / Disadvantages of relational database
Very used !
Rules to organise data (modelling data) and manages the RDMS
Efficient with data
Allow all types of search
SQL standard
Complex (and slow) to find hierarchical data (with join,…)
Bad performance with document
Need engine to generate and understand XML documents
44
Advantages / Disadvantages of XML-Enabled database
A database to store relational AND XML documents
Rules to organise data (modelling data) and manages the DDMS
Efficient with data and to mapping XML Data
SQL extension less new skills to be acquired
Complex to manage
Data type conversion and Null data
Binary data ?
Character Sets
45
Advantages / Disadvantages of native XML database
All is made to manage XML documents
Efficient to store and use XML documents
Performance to find an document or an fraction of document
XQuery / XPath
No mandatory normalization
Problem of referential Integrity
Less good performances when you search pieces of documents
Scability
Tools to develop applications
Others types of data ?
New skills
46
Comparison relational, XML-enabled, Nativeyours needs Relational DB XML-Enabled DB Native XML DB
Database to store very structured data. Complex and different queries / analysis,…Lot of data
The best solutionAllow to answer all
queries with the good average performance
Why not ?
To allow to exchange with XML
formats
?
Database to store XML documents. Always the equivalent queries
XML documents = a binary information
Not optimized
A good solution allowing to use the
same database
The best solution.
Database to store structured data. Lot of import / export in XML exchanges.
A “classical” solution. Need import / export
interface
A good solution A good solution. Allow to have
quickly a database
Database to store structured data and to publish information (HTML, PDF, WebServices,…)
A “classical” solution but need
to develop tools to publish information
The best solution. Store in relational
database but allows the push of XML Documents and transformation
Why not if you succeed in
organizing your data
47
Links about XML Databases
XML family : www.w3c.org
Introduction to native XML database : http://www.xml.com/pub/a/2001/10/31/nativexmldb.html
History of XML database : http://www.eaijournal.com/PDF/XMLMcGoveran.pdf
XQuery : http://www.xml.com/pub/a/2002/10/16/xquery.html
Oracle : http://www.oracle.com/technology/tech/xml/index.html
Tamino : http://www1.softwareag.com/Corporate/products/tamino/default.asp
XIndice : http://xml.apache.org/xindice/
eXist : http://exist.sourceforge.net/
SANDRE : www.sandre.eaufrance.fr
XML-EAU : http://www.sandre.eaufrance.fr/francais/frame/sagen.htm?page=../../xmleau/index.html