Vous êtes sur la page 1sur 14

17/12/2010

XML est-il une base de données ?


• Un document XML peut être considéré comme une
base de donnés uniquement au sens le plus strict
de l’expression: c’est une collection de données.
XML et les bases de données • En tant que format de "base de données", XML est
auto-descriptif.
– Les balises décrivent la structure et le type des noms des
données,
– il est portable (codé en Unicode),
– il peut décrire les données sous la forme d’un arbre ou d’un
graphe.
• Il présente aussi quelques inconvénients. Il est
verbeux, et l’accès aux données est lent à cause de
l’analyse (parsing) et de la conversion du texte.

• Est-ce que XML et les technologies qui lui sont • Dans le sens d’une réponse négative: des
associées constituent une "base de données" ?
caractéristiques des BD font défaut à XML:
• Dans un sens plus large, au sens d’un système de
gestion de base de données (SGBD): XML est une – un stockage efficace,
sorte de SGBD. – les index,
• XML fournit plusieurs caractéristiques des bases – la sécurité,
de données : – les transactions,
– le stockage (les documents XML), – l’intégrité des données,
– les schémas (DTD, XML Schemas, RELAX NG, etc.),
– l’accès multi-utilisateur,
– des langages de requête (XQuery, XPath, XQL, XML-QL,
QUILT, etc.), – les déclencheurs (triggers),
– des interfaces de programmation (SAX, DOM, JDOM), – les requêtes sur plusieurs documents, etc.
...

1
17/12/2010

Données et Documents Les contenus orientés données


• Un des facteurs utile dans le choix d’une base de • Les contenus orientés données utilisent XML en tant
données: vous utiliserez la base pour stocker des que vecteur de données:
données ou des documents ? – sont conçus pour être exploités par une machine,
– XML est utilisé simplement en tant que vecteur de – il n’est pas important pour l’application ou la base que les
données entre la base et une application ? données soient stockées en tant que document XML,
– Ou XML est-il exploité intégralement, à la manière des – Ex: les ordres de vente, les prévisions de vols, les données
documents au format XHTML ? scientifiques sont des contenus orientés données.
• C’est ’une question pratique, mais elle importante: • Ils sont caractérisés par:
– une structure assez régulière,
– tous les contenus orientés données partagent un certain
nombre de caractéristiques, – des données qui présentent une granularité fine,
– peu ou pas du tout de contenus mixtes,
– il en est de même pour les contenus orientés document,
– l’ordre dans lequel les éléments enfants d’un même parent
– ces caractéristiques influencent la manière dont XML est (les sibling elements) et les PCDATA apparaissent n’est en
stocké dans la base de données. général pas significatif,

• À titre d’exemple, l’ordre de ventes suivant est orienté données :


<OrdreDeVentes NumeroOrdreDeVentes="12345">
<Client NumeroClient="543">
<NomClient>ABC Industries</NomClient> • de nombreux documents riches en texte sont orientés
<Rue>123 Main St.</Rue>
<Ville>Chicago</Ville>
données.
<Etat>IL</Etat>
<CodePostal>60609</CodePostal> • Exemple: une page du site Amazon.com affichant des
</Client>
<DateOrdre>981215</DateOrdre>
informations à propos d’un livre
<Item NumeroItem="1">
<Lot NumeroLot="123">
– La page est largement constituée de texte, la structure de
<Description>
<p><b>Turkey wrench:</b><br />
ce texte est tout à fait régulière :
Stainless steel, one-piece construction, • la majeure partie est commune à toutes les pages qui décrivent
lifetime guarantee.</p> des livres,
</Description>
<Prix>9.95</Prix> • chaque portion de texte spécifique possède une taille limitée,
</Lot>
<Quantite>10</Quantite> • la page peut être construite à partir d’un contenu orienté données
</Item> simple contenant l’information relative à un livre unique.
<Item NumeroItem="2">
<Lot NumeroLot="456"> • En règle générale, tout site Web actuel construisant
<Description>
<p><b>Stuffing separator:<b><br /> dynamiquement du code HTML en remplissant un modèle
Aluminum, one-year guarantee.</p>
</Description>
à l’aide de données extraites d’une base peut
<Prix>13.27</Prix> probablement être remplacé par une série de documents
</Lot>
<Quantite>5</Quantite> XML orientés données et une ou plusieurs feuilles de style
</Item>
</OrdreDeVentes>
XSL.

2
17/12/2010

