"une base de données" relationnelles

publicité
XML & DBs
A.Boukottaya
«XML, est-il une base de données?»
 XML et les technologies qui lui sont associées est une sorte de
SGBD
–
–
–
–
Le stockage (les documents XML),
Des Schémas (DTDs, XML Schemas, RELAX NG, etc.),
Des langages de requêtes (XQuery, XPath, XQL, etc.),
Des interfaces de programmation (SAX, DOM, JDOM)
Mais:
•Un stockage efficace,
•Les index,
•La sécurité,
•La gestion des transactions,
•L’accès multi-utilisateurs,
•Les déclencheurs (triggers),
•Les requêtes sur plusieurs documents, etc.
2
«Comment choisir sa base de données? »
 Deux catégories de Bases de données:
– Bases de données « XML-enabled »
– Bases de données «Native»
 Application e-commerce (XML format de transport)
– Données à structure régulière
– Données utilisées par des applications non XML
Æ Base de données relationnelle (ou objet) et des techniques de sérialisation
 Site Web (documents orientés texte)
– Données à structure moins régulière
– L’organisation des données est importante (ordre, entités,etc.)
– Recherche sur le contenu, structure
ÆBase de données native XML
Données ou Documents ?
3
Document XML centré-données
 Documents XML centrés-données :
– Utilisés généralement pour le transport et échange de données
– Généralement prévus pour une utilisation par machine
 Caractérisés par :
–
–
–
–
Structure régulière,
Données avec une granularité fine,
Absence ou faible nombre d’éléments mixtes,
Ordre des données non significatif.
 Exemples :
– Ordre d’achats facture,
– Plan et horaire de vols,
– Données scientifiques.
 Peuvent être:
– Originaires de la base (Legacy data)
– Situés en dehors de la base (exemple: données scientifiques collectées par un
système de mesure)
4
Document XML centré-donnée
<SalesOrder SONumber="12345">
<Customer CustNumber="543">
<CustName>ABC Industries</CustName>
<Street>123 Main St.</Street>
<City>Chicago</City>
<State>IL</State>
<PostCode>60609</PostCode>
</Customer>
<OrderDate>981215</OrderDate>
<Item ItemNumber="1">
<Part PartNumber="123">
<Description> <p><b>Turkey wrench:</b><br/>
Stainless steel, one-piece construction, lifetime guarantee.
</p>
</Description>
<Price>9.95</Price>
</Part>
<Quantity>10</Quantity>
</Item>
<Item ItemNumber="2">
<Part PartNumber="456">
<Description> <p><b>Stuffing separator:<b><br />
Aluminum, one-year guarantee.</p>
</Description>
<Price>13.27</Price>
</Part>
<Quantity>5</Quantity>
</Item>
</SalesOrder>
5
Document XML centré-document
 Documents XML centré-documents
– Orientés vers une utilisation humaine aussi bien en génération qu’en
consultation.
 Caractérisés par :
–
–
–
–
Structure moins régulière,
Granularité plus grande, elle peut même coincider avec les document entier
Eléments mixtes nombreux,
L’ordre des éléments et des données est significatif.
 Exemples:
– Emails,
– Messages publicitaires
– Manuels d’utilisation
6
Document XML centré-documents
<Product>
<Intro> The <ProductName>Turkey Wrench</ProductName> from
<Developer>Full Fabrication 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>finest stainless steel</b>. The Readi-grip
rubberized handle quickly adapts to your hands, even in the
greasiest situations. Adjustment is possible through a
variety of custom dials.</Para>
<Para>You can:</Para>
<List>
<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>
</List>
<Para>The turkey wrench costs <b>just $19.99</b> and, if you order
now, comes with a <b>hand-crafted shrimp hammer</b> as a bonus gift.
</Para>
</Description>
</Product>
7
XML dans des bases de données classiques
 Documents centré-données
Mapping
XML structures
Schémas de BD
 La granularité est généralement l’élément ou l’attribut
 L’application peut se baser sur l’interrogation pour manipuler
les documents
8
La correspondance entre schémas de documents et schémas
de base de données
 La correspondance basé sur des tables
– Utilisée le plus souvent par les middle-ware
– Les documents XML sont modélisés comme une ou plusieurs tables
– Les XML documents suivent un format prédéfini
<database>
<table>
<row>
<column1> …
/column1>
</row>
……..
</table>
</database>
9
La correspondance entre schémas de documents et schémas
de base de données
 La correspondance basé sur un modèle Objet-Relationnel
– Utilisée par la plupart des Bases de données « XML-Enabled»
– Les documents XML sont modélisés comme un arbre d’objets
– Le modèle est ensuite mis en correspondance avec la base relationnelle
en utilisant les techniques traditionnelle de correspondance ObjetRelationnel
Classes -> tables
Scalar properties -> columns
Object-valued properties -> primary
key/foreign key pairs
10
La correspondance entre schémas de documents et schémas
de base de données
 Base de données avec des interfaces d’édition XML
 Le marché propose des frameworks permettant d'assurer la transformation des
objets et des données relationnelles en XML. Ces frameworks viennent parfois:
– des éditeurs des bases de données (IBM DB2 XML extender, extensions XML de
Sybase ASE ou de Microsoft SQL Server…etc)
– ou de middlewares transactionnels (Exolab Castor JDO, implémentations JAXB
& JAXP, Apache Axis, BEA Weblogic Workshop…etc).
Problèmes:
•«Round-tripping»: perte de l’information,
•Grand nombre de tables et de colonnes: perte de performance,
•Grand nombre de jointure: perte de vitesse,
•Traîtement XSLT et gestion du midleware: généralement coûteux,
•Maintenance coûteuse (évolution des documents XML),
•Un document qui obéit à plusieurs schémas??
•Un document qui n’obéit pas à un schéma
11
Base de données natives XML
 Terme uniquement « Marketing » proposé par Software AG (Tamino)
 Base de donnée native XML :
– Doit se baser sur un modèle logique du document,
– Le stockage et l’interrogation des documents se base sur ce modèle,
– Le modèle doit au moins considérer les éléments, les attributs et l’ordre des
éléments.
– La mécanique interne de la base de donnée peut être basée sur un modèle
relationnel, objet, textuel, etc.
Une base de données XML native définit un modèle (logique) de document XML [modèle est ici
opposé aux données du document], et stocke et retrouve les documents en fonction de ce modèle. Le
modèle doit au minimum inclure les éléments, les attributs, les PCDATA et l’ordre interne du
document. Quelques exemples de tels modèles sont : le modèle de données de XPath, le glossaire
XML Infoset, et les modèles implicites de DOM et des événements de SAX 1.0.
Le document XML est l’unité fondamentale du stockage (logique) dans une base de données XML
native, tout comme une ligne d’une table constitue l’unité fondamentale du stockage (logique) dans une
base relationnelle.
Une base de données XML native ne repose pas sur un modèle physique particulier pour le stockage.
Elle peut par exemple être bâtie aussi bien sur une base relationnelle, hiérarchique, orientée-objet, ou
bien utiliser des techniques de stockage propriétaires comme des fichiers indexés ou compressés.
12
Base de données natives XML
 Architecture des bases de données native XML
– Base de donnée Native XML basé sur un modèle textuel
• Les documents XML sont stoqués comme texte.
• Des mécanismes d’optimisation appropriés basés sur des modèles interne divers :
relationnel, objet, hiérarchique, etc.
– Base de donnée native basé sur un modèle documentaire
• Construit un modèle objet du document et le stocke sur la base de ce modèle.
• Comment le modèle est stocké dépend de la base.
13
Base de données natives XML
 Caractéristique d’une BD native XML (1)
– Collection de Documents
• Définition de collection de document et lancement d’interrogation sur cette collection.
– Langages d’interrogation
• Tous les bases de données native XML implémentent au moins un langage de requête XML
• XPath, XQL, langages propriétaire, …
• Dans un future proche, l’ensemble des BDs native XML vont supporter le langage Xquery.
– Gestion des transactions et du vérouillage
• Toutes les BDs native XML supporte la gestion des transactions.
• Généralement le vérouillage se fait sur le document entier.
• Dans le future, le vérouillage sera basé sur les éléments ou les fragments
14
Base de données natives XML
 Caractéristique d’une BD native XML (2)
– Application Programming Interfaces : API
• Offre généralement des APIs.
• La majorité sont des APIs propriétaires.
• Possibilité d’interrogation et de réponse via HTTP.
– Restitution
• Restitution des documents stockés sans perte d’information.
• Cette fonction est implémentée généralement au niveau des éléments, attributs, éléments textuels
et ordre des éléments.
– Les Index
• Au niveau de l’élément et l’attribut
– Intégration de données distants
• Quelques bases de données natives XML permettent d’intégrer des données distants d’une autres
base.
15
Un exemple: Tamino (Software AG)
 Base de donnée XML orienté vers les applications eBusiness
 Tamino est une base de données internet permettant de gérer les documents XML
de manière native sans passer par des modèle intermédiaires
 Caractéristiques:
– Format de stockage interne spécifique permettant un accès efficaces aux documents
– Stockage et recherche de données via HTTP et TCP/IP
– Connexion avec les serveurs Web standards
– Intégration de données à partir de BD existantes
– Interface avec des outils XML : Schema, Authoring, etc.
– Basée sur des standards XML
–
Autres Produits:
http://www.rpbourret.com/xml/XMLDatabaseProds.htm
16
XML & DBs
Interrogation des documents XML
A.Boukottaya
Interrogation des documents XML
SGMLQL
StruQL
Before
XML
HyOQL
W3QL
XMLQL
…..
XQL
Xquery
Lorel
Xpath
XML
W3C standard
18
XPath: Nodes & Relationships (1)
ancestor
processing
root
parent
self
sibling
children
attribut
commentaire
descendant
texte
19
XPath (2)
20
XPath (Prédicats) (3)
21
XPath (4)
22
XPath (AXES)
23
Exemple (5)
24
XPath (fonctions) (6)
 Positions relatives et information locale
 Exemples:
–
–
–
–
position() : postion dans le contexte
number() : Nombre de positions possibles dans le contexte
count() : Cardinalité d’un « node-set »
last() : Indicateur de derniere position
 Autres:
– Fonctions booléennes: and, not, or, …
– Operateurs : mod, >, <=, …
– Fonctions de chaîne: contains, substring-before
 Permettent des requêtes de base
– Analyse des contenus et noms de balises/attributs
25
XPath (fonctions) (7)
26
XPath: plus d’exemples











/bank-2/account[balance > 400]
/bank-2/account[balance > 400]/@account-nb
/bank-2/account[@account-nb = ‘A-101’]/balance
/bank-2/account[balance]
/bank-2/account[position() = 2]
/bank-2/account[2]
/bank-1/customer[count(account) > 2]
/bank-2//name
/bank/*/account-nb
/bank//*
/bank-2/account[2] | /bank-2/customer
27
Xquery : Historique
 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
28
XQuery: un langage de requêtes pour XML
 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
29
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
30
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"]
<bib>
document(“bib.xml”)
<book year="1994">
<title>TCP/IP Illustrated</title>
<author>
<last>Stevens</last>
/bib/book/author
//author[last=“Stevens” and
first=“W.”]
<first>W.</first>
</author>
<publisher>AddisonWesley</publisher>
<price> 65.95</price>
/bib/book/author[1 TO 2]
//book[ author[last=“Stevens”]
BEFORE author[last=“Abiteboul”] ]
</book>
31
XQuery: Expressions FLWR
 Prend quelques expressions
 Fait des liens entre eux
 Y applique des prédicats
 Et construit un nouveau résultat
32
XQuery: Expressions FLWR
33
XQuery: Expressions FLWR
<bib>
<book year="1994">
<title>TCP/IP Illustrated</title>
<author><last>Stevens</last><first>W.</first></author>
<publisher>Addison-Wesley</publisher>
<price> 65.95</price>
</book>
<book year="1992">
<title>Advanced Programming in the Unix
environment</title>
<author><last>Stevens</last><first>W.</first></author>
<publisher>Addison-Wesley</publisher>
<price>65.95</price>
</book>
</bib>
34
XQuery: Expressions FLWR
 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>
35
XQuery
Find all book titles published after 1995:
FOR $x IN document("bib.xml")/bib/book
WHERE $x/year > 1995
RETURN $x/title
Result:
<title> abc </title>
<title> def </title>
<title> ghi </title>
36
XQuery
For each author of a book by Morgan Kaufmann, list all
books she published:
FOR $a IN distinct(document("bib.xml")
/bib/book[publisher=“Morgan Kaufmann”]/author)
RETURN <result>
$a,
FOR $t IN /bib/book[author=$a]/title
RETURN $t
</result>
distinct = a function that eliminates duplicates
37
XQuery
Result:
<result>
<author>Jones</author>
<title> abc </title>
<title> def </title>
</result>
<result>
<author> Smith </author>
<title> ghi </title>
</result>
38
XQuery
<big_publishers>
FOR $p IN distinct(document("bib.xml")//publisher)
LET $b := document("bib.xml")/book[publisher = $p]
WHERE count($b) > 100
RETURN $p
</big_publishers>
count = a (aggregate) function that returns the number of elms
39
XQuery
Find books whose price is larger than average:
LET $a=avg(document("bib.xml")/bib/book/@price)
FOR $b in document("bib.xml")/bib/book
WHERE $b/@price > $a
RETURN $b
40
FOR v.s. LET
FOR $x IN document("bib.xml")/bib/book
RETURN <result> $x </result>
LET $x := document("bib.xml")/bib/book
RETURN <result> $x </result>
Returns:
<result> <book>...</book></result>
<result> <book>...</book></result>
<result> <book>...</book></result>
...
Returns:
<result> <book>...</book>
<book>...</book>
<book>...</book>
...
</result>
41
Collections dans XQuery
 Ordered and unordered collections
– /bib/book/author = an ordered collection
– Distinct(/bib/book/author) = an unordered collection
 LET $b = /bib/book Æ $b is a collection
 $a = $b/author Æ a collection (several authors...)
RETURN <result> $a/author </result>
Returns:
<result> <author>...</author>
<author>...</author>
<author>...</author>
...
</result>
42
Sorting dans XQuery
<publisher_list>
FOR $p IN distinct(document("bib.xml")//publisher)
RETURN <publisher> <name> $p/text() </name> ,
FOR $b IN document("bib.xml")//book[publisher = $p]
RETURN <book>
$b/title ,
$b/@price
</book> SORTBY(price DESCENDING)
</publisher> SORTBY(name)
</publisher_list>
43
If-Then-Else
FOR $h IN //holding
RETURN <holding>
$h/title,
IF $h/@type = "Journal"
THEN $h/editor
ELSE $h/author
</holding> SORTBY (title)
44
Existential Quantifiers
FOR $b IN //book
WHERE SOME $p IN $b//para SATISFIES
contains($p, "sailing")
AND contains($p, "windsurfing")
RETURN $b/title
45
Universal Quantifiers
FOR $b IN //book
WHERE EVERY $p IN $b//para SATISFIES
contains($p, "sailing")
RETURN $b/title
46
Fonctions
 “Built-in” fonctions
– max(), min(), sum(), count(), avg()
– distinct(), empty(), contains()
– the normative set has not yet been fixed
 “User-defined” fonctions
– XQuery syntaxe
– recursive
– typed
FUNCTION depth(ELEMENT $e) RETURNS integer
{
-- An empty element has depth 1
-- Otherwise, add 1 to max depth of children
IF empty($e/*)
THEN 1
ELSE max(depth($e/*)) + 1
}
depth(document("partlist.xml"))
47
Group-By dans Xquery ??
FOR $b IN document("http://www.bn.com")/bib/book,
$y IN $b/@year
WHERE $b/publisher="Morgan Kaufmann"
RETURN
Å with GROUPBY
GROUPBY $y
WHERE count($b) > 10
IN <year> $y </year>
SELECT year
Equivalent SQL Æ
FROM Bib
WHERE Bib.publisher="Morgan Kaufmann"
GROUPBY year
HAVING count(*) > 10
48
Group-By dans Xquery ??
FOR $b IN document("http://www.bn.com")/bib/book,
$a IN $b/author,
$y IN $b/@year
RETURN GROUPBY $a, $y
IN <result> $a,
<year> $y </year>,
<total> count($b) </total>
</result>
Without GROUPBY Æ
Å with GROUPBY
FOR $Tup IN distinct(FOR $b IN document("http://www.bn.com")/bib,
$a IN $b/author,
$y IN $b/@year
RETURN <Tup> <a> $a </a> <y> $y </y> </Tup>),
$a IN $Tup/a/node(),
$y IN $Tup/y/node()
LET $b = document("http://www.bn.com")/bib/book[author=$a,@year=$y]
RETURN <result> $a,
<year> $y </year>,
<total> count($b) </total>
</result>
49
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
50
QuiP
 by Software A.G.
51
Microsoft : démonstration XQuery
 Microsoft Corp.
52
X-hieve
 X-Hieve Corp.
53
IPSI - XQ
 IPSI démonstrateur
54
Téléchargement