XML Xquery
Transcript of XML Xquery
17/12/2010
1
XML et les bases de données
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.
• 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 associées constituent une "base de données" ?
• Dans un sens plus large, au sens d’un système de gestion de base de données (SGBD): XML est une sorte de SGBD.
• XML fournit plusieurs caractéristiques des bases de données :
– le stockage (les documents XML),
– les schémas (DTD, XML Schemas, RELAX NG, etc.),
– des langages de requête (XQuery, XPath, XQL, XML-QL, QUILT, etc.),
– des interfaces de programmation (SAX, DOM, JDOM), ...
• Dans le sens d’une réponse négative: des
caractéristiques des BD font défaut à XML:
– un stockage efficace,
– les index,
– la sécurité,
– les transactions,
– l’intégrité des données,
– l’accès multi-utilisateur,
– les déclencheurs (triggers),
– les requêtes sur plusieurs documents, etc.
17/12/2010
2
Données et Documents• Un des facteurs utile dans le choix d’une base de
données: vous utiliserez la base pour stocker des données ou des documents ?
– XML est utilisé simplement en tant que vecteur de données entre la base et une application ?
– Ou XML est-il exploité intégralement, à la manière des documents au format XHTML ?
• C’est ’une question pratique, mais elle importante:
– tous les contenus orientés données partagent un certain nombre de caractéristiques,
– il en est de même pour les contenus orientés document,
– ces caractéristiques influencent la manière dont XML est stocké dans la base de données.
Les contenus orientés données• Les contenus orientés données utilisent XML en tant
que vecteur de données:– sont conçus pour être exploités par une machine,
– il n’est pas important pour l’application ou la base que les données soient stockées en tant que document XML,
– Ex: les ordres de vente, les prévisions de vols, les données scientifiques sont des contenus orientés données.
• Ils sont caractérisés par:– une structure assez régulière,
– des données qui présentent une granularité fine,
– peu ou pas du tout de contenus mixtes,
– l’ordre dans lequel les éléments enfants d’un même parent (les sibling elements) et les PCDATA apparaissent n’est en 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><Rue>123 Main St.</Rue><Ville>Chicago</Ville><Etat>IL</Etat><CodePostal>60609</CodePostal>
</Client><DateOrdre>981215</DateOrdre><Item NumeroItem="1">
<Lot NumeroLot="123"><Description>
<p><b>Turkey wrench:</b><br />Stainless steel, one-piece construction,lifetime guarantee.</p>
</Description><Prix>9.95</Prix>
</Lot><Quantite>10</Quantite>
</Item><Item NumeroItem="2">
<Lot NumeroLot="456"><Description>
<p><b>Stuffing separator:<b><br />Aluminum, one-year guarantee.</p>
</Description><Prix>13.27</Prix>
</Lot><Quantite>5</Quantite>
</Item></OrdreDeVentes>
• de nombreux documents riches en texte sont orientés données.
• Exemple: une page du site Amazon.com affichant des informations à propos d’un livre– La page est largement constituée de texte, la structure de
ce texte est tout à fait régulière : • la majeure partie est commune à toutes les pages qui décrivent
des livres,
• chaque portion de texte spécifique possède une taille limitée,
• la page peut être construite à partir d’un contenu orienté donnéessimple contenant l’information relative à un livre unique.
• En règle générale, tout site Web actuel construisant dynamiquement du code HTML en remplissant un modèle à l’aide de données extraites d’une base peut probablement être remplacé par une série de documents XML orientés données et une ou plusieurs feuilles de style XSL.
17/12/2010
3
• Considérons par exemple le document suivant qui décrit un vol :
• <InformationsVol><Compagnie>ABC Airways</Compagnie>
propose <Nombre>trois</Nombre>vols quotidiens sans escales depuis
<Depart>Dallas</Depart> à destination de<Destination>Fort Worth</Destination>. Les
heures de départ sont<HeureDepart>09:15</HeureDepart>,
<HeureDepart>11:15</HeureDepart>,et <HeureDepart>13:15</HeureDepart>. Les
arrivées interviennent une minute plus tard.</InformationsVol>
• Il peut être généré à partir du document XML suivant et d’une simple feuille de style :
• <Vols><Compagnie>ABC Airways</Compagnie><Depart>Dallas</Depart><Destination>Fort Worth</Destination><Vol>
<HeureDepart>09:15</HeureDepart><HeureArrivee>09:16</HeureArrivee>
</Vol><Vol>
<HeureDepart>11:15</HeureDepart><HeureArrivee>11:16</HeureArrivee>
</Vol><Vol>
<HeureDepart>13:15</HeureDepart><HeureArrivee>13:16</HeureArrivee>
</Vol></Vols>
Les contenus orientés document• Les contenus orientés document sont
habituellement conçus pour être utilisés par des humains– livres, messages électroniques, annonces, ainsi que
presque toutes les pages XHTML écrites à la main
• Caractérisés par:– une structure irrégulière,
– des données qui présentent une granularité plus grande (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.
• Les contenus orientés document sont
ordinairement écrits manuellement en XML,
RTF, PDF ou SGML, puis ils sont convertis en
XML.
• A la différence des contenus orientés données,
ils ne sont pas habituellement localisés dans la
base
17/12/2010
4
• Le document suivant, par exemple, décrit un produit et il est orienté document :
• <Produit><Intro>The <ProductName>Turkey Wrench</ProductName> from <Developer>FullFabrication Labs, Inc.</Developer> is <Summary>like a monkey wrench,but not as big.</Summary></Intro><Description><Para>The turkey wrench, which comes in <i>both right- and left-handed versions (skyhook optional)</i>, is made of the <b>fineststainless steel</b>. The Readi-grip rubberized handle quickly adaptsto your hands, even in the greasiest situations. Adjustment ispossible through a variety of custom dials.</Para><Para>You can:</Para><Liste><Item><Link URL="Order.html">Order your own turkey wrench</Link></Item><Item><Link URL="Wrenches.htm">Read more about wrenches</Link></Item><Item><Link URL="Catalog.zip">Download the catalog</Link></Item></Liste><Para>The turkey wrench costs <b>just $19.99</b> and, if youorder now, comes with a <b>hand-crafted shrimp hammer</b> as abonus gift.</Para></Description>
</Produit>
Données, documents et bases de données
• La distinction entre contenus orientés données et
contenus orientés document n’est pas toujours
claire en pratique.
• Un contenu orienté données comme une facture
peut contenir aussi des données de granularité
forte et irrégulièrement structurées telles que des
descriptions.
• Inversement, un contenu orienté document
comme un manuel utilisateur peut contenir des
données de granularité fine et régulièrement
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 données ou orientés document permet de décider du genre de base de données à utiliser.
• Généralement:
• les données sont stockées dans une base traditionnelle
– cela peut être réalisé à l’aide d’un logiciel intermédiaire (middleware) ou par la base elle-même.
– la base de données est qualifiée de compatible XML (XML-enabled).
• les documents sont stockés dans une base XML native
– soit une base conçue spécialement pour stocker du XML,
– soit dans un système de gestion de contenu (content management system),
– donc une application conçue pour gérer des documents et construite au-dessus d’une base XML native.
• Ces règles ne sont pas absolues:
• Les données, et particulièrement les données semi-structurées, peuvent être stockées dans des bases XML natives
• Inversement, les documents peuvent être stockés dans des bases traditionnelles lorsque peu de caractéristiques spécifiques au format XML sont requises.
• Les frontières entre les bases traditionnelles et les bases XML sont floues:– les bases traditionnelles intègrent des capacités
propres aux bases XML,
– les bases XML natives supportent le stockage de parties de documents dans des bases externes (généralement des bases relationnelles).
17/12/2010
5
Stocker et retrouver des données
• Dans le but de transférer des données entre
les documents XML et une base, il est
nécessaire de faire correspondre le schéma du
document XML (la DTD, les XML Schemas ou
RELAX NG, etc.) avec le schéma de la base.
• Le logiciel de transfert de données est
construit au dessus de cette correspondance.
• Il peut utiliser:– un langage de requête XML (tel que XPath, XQuery, ou un langage
propriétaire)
– ou transférer des données selon la correspondance effectuée (l’équivalent XML d’un SELECT * FROM Table).
• Dans le dernier cas, la structure du document doit coïncider exactement avec la structure attendue par la correspondance réalisée.
• Cela n’arrive pas souvent, les produits qui exploitent cette stratégie sont souvent utilisés avec XSLT. – avant de transférer les données à la base, le document est d’abord
transformé en structure attendue par la 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
• Les correspondances entre les schémas de documents et les schémas de bases de données sont effectuées sur:– les types des éléments,
– les attributs,
– et le texte.
• Souvent ne prend pas en compte:– la structure physique (les entités, les sections CDATA et
les informations concernant l’encodage),
– certaines structures logiques (les instructions de traitement, les commentaires, ainsi que l’ordre dans lequel les éléments et les PCDATA apparaissent dans une filiation).
• Une conséquence: l’aller et le retour d’un
document (round-tripping) conduit souvent à un
autre document
• round-tripping: le stockage de données depuis un
document dans la base et la reconstruction
ultérieure du document à partir des données de la
base
• Deux correspondances sont couramment utilisées
pour faire coïncider un schéma de document XML
avec un schéma de base de données : la
correspondance basée sur des tables et la
correspondance basée un modèle objet relationnel.
17/12/2010
6
La correspondance basée sur des tables• Utilisée par de nombreux logiciels intermédiaires (middleware) qui transfèrent les
données entre un document XML et une base relationnelle.
• Elle modélise les documents sous la forme d’une table unique ou comme un ensemble de tables.
• La structure d’un document XML doit être comme suit :
• <database><table>
<row><column1>...</column1><column2>...</column2>...
</row><row>
...</row>...
</table><table>
...</table>...
</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].
• Selon le logiciel on peut:– spécifier si la colonne de données est stockée en tant
qu’éléments fils ou comme attributs,
– les noms à utiliser pour chaque élément ou attribut,
• Les produits utilisant la correspondance basée sur des tables incluent des métadonnées de table ou de colonne soit au début du document, soit comme attribut de chaque élément table ou colonne.
• Le terme "table" est habituellement interprété de manière vague:– quand on transfère des données depuis une base vers un
document, une "table" peut être constituée par n’importe quel ensemble de résultats,
– quand on transfère des données depuis un document XML vers la base, une "table" peut être une véritable table ou une vue.
• La correspondance basée sur des tables est utile
pour sérialiser des données relationnelles, comme
par exemple pour transférer des données entre deux
bases de données relationnelles.
• Son inconvénient évident est qu’elle ne peut pas être
utilisée pour un document qui n’est pas conforme au
schéma exposé (avant).
La correspondance basée sur un modèle objet
relationnel
• La correspondance basée sur un modèle objet
relationnel est utilisée par toutes les bases de
données relationnelles compatibles XML (XML-
enabled) et quelques produits intermédiaires
(middleware).
• Les données du document sont alors modélisées
comme un arbre d’objets spécifiques aux
données.
17/12/2010
7
• Dans ce modèle, les types d’éléments
possédant des attributs, les contenus
d’éléments ainsi que les contenus mixtes (les
types d’éléments complexes) sont généralement
modélisés comme des classes.
• Les types d’éléments contenant seulement
des PCDATA (les types d’éléments simples), les
attributs et les PCDATA elles-mêmes sont
modélisés comme des propriétés scalaires.
• Le modèle est mis en correspondance avec la
base relationnelle en utilisant des techniques
de correspondance traditionnelles ou des vues
d’objets en SQL3:
– les classes correspondent à des tables,
– les propriétés scalaires à des colonnes,
– les propriétés de type objet/valeur correspondent
à des paires du genre clé principale/clé secondaire.
• Le modèle objet utilisé ici n’est pas le Modèle Objet de Document (DOM - Document Object Model).
• Le DOM modélise le document lui-même et il est le même pour tous les documents XML,
• Le modèle décrit ici modélise les données du document et il est ainsi différent pour chaque ensemble de documents XML conformes à un schéma XML donné.
• Par convention, l’expression schéma XML avec un "s" renvoie à n’importe quel schéma, que ce soit une DTD, un document XML Schema
• XML Schema avec un "S" capital se réfère au langage XML Schema du W3C.
• La question de savoir si les objets du modèle
sont effectivement instanciés dépend du
produit:
– certains produits autorisent la génération des
classes du modèle et l’on utilise ensuite les objets
instanciés à partir de ces classes dans l’application.
• les données sont transférées entre le document XML et
ces objets, puis entre ces objets et la base.
– d’autres produits utilisent les objets uniquement
comme des outils qui permettent de visualiser la
correspondance et le transfert des données
directement entre le document XML et la base.
17/12/2010
8
• La liaison entre les documents XML et les
objets est appelée habituellement liaison des
données XML (XML data binding)
• Plusieurs produits implémentent la liaison des
données XML, et beaucoup d’entre eux
peuvent transférer les données entre les
objets et la base.
Les langages de requête: Xquery
• Requêtes primitives sur SGML (Standard Generalized Markup Language)
• 1998: propositions XQL et XML-QL
• 1999: création du XML Query WG (Working Group)
• Juin 2001: XQuery 1.0 WD (Working Draft)
• Buts du XML Query WG
– 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
17/12/2010
9
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
17/12/2010
10
XQuery: Expressions de cheminement
• Trouver les occurrences de figure avec le caption «Tree Frogs»
dans le deuxième chapter du document XML «zoo.xml»
document("zoo.xml")/chapter[2]//figure[caption = "Tree
Frogs"]
XQuery: Expressions FLWR
• Prend quelques expressions
• Fait des liens entre eux
• Y applique des prédicats
• 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>
17/12/2010
11
• Result:
• <result>
• <author>Jones</author>
• <title> abc </title>
• <title> def </title>
• </result>
• <result>
• <author> Smith </author>
• <title> ghi </title>
• </result>
17/12/2010
12
• Summury:
17/12/2010
13
17/12/2010
14
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