xml xquery

14
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.

Upload: louka87

Post on 02-Jul-2015

93 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 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.

Page 2: XML Xquery

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.

Page 3: XML Xquery

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

Page 4: XML Xquery

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).

Page 5: XML Xquery

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.

Page 6: XML Xquery

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.

Page 7: XML Xquery

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.

Page 8: XML Xquery

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

Page 9: XML Xquery

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

Page 10: XML Xquery

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>

Page 11: XML Xquery

17/12/2010

11

• Result:

• <result>

• <author>Jones</author>

• <title> abc </title>

• <title> def </title>

• </result>

• <result>

• <author> Smith </author>

• <title> ghi </title>

• </result>

Page 12: XML Xquery

17/12/2010

12

• Summury:

Page 13: XML Xquery

17/12/2010

13

Page 14: XML Xquery

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