• Il peut être généré à partir du document XML suivant et d’une


• Considérons par exemple le document suivant qui simple feuille de style :
décrit un vol : • <Vols>
• <InformationsVol> <Compagnie>ABC Airways</Compagnie>
<Depart>Dallas</Depart>
<Compagnie>ABC Airways</Compagnie> <Destination>Fort Worth</Destination>
propose <Nombre>trois</Nombre> <Vol>
vols quotidiens sans escales depuis <HeureDepart>09:15</HeureDepart>
<HeureArrivee>09:16</HeureArrivee>
<Depart>Dallas</Depart> à destination de </Vol>
<Destination>Fort Worth</Destination>. Les <Vol>
<HeureDepart>11:15</HeureDepart>
heures de départ sont <HeureArrivee>11:16</HeureArrivee>
<HeureDepart>09:15</HeureDepart>, </Vol>
<HeureDepart>11:15</HeureDepart>, <Vol>
<HeureDepart>13:15</HeureDepart>
et <HeureDepart>13:15</HeureDepart>. Les <HeureArrivee>13:16</HeureArrivee>
arrivées interviennent une minute plus tard. </Vol>
</InformationsVol> </Vols>

Les contenus orientés document • Les contenus orientés document sont


• Les contenus orientés document sont
habituellement conçus pour être utilisés par des ordinairement écrits manuellement en XML,
humains RTF, PDF ou SGML, puis ils sont convertis en
– livres, messages électroniques, annonces, ainsi que XML.
presque toutes les pages XHTML écrites à la main
• Caractérisés par: • A la différence des contenus orientés données,
– une structure irrégulière, ils ne sont pas habituellement localisés dans la
– des données qui présentent une granularité plus grande base
(c’est-à-dire que la plus petite unité indépendante de
donnée peut être située au niveau d’un élément mêlant
différents contenus),
– beaucoup de contenus mixtes,
– L’ordre dans lequel les éléments enfants d’un même
parent et les PCDATA apparaissent est presque toujours
significatif.

3
17/12/2010

• Le document suivant, par exemple, décrit un produit et il est orienté document :


Données, documents et bases de données
• <Produit>
<Intro>
• La distinction entre contenus orientés données et
The <ProductName>Turkey Wrench</ProductName> from <Developer>Full
Fabrication Labs, Inc.</Developer> is <Summary>like a monkey wrench,
contenus orientés document n’est pas toujours
but not as big.</Summary>
</Intro>
claire en pratique.
<Description>
<Para>The turkey wrench, which comes in <i>both right- and left- • Un contenu orienté données comme une facture
handed versions (skyhook optional)</i>, is made of the <b>finest
stainless steel</b>. The Readi-grip rubberized handle quickly adapts peut contenir aussi des données de granularité
to your hands, even in the greasiest situations. Adjustment is
possible through a variety of custom dials.</Para> forte et irrégulièrement structurées telles que des
<Para>You can:</Para>
<Liste>
<Item><Link URL="Order.html">Order your own turkey wrench</Link></Item>
descriptions.
<Item><Link URL="Wrenches.htm">Read more about wrenches</Link></Item>
<Item><Link URL="Catalog.zip">Download the catalog</Link></Item> • Inversement, un contenu orienté document
</Liste>
<Para>The turkey wrench costs <b>just $19.99</b> and, if you comme un manuel utilisateur peut contenir des
order now, comes with a <b>hand-crafted shrimp hammer</b> as a
bonus gift.</Para> données de granularité fine et régulièrement
</Description>
</Produit> structurées, telles que le nom de l’auteur ou une
date de révision (métadonnées).

• la caractérisation de vos contenus comme orientés • Ces règles ne sont pas absolues:
données ou orientés document permet de décider du
genre de base de données à utiliser. • Les données, et particulièrement les données
semi-structurées, peuvent être stockées dans des
• Généralement: bases XML natives
• les données sont stockées dans une base traditionnelle • Inversement, les documents peuvent être stockés
– cela peut être réalisé à l’aide d’un logiciel intermédiaire dans des bases traditionnelles lorsque peu de
(middleware) ou par la base elle-même. caractéristiques spécifiques au format XML sont
– la base de données est qualifiée de compatible XML (XML- requises.
enabled).
• Les frontières entre les bases traditionnelles et les
• les documents sont stockés dans une base XML native bases XML sont floues:
– soit une base conçue spécialement pour stocker du XML, – les bases traditionnelles intègrent des capacités
– soit dans un système de gestion de contenu (content propres aux bases XML,
management system), – les bases XML natives supportent le stockage de parties
– donc une application conçue pour gérer des documents et de documents dans des bases externes (généralement des
construite au-dessus d’une base XML native. bases relationnelles).

