XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML XML et les bases de données Mihaela JUGANARU-MATHIEU [email protected] École Nationale Supérieure des Mines de St Etienne février 2012 Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML XML - un format de représentation de l’information XML ou autre langage dérivé : SVG, MathML, SMIL, RSS, EDI-XML, ebXML, OWL, RDF etc. Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML XML - modèle de représentation de données C’est un modèle très différent du modèle EAR, modèle relationnel ou modèle par objets (diagramme de classe en UML). Les données qui se prêtent à cette modélisation ont : un degré de régularité assez variable (des composants ou des attributs peuvent manquer ou être en nombre très variable) une certaine "sérialisation" (ordre) parmi les composants une granularité évidente (un element peut faire partie d’un autre) On parle de données semi-structurées. Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple : pour chaque type de document papier d’une entreprise (contrat, facture, etc.) on peut facilement proposer une DTD ou une XML Schema. Domaines : informations médicales et biologiques, informations de type document, informations de biologie moléculaire et de représentation du génome. Bibliographie : Serge Abiteboul, Peter Buneman et Dan Suciu. Data on the Web : From Relations to Semistructured Data and XML. Morgan Kaufmann, 2001. Antoine Lonjon et Jean-Jacques Thomasson Modélisation XML, Eyrolles, 2006. La modélisation XML des données se prête bien aussi à l’usage des techniques de type "design pattern" et tire pleinement profit des Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Avantages clairs de XML : décrit des informations de façon non-ambigue et supporte bien n’importe quelle mise en page ultérieure (séparation contenu structure) excellent compromis pour des informations orientées données et pour celles orientées contenu bon vecteur pour échanger des informations entre SI, logiciels ou BD ** un document XML = une base de données ? une "collection" de documents XML = une base de données ? Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Plusieurs questions : comment garder XML dans une base de données “classique” ? quels autres types de base de données pour contenir du XML ? comment explorer les flux XML contenus ? comment assurer le même fichier XML en entrée et en sortie ? Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Base de donnés contenant du XML : solution "simple" : garder XML dans le modèle relationnel solution "naïve" : garder XML comme attribut de table de type LOB (Large Object) - CLOB ou BLOB admettre XML comme type de base base de données étendues base de données native XML Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Rappel des fonctionnalités qu’un SGBD doit assurer : la définition des bases de données et des “objets” contenus la manipulation des données la confidentialité l’intégrité des données la sécurité de fonctionnement la gestion des accès concurrents Ces fonctionnalités doivent être assurées pour tout SGBD, mais le modèle de représentation de données influent grandement sur leur mise en place Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Caractéristiques des documents XML : les objets XML nécessitent moins de modifications (que les enregistrements des tables). consulter XML signifie avoir soit le contenu complet, soit une partie du document présenter un résultat : forme textuelle ou autre (XSLT) valider un document XML : par rapport à sa description (DTD, XML XSchema) mais moins par rapport à d’autres documents XML (clé étrangère ?) les documents XML peuvent être partitionnés de diverses manière en collections Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Les fonctionnalités d’un SGBD supportant XML : la définition des bases de données et des “objets” contenus : documents, collections, procédures la manipulation des données : validation comparaison entre documents : Xdiff interrogation : langages de type XPath, Xquery traitements de type XSLT, transformation XSL-FO, etc. modification : insertion, suppression, mise à jour ( ?) recherche d’information fouille (à la rigueur) la confidentialité - les utilisateurs définissent des droits d’accès à des collections,mais pas à des éléments de documents l’intégrité des données - pas plus que ID et IDREF à l’intérieur d’un même document la sécurité de fonctionnement - classique la gestion des accès concurrents ( ?) Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Soit le document : <?xml version="1.0"?> <biblio> <livre> <titre>Germinal</titre> <auteur>E. Zola</auteur> </livre> <livre> <titre>Comprendre XSLT</titre> <auteur>B. Amann</auteur> <auteur>P. Rigaux</auteur> <editeur>O’Reilly</editeur> </livre> </biblio> Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML L’arbre associé : Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Si on connait le sens (la sémantique) des données enregistrées, pour ce type de document on peut proposer les 2 tables : LIVRE : titre Germinal Comprendre XSLT AUTEUR : nom_auteur E. Zola B. Amann P. Rigaux code_livre l1 l2 editeur NULL O’Reilly code_livre l1 l2 l2 Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple : trouver le titres des livres d’E. Zola : En XQuery for $i in doc("biblio.xml")/biblio/livre where $i/auteur = "E. Zola" return $i/titre En SQL avec une seule jointure sur les deux tables : SELECT L.* FROM LIVRE L, AUTEUR A WHERE L.CODE_LIVRE = A.CODE_LIVRE AND A.AUTEUR = ’E. Zola’; Défauts : la méthode n’est pas générique, car elle impose la connaissance de la sémantique des balises et l’augmentation du nombre de tables (même ordre que le nombre de balises). Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Représentation par structure/valeur Pour représenter n’importe quel document XML deux tables suffissent : une qui garde la structure arborescente avec le numéro du nœud, sa balise, son type, son père et le numéro d’ordre parmi ses frères. une table qui garde les valeurs des feuilles Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Représentation : Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Même interrogation en SQL : 5 tables de sélection et 4 conditions de jointure select V2.val from R L, R A, R T, S V1, S V2 where L.lab=’livre’ and A.lab=’auteur’ and T.lab=’titre’ and L.id=A.par and L.id=T.par and A.id=V1.noeud and T.id=V2.noeud and V1.val=’E. Zola’ ; Défaut : lourdeur dans l’écriture (et la résolution de requête). Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Méthode Monet Fragmentation en tables basée sur les chemins Classe : type de chemin biblio.livre, biblio.livre.titre, biblio.livre.auteur, etc. Chaque chemin correspond à une table binaire Types d’associations : père - fils nœud - valeur nœud - attribut nœud - rang Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML SQL : 4 tables de sélection et 3 conditions de jointure : select V2.val from biblio.livre.titre A, biblio.livre.auteur B, biblio.livre.auteur.val V1, biblio.livre.titre.val V2 where A.Par=B.Par and A.Id=V1.Id and B.Id=V2.Id and V2.Val=’E. Zola’ ; Défaut : nombre important de tables générées Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML BD native XML BD native XML (NXD - Native XML Data) : définit un modèle logique de document XML, stocke et retrouve les documents en fonction de ce modèle. Unité fondamentale de stockage = document XML. Deux types de NXD : basée sur le texte basée sur un modèle interne L’indexation se fait en format propriétaire ou avec un SGBD classique. Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Caractéristiques de NXD : supporte la notion de collection (équivalente à celle de table) langages de requête : plusieurs et variés - XPath, XQL, XQuery supporte les mises à jour et les effacements supporte les transactions, verrouillages et accès concurrents au niveau du document aller-retour des documents (un document est restitué dans la même forme qu’il a été introduit) supporte parfois les données distantes stockage des entités externes difficile peu de redondance de l’information (normalisation, XLink) intégrité référentielle (interne, externe) ? passage à l’échelle Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Deux exemples NXD : XediX (CEA et Aristote) - stockage des copies d’écran, 100 TB, indexation par le biais d’un SGDB classique Xyleme (Sofia A.) - entrepôt XML, Xdiff, stockage des versions, indexation en format propriétaire (exemple : la collection du "Monde"). Beaucoup d’autres produits : Tamino, XQuareBridge (OpenSource), eXist, Berkley (Oracle) Bibliographie : http://www.rpbourret.com/xml/XMLAndDatabases.htm Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Bases de données étendues Autre solution envisagée : étendre les fonctionnalités des BD du marché (Oracle, DB2 d’IBM et SQLServer de Microsoft) afin de supporter XML comme type natif. Premières solutions très simples : garder du XML dans une chaine de caractères : VARCHAR2 ou LONG RAW. On ne tirait aucun profit du XML. Solution actuelle : type de données à part pour XML et sur ce type des fonctions spécifiques XML sont implémentées. Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Avantages des BD étendues : on tire profit des notions très fortes de normalisation, indexation, intégrité référentielle qui sont déjà implémentées. on profite également de toutes les fonctions SGBD accessibles et fiables : accès multiples, gestion complexe d’utilisateurs, techniques de sauvegarde. Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Solutions Oracle pour XML : garder XML dans un LOB (Large OBject) de type VARCHAR2 ou extensions. Mais les requêtes SQL, encore moins XPath, Xquery, ne fonctionnent pas. On peut utiliser Oracle Text pour faire de la RI simple mapper XML dans une structure relationnelle : approche manuelle ou le package DBMS_XMLSAVE garder XML dans un ficher externe manipulable par le module Oracle XML Database Repository utiliser le type natif XML : XMLTYPE Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Voici l’évolution dans la vision d’XML depuis la version 8i en 1999 : Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Les tables peuvent don contenir des attributs de type XML (1 par table !). Ces attributs peuvent être indexés et parsés avec des chemins XPath, on peut faire de requêtes XQuery. Exemples : requête SELECT avec une expression XPath dans la clause WHERE et création d’un index sur la partie textuelle d’un élément. create table purcchaseorder(x xmltype); select value(x) from purchaseorder x where existsNode(value(x),’ /PurchaseOrder[User="SMITH"]’) = 1; create index ipurchaseorderuser on purchaseorder x (extract(value(x), ’/PurchaseOrder/User’)); Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML La vérification des contraintes référentielles ou la validation du document XML se réalise avec des mécanismes spécifiques de BDR. Exemples : trigger et clé étrangère : create or replace trigger VALIDATE_PURCHASEORDER before insert on purchaseorder for each row begin if (:new.sys_nc_rowinfo\$ is not null) then :new.sys_nc_rowinfo\$.schemavalidate(); end if; end; Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML SQL/XML SQL/XML est une extension du langage SQL afin d’obtenir des flux XML depuis une BD relationnelle. Plusieurs fonctions ont été proposées, on a choisi d’implémenter : XMLElement - qui construit un élément XML à partir d’une valeur issue de la base de données XMLAttribute - qui place dans un attribut XML une valeur XMLAgg - fonction agrégat qui construit un élément composé à partir d’une liste de valeurs XMLConcat - qui concatène deux ou plusieurs éléments XML XMLForest : construit une séquence d’éléments XML Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Soit la table attraction sur laquelle on exécutera nos requêtes : select * from attraction; COUNTY_NAM ATTRACTION_NAME ATTRACTION_URL G LOCATION ---------- ------------------------------ -----------------------------Alger Pictured Rocks http://www.nps.gov/piro/ Y Munising Marquette Da Yoopers Tourist Trap http://www.dayoopers.com/thetrap.html Chippewa Valley Camp Museum Ship http://www.thevalleycamp.com/ N Sault S Mackinac Mackinac Bridge http://www.mackinacbridge.org/ Y Alger Valley Spur http://ValleySpur.com Y Munising Marquette Ski Hall of Fame http://skihall.com/www/ N Ishpeming 6 rows selected. Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple 1 : construction d’éléments XML successifs. SELECT XMLElement("Attraction",attraction_name) FROM attraction; produit : <Attraction>Pictured Rocks</Attraction> <Attraction>Da Yoopers Tourist Trap</Attraction> <Attraction>Valley Camp Museum Ship</Attraction> <Attraction>Mackinac Bridge</Attraction> <Attraction>Valley Spur</Attraction> <Attraction>Ski Hall of Fame</Attraction> Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple 2 : construction d’un unique élément XML. SELECT XMLElement("Attraction", XMLAttributes(government_owned AS GOV), XMLForest(attraction_name AS "Name", Location AS "Location", attraction_url AS "URL")) FROM attraction WHERE attraction_name=’Mackinac Bridge’; produit : XMLELEMENT("ATTRACTION",XMLATTRIBUTES(GOV ------------------------------------------------<Attraction GOV="Y"> <Name>Mackinac Bridge</Name> <URL>http://www.mackinacbridge.org/</URL> </Attraction> Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple 3 : Utilisation d’une fonction agrégat. SELECT XMLElement("County", XMLAttributes(c.county_name AS "Name"), XMLAgg( XMLElement("Attraction", XMLAttributes(government_owned AS GOV), XMLForest(a.attraction_name AS "Name", a.Location AS "Location", a.attraction_url AS "URL")))) FROM county c, attraction a WHERE c.county_name = a.county_name GROUP BY c.county_name; Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple 3 : Utilisation d’une fonction agrégat - suite XMLELEMENT("COUNTY",XMLATTRIBUTES(C.COUNTY_NAMEAS"NAME"),XMLAGG -------------------------------------------------------------------------<County Name="Chippewa"> <Attraction GOV="N"> <Name>Valley Camp Museum Ship</Name><Location>Sault Ste. Marie</Location> <URL>http://www.thevalleycamp.com /</URL> </Attraction> </County> <County Name="Mackinac"> <Attraction GOV="Y"> <Name>Mackinac Bridge</Name><URL>http://www.mackinacbridge.org/</URL> </Attraction> </County> <County Name="Marquette"> <Attraction GOV="N"> <Name>Da Yoopers Tourist Trap</Name><Location>Ishpeming</Location> <URL>http://www.dayoopers.com/thetrap.h tml</URL> </Attraction> <Attraction GOV="N"> <Name>Ski Hall of Fame</Name><Location>Ishpeming</Location> <URL>http://skihall.com/www/</URL> </Attraction> </ County> ... Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données XML - modèle de représentation de données XML dans quelles BD Modèle XML vers modèle relationnel BD XML native BD étendues SQL/XML Exemple 3 : Utilisation d’une fonction - autre écriture pour le même résultat. SELECT XMLElement("County", XMLAttributes(c.county_name AS "Name"), XMLAgg( XMLElement("Attraction", XMLAttributes(government_owned AS GOV), XMLConcat(XMLElement("Name", a.attraction_name), XMLElement("Location", a.Location), XMLElement("URL", a.attraction_url))))) FROM county c, attraction a WHERE c.county_name = a.county_name GROUP BY c.county_name; Mihaela JUGANARU-MATHIEU [email protected] XML et les bases de données