430 likes | 514 Views
GENIE MULTIMEDIA XML & BDs. Christine Vanoirbeek EPFL – IC – CGC Bâtiment BC (Station 14) 1015 LAUSANNE christine.vanoirbeek@epfl.ch. import java.io.*; import java.text.*; import javax.servlet.http.*; public class cvcollection { ……………. Application.
E N D
GENIE MULTIMEDIA XML & BDs Christine Vanoirbeek EPFL – IC – CGC Bâtiment BC (Station 14) 1015 LAUSANNE christine.vanoirbeek@epfl.ch
import java.io.*; import java.text.*; import javax.servlet.http.*; public class cvcollection { …………….. Application Manipulation des documents XML Parseurs & APIs XML Files Query languages XML DB
«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.
«Comment choisir sa base de données? » • 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 ?
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)
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,lifetimeguarantee. </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>
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
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>
XML file Files system ? BLOB Classical DB Classical DB Native XML DB Où stocker les documents XML ? • Le choix dépend : • Du type des document : data-centric ou document-centric, • De la nature des manipulations à réaliser par la suite, • De la granularité nécessaire XML
XML dans des bases de données classiques • Documents centré-documents • La granularité est le document entier • Une application doit recourir au parsing classique par la suite de l’extraction du document BLOB XML document BD classique
XML dans des bases de données classiques • Documents centré-données • La granularité est généralement l’élément ou l’attribut • L’application peut se baser sur l’interrogation pour manipuler les documents Mapping XML structures Schémas de BD
La correspondance entre schémas de documents et schémas de base de données • La correspondance basé sur des tables/ sur les objets <xs:schema id="SomeID" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="MyDataSet" msdata:IsDataSet="true"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="customers" > <xs:complexType > <xs:sequence> <xs:element name="CustomerID" type="xs:integer" minOccurs="0" /> <xs:element name="CompanyName" type="xs:string" minOccurs="0" /> <xs:element name="Phone" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> Customers (CustomerID , CompanyName, Phone)
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
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.
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.
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
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.
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 • Exemples: http://www.service-architecture.com/products/xml_databases.html • http://www.rpbourret.com/xml/XMLDatabaseProds.htm
Conclusion • Convergence BD – Documents • XML : une technologie qui commence à être mûre • Des standards existent et les outils suivent
SGMLQL StruQL Before XML HyOQL W3QL Lorel Xpath XMLQL ….. XQL XML Xquery W3C standard Interrogation des documents XML
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 XMLQuery 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 • Compatible avec la syntaxe XML
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
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”] ]
XQuery: Expressions FLWR • Prend quelques expressions • Fait des liens entre eux • Y applique des prédicats • Et construit un nouveau résultat
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>
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>
XQuery Find all book titles published after 1995: FOR$xINdocument("bib.xml")/bib/book WHERE$x/year > 1995 RETURN$x/title Result: <title> abc </title> <title> def </title> <title> ghi </title>
XQuery For each author of a book by Morgan Kaufmann, list all books she published: FOR$aINdistinct(document("bib.xml")/bib/book[publisher=“Morgan Kaufmann”]/author) RETURN <result> $a, FOR$tIN /bib/book[author=$a]/title RETURN$t </result> distinct = a function that eliminates duplicates
XQuery Result: <result> <author>Jones</author> <title> abc </title> <title> def </title> </result> <result> <author> Smith </author> <title> ghi </title> </result>
XQuery <big_publishers> FOR$pINdistinct(document("bib.xml")//publisher) LET$b := document("bib.xml")/book[publisher = $p] WHEREcount($b) > 100 RETURN$p </big_publishers> count = a (aggregate) function that returns the number of elms
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
XQuery Summary: • FOR-LET-WHERE-RETURN = FLWR FOR/LET Clauses List of tuples WHERE Clause List of tuples RETURN Clause Instance of Xquery data model
FOR v.s. LET FOR$xINdocument("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>
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...) Returns: <result> <author>...</author> <author>...</author> <author>...</author> ... </result> RETURN <result> $a/author </result>
Collections dans XQuery What about collections in expressions ? • $b/@price list of n prices • $b/@price * 0.7 list of n numbers • $b/@price * $b/@quantity list of n x m numbers ?? • $b/@price * ($b/@quant1 + $b/@quant2) $b/@price * $b/@quant1 + $b/@price * $b/@quant2 !!
Sorting dans XQuery <publisher_list> FOR$pINdistinct(document("bib.xml")//publisher) RETURN <publisher> <name> $p/text() </name> , FOR$bIN document("bib.xml")//book[publisher = $p] RETURN <book> $b/title , $b/@price </book> SORTBY(priceDESCENDING) </publisher> SORTBY(name) </publisher_list>
If-Then-Else FOR$h IN //holding RETURN <holding> $h/title, IF$h/@type = "Journal" THEN$h/editor ELSE$h/author </holding> SORTBY (title)
Existential Quantifiers FOR$b IN //book WHERESOME$p IN $b//paraSATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN$b/title
Universal Quantifiers FOR$b IN //book WHEREEVERY$p IN $b//paraSATISFIES contains($p, "sailing") RETURN$b/title
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"))
Group-By dans Xquery ?? FOR$bIN document("http://www.bn.com")/bib/book, $yIN$b/@year WHERE$b/publisher="Morgan Kaufmann" RETURNGROUPBY $y WHERE count($b) > 10 IN <year> $y </year> with GROUPBY SELECT year FROM Bib WHERE Bib.publisher="Morgan Kaufmann" GROUPBY year HAVING count(*) > 10 Equivalent SQL
Group-By dans Xquery ?? FOR $b IN document("http://www.bn.com")/bib/book,$a IN $b/author,$y IN $b/@yearRETURN GROUPBY $a, $y IN <result> $a, <year> $y </year>, <total> count($b) </total> </result> 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> Without GROUPBY
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