4
17/12/2010

Stocker et retrouver des données • Il peut utiliser:


– un langage de requête XML (tel que XPath, XQuery, ou un langage
propriétaire)
• Dans le but de transférer des données entre – ou transférer des données selon la correspondance effectuée
les documents XML et une base, il est (l’équivalent XML d’un SELECT * FROM Table).
• Dans le dernier cas, la structure du document doit coïncider
nécessaire de faire correspondre le schéma du exactement avec la structure attendue par la correspondance
document XML (la DTD, les XML Schemas ou réalisée.
• Cela n’arrive pas souvent, les produits qui exploitent cette
RELAX NG, etc.) avec le schéma de la base. stratégie sont souvent utilisés avec XSLT.
– avant de transférer les données à la base, le document est d’abord
• Le logiciel de transfert de données est transformé en structure attendue par la correspondance,
construit au dessus de cette correspondance. – ensuite seulement les données sont transférées.
– De la même manière, après avoir effectué un transfert de données
depuis la base, le document résultant est transformé selon la
structure attendue par l’application.

Correspondance entre les schémas de documents et


les schémas de bases de données • Une conséquence: l’aller et le retour d’un
• Les correspondances entre les schémas de document (round-tripping) conduit souvent à un
documents et les schémas de bases de données autre document
sont effectuées sur: • round-tripping: le stockage de données depuis un
– les types des éléments, document dans la base et la reconstruction
– les attributs,
– et le texte.
ultérieure du document à partir des données de la
• Souvent ne prend pas en compte: base
– la structure physique (les entités, les sections CDATA et • Deux correspondances sont couramment utilisées
les informations concernant l’encodage), pour faire coïncider un schéma de document XML
– certaines structures logiques (les instructions de
traitement, les commentaires, ainsi que l’ordre dans lequel avec un schéma de base de données : la
les éléments et les PCDATA apparaissent dans une correspondance basée sur des tables et la
filiation).
correspondance basée un modèle objet relationnel.

5
17/12/2010

La correspondance basée sur des tables


• Utilisée par de nombreux logiciels intermédiaires (middleware) qui transfèrent les • Selon le logiciel on peut:
données entre un document XML et une base relationnelle.
– spécifier si la colonne de données est stockée en tant
• Elle modélise les documents sous la forme d’une table unique ou comme un ensemble
de tables.
qu’éléments fils ou comme attributs,
• La structure d’un document XML doit être comme suit : – les noms à utiliser pour chaque élément ou attribut,
• <database> • Les produits utilisant la correspondance basée sur des
<table>
<row>
tables incluent des métadonnées de table ou de
<column1>...</column1> colonne soit au début du document, soit comme
<column2>...</column2> attribut de chaque élément table ou colonne.
...
</row> • Le terme "table" est habituellement interprété de
<row> manière vague:
...
</row> – quand on transfère des données depuis une base vers un
... document, une "table" peut être constituée par n’importe
</table> quel ensemble de résultats,
<table>
... – quand on transfère des données depuis un document XML
</table> vers la base, une "table" peut être une véritable table ou
... une vue.
</database>
• [l’élément <database> et les éléments supplémentaires <table> n’existent pas dans le
cas où la modélisation est effectuée à l’aide d’une table unique].

La correspondance basée sur un modèle objet


relationnel
• La correspondance basée sur des tables est utile
pour sérialiser des données relationnelles, comme • La correspondance basée sur un modèle objet
par exemple pour transférer des données entre deux relationnel est utilisée par toutes les bases de
bases de données relationnelles. données relationnelles compatibles XML (XML-
• Son inconvénient évident est qu’elle ne peut pas être enabled) et quelques produits intermédiaires
utilisée pour un document qui n’est pas conforme au (middleware).
schéma exposé (avant). • Les données du document sont alors modélisées
comme un arbre d’objets spécifiques aux
données.

6
17/12/2010

• Dans ce modèle, les types d’éléments • Le modèle est mis en correspondance avec la
possédant des attributs, les contenus base relationnelle en utilisant des techniques
d’éléments ainsi que les contenus mixtes (les de correspondance traditionnelles ou des vues
types d’éléments complexes) sont généralement d’objets en SQL3:
modélisés comme des classes. – les classes correspondent à des tables,
• Les types d’éléments contenant seulement – les propriétés scalaires à des colonnes,
des PCDATA (les types d’éléments simples), les – les propriétés de type objet/valeur correspondent
attributs et les PCDATA elles-mêmes sont à des paires du genre clé principale/clé secondaire.
modélisés comme des propriétés scalaires.

• Le modèle objet utilisé ici n’est pas le Modèle • La question de savoir si les objets du modèle
Objet de Document (DOM - Document Object sont effectivement instanciés dépend du
Model).
• Le DOM modélise le document lui-même et il est produit:
le même pour tous les documents XML, – certains produits autorisent la génération des
• Le modèle décrit ici modélise les données du classes du modèle et l’on utilise ensuite les objets
document et il est ainsi différent pour chaque instanciés à partir de ces classes dans l’application.
ensemble de documents XML conformes à un • les données sont transférées entre le document XML et
schéma XML donné. ces objets, puis entre ces objets et la base.
• Par convention, l’expression schéma XML avec un – d’autres produits utilisent les objets uniquement
"s" renvoie à n’importe quel schéma, que ce soit
une DTD, un document XML Schema comme des outils qui permettent de visualiser la
correspondance et le transfert des données
• XML Schema avec un "S" capital se réfère au
langage XML Schema du W3C. directement entre le document XML et la base.

7
17/12/2010

Les langages de requête: Xquery


• La liaison entre les documents XML et les
• Requêtes primitives sur SGML (Standard
objets est appelée habituellement liaison des Generalized Markup Language)
données XML (XML data binding) • 1998: propositions XQL et XML-QL
• Plusieurs produits implémentent la liaison des • 1999: création du XML Query WG (Working Group)
données XML, et beaucoup d’entre eux • Juin 2001: XQuery 1.0 WD (Working Draft)
peuvent transférer les données entre les • Buts du XML Query WG
objets et la base. – Modèle de données pour les documents XML
– Des opérateurs de requêtes pour ce modèle de
données
– Un langage de requêtes basé sur ces opérateurs de
requêtes

• Document XML généré à partir d’une base de


données
• Requêtes sur sur le document XML:
– «Filtrage de données XML»
– Création de sous-structures de données XML
(résultat.xml)
• XQuery est un langage de requêtes fonctionnel
où la requête est représentée sous la forme
d’une expression.
• Basé sur OQL, SQL, XML-QL, XPath.
• Compatible avec la syntaxe XML

8
17/12/2010

XQuery: Expressions
• Expression de cheminement (XPATH): /a//b[c = 5]
• Constructeur d’élément: <a> ... </a>
• Expressions FLWR: FOR ... LET ... WHERE ...
RETURN
• Opérateurs et Fonctions: x + y, -z, foo(x, y)
• Expressions conditionnelles: IF ... THEN ... ELSE
• Conditions «Some» et «Every»: EVERY var IN expr
SATISFIES expr
• Variables et constantes : $x, 5
• Trie: expr SORTBY (expr ASCENDING , ... )
• INSERT, REPLACE, DELETE

9
17/12/2010

XQuery: Expressions de cheminement XQuery: Expressions FLWR


• Trouver les occurrences de figure avec le caption «Tree Frogs» • Prend quelques expressions
dans le deuxième chapter du document XML «zoo.xml» • Fait des liens entre eux
document("zoo.xml")/chapter[2]//figure[caption = "Tree • Y applique des prédicats
Frogs"] • Et construit un nouveau résultat

• Exemple de requête:
• for $b IN
document("http://www.bn.com/bib.xml")/bib/book
where $b/publisher/text() = "Addison-Wesley"
and $b/@year = « 1994 » return $b/title
Réponse obtenue de la requête:
<title>TCP/IP Illustrated</title>

10
17/12/2010

• Result:
• <result>
• <author>Jones</author>
• <title> abc </title>
• <title> def </title>
• </result>
• <result>
• <author> Smith </author>
• <title> ghi </title>
• </result>

11
17/12/2010

• Summury:

12
17/12/2010

13
17/12/2010

Implémentation de XQuery
• La majorité des constructeur commence déjà
à proposer des implémentations de Xquery
• Intégration dans l’ensemble des BDs avec
interface XML
– – Classique
– – Native XML
• Plusieurs démonstrateurs existent permettant
de valider les exemples testes proposés par le
W3C

14