xml & dbs - hec unil

54
XML & DBs A.Boukottaya

Upload: others

Post on 19-Apr-2022

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XML & DBs - HEC UNIL

XML & DBs

A.Boukottaya

Page 2: XML & DBs - HEC UNIL

2

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

Page 3: XML & DBs - HEC UNIL

3

«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 ?

Page 4: XML & DBs - HEC UNIL

4

Document XML centré-donnéesDocuments 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)

Page 5: XML & DBs - HEC UNIL

5

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>

Page 6: XML & DBs - HEC UNIL

6

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

Page 7: XML & DBs - HEC UNIL

7

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>

Page 8: XML & DBs - HEC UNIL

8

XML dans des bases de données classiques

Documents centré-données

La granularité est généralement l’élément ou l’attributL’application peut se baser sur l’interrogation pour manipuler les documents

XML structures Schémas de BD

Mapping

Page 9: XML & DBs - HEC UNIL

9

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>

Page 10: XML & DBs - HEC UNIL

10

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 Objet-Relationnel

Classes -> tablesScalar properties -> columnsObject-valued properties -> primary key/foreign key pairs

Page 11: XML & DBs - HEC UNIL

11

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

Page 12: XML & DBs - HEC UNIL

12

Base de données natives XMLTerme 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.

Page 13: XML & DBs - HEC UNIL

13

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.

Page 14: XML & DBs - HEC UNIL

14

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

Page 15: XML & DBs - HEC UNIL

15

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.

Page 16: XML & DBs - HEC UNIL

16

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

Page 17: XML & DBs - HEC UNIL

XML & DBs

Interrogation des documents XML

A.Boukottaya

Page 18: XML & DBs - HEC UNIL

18

Interrogation des documents XML

Lorel

HyOQL

SGMLQL StruQL

W3QL

BeforeXML

XMLXMLQL ….. XQL Xpath

Xquery W3C standard

Page 19: XML & DBs - HEC UNIL

19

descendant

children

sibling

ancestor

parent

root

processing

commentaire

attribut

texte

self

XPath: Nodes & Relationships (1)

Page 20: XML & DBs - HEC UNIL

20

XPath (2)

Page 21: XML & DBs - HEC UNIL

21

XPath (Prédicats) (3)

Page 22: XML & DBs - HEC UNIL

22

XPath (4)

Page 23: XML & DBs - HEC UNIL

23

XPath (AXES)

Page 24: XML & DBs - HEC UNIL

24

Exemple (5)

Page 25: XML & DBs - HEC UNIL

25

XPath (fonctions) (6)

Positions relatives et information localeExemples:– 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

Page 26: XML & DBs - HEC UNIL

26

XPath (fonctions) (7)

Page 27: XML & DBs - HEC UNIL

27

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

Page 28: XML & DBs - HEC UNIL

28

Xquery : Historique

Requêtes primitives sur SGML (Standard Generalized MarkupLanguage)1998: propositions XQL et XML-QL1999: 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

Page 29: XML & DBs - HEC UNIL

29

XQuery: un langage de requêtes pour XML

Document XML généré à partir d’une base de donnéesRequê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 30: XML & DBs - HEC UNIL

30

XQuery: Expressions

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

Page 31: XML & DBs - HEC UNIL

31

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>

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

document(“bib.xml”)

/bib/book/author

//author[last=“Stevens” and first=“W.”]

/bib/book/author[1 TO 2]

//book[ author[last=“Stevens”] BEFORE author[last=“Abiteboul”] ]

Page 32: XML & DBs - HEC UNIL

32

XQuery: Expressions FLWR

Prend quelques expressions

Fait des liens entre eux

Y applique des prédicats

Et construit un nouveau résultat

Page 33: XML & DBs - HEC UNIL

33

XQuery: Expressions FLWR

Page 34: XML & DBs - HEC UNIL

34

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>

Page 35: XML & DBs - HEC UNIL

35

XQuery: Expressions FLWR

Exemple de requête:

for $b IN document("http://www.bn.com/bib.xml")/bib/bookwhere $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 36: XML & DBs - HEC UNIL

36

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>

Page 37: XML & DBs - HEC UNIL

37

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

Page 38: XML & DBs - HEC UNIL

38

XQuery

Result:<result>

<author>Jones</author><title> abc </title><title> def </title>

</result><result>

<author> Smith </author><title> ghi </title>

</result>

Page 39: XML & DBs - HEC UNIL

39

XQuery

count = a (aggregate) function that returns the number of elms

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

Page 40: XML & DBs - HEC UNIL

40

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

Page 41: XML & DBs - HEC UNIL

41

FOR v.s. LET

FOR $x IN document("bib.xml")/bib/book

RETURN <result> $x </result>

Returns:<result> <book>...</book></result><result> <book>...</book></result><result> <book>...</book></result>...

LET $x := document("bib.xml")/bib/book

RETURN <result> $x </result>

Returns:<result> <book>...</book>

<book>...</book><book>...</book>...

</result>

Page 42: XML & DBs - HEC UNIL

42

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>

Page 43: XML & DBs - HEC UNIL

43

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>

Page 44: XML & DBs - HEC UNIL

44

If-Then-Else

FOR $h IN //holding

RETURN <holding>

$h/title,

IF $h/@type = "Journal"

THEN $h/editor

ELSE $h/author

</holding> SORTBY (title)

Page 45: XML & DBs - HEC UNIL

45

Existential Quantifiers

FOR $b IN //book

WHERE SOME $p IN $b//para SATISFIES

contains($p, "sailing")

AND contains($p, "windsurfing")

RETURN $b/title

Page 46: XML & DBs - HEC UNIL

46

Universal Quantifiers

FOR $b IN //book

WHERE EVERY $p IN $b//para SATISFIES

contains($p, "sailing")

RETURN $b/title

Page 47: XML & DBs - HEC UNIL

47

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 childrenIF empty($e/*)

THEN 1ELSE max(depth($e/*)) + 1

}depth(document("partlist.xml"))

Page 48: XML & DBs - HEC UNIL

48

Group-By dans Xquery ??

FOR $b IN document("http://www.bn.com")/bib/book,

$y IN $b/@year

WHERE $b/publisher="Morgan Kaufmann"

RETURN GROUPBY $y

WHERE count($b) > 10

IN <year> $y </year>

SELECT year

FROM Bib

WHERE Bib.publisher="Morgan Kaufmann"

GROUPBY year

HAVING count(*) > 10

with GROUPBY

Equivalent SQL

Page 49: XML & DBs - HEC UNIL

49

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, $yIN <result> $a,

<year> $y </year>,<total> count($b) </total>

</result>

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>

with GROUPBY

Without GROUPBY

Page 50: XML & DBs - HEC UNIL

50

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

Page 51: XML & DBs - HEC UNIL

51

QuiP

by Software A.G.

Page 52: XML & DBs - HEC UNIL

52

Microsoft : démonstration XQuery

Microsoft Corp.

Page 53: XML & DBs - HEC UNIL

53

X-hieve

X-Hieve Corp.

Page 54: XML & DBs - HEC UNIL

54

IPSI - XQ

IPSI démonstrateur