Cours No 3 - Stockage de données XML



Documents pareils
XML et Bases de données. Les bases de données XML natives.

BD et XML : Exercices

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Le Langage SQL version Oracle

A QUOI SERVENT LES BASES DE DONNÉES?

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Bases de données et sites WEB Licence d informatique LI345

Les bases de données

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

I4 : Bases de Données

Bases de données avancées Introduction

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

A QUOI SERVENT LES BASES DE DONNÉES?

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

BASE DE DONNÉES XML NATIVE

IFT3030 Base de données. Chapitre 1 Introduction

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Bases de données

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

2 Serveurs OLAP et introduction au Data Mining

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données Avancées

Architectures d'intégration de données

Bases de données relationnelles

INTRODUCTION AU DATA MINING

BASE DE DONNÉES XML NATIVE

Les structures de données. Rajae El Ouazzani

Information utiles. webpage : Google+ : digiusto/

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Bases de données Cours 1 : Généralités sur les bases de données

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Bases de données et sites WEB

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

et les Systèmes Multidimensionnels

Bases de Données OLAP

CHAPITRE 1 ARCHITECTURE

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

Introduction au Système de Gestion de Base de Données et aux Base de Données

Le Langage De Description De Données(LDD)

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Systèmes d information et bases de données (niveau 1)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Compétences Business Objects

PHP 5. La base de données MySql. A. Belaïd 1

Le langage SQL (première partie) c Olivier Caron

Présentation du module Base de données spatio-temporelles

Implémentation des SGBD

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

UE 8 Systèmes d information de gestion Le programme

XML avec Oracle. Par Christian Soutou. Maître de conférences, IUT de Blagnac, Université de Toulouse Le Mirail

Les nouvelles architectures des SI : Etat de l Art

CREATION WEB DYNAMIQUE

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Optimisation SQL. Quelques règles de bases

Adobe Technical Communication Suite 5

Data Mining. Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne. Data Mining. V. Augusto.

TP11 - Administration/Tuning

les techniques d'extraction, les formulaires et intégration dans un site WEB

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

La base de données XML exist. A. Belaïd

1 Introduction et installation

Les bases de l optimisation SQL avec DB2 for i

Structure fonctionnelle d un SGBD

Langage SQL : créer et interroger une base

SQL Parser XML Xquery : Approche de détection des injections SQL

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Dossier I Découverte de Base d Open Office

Bases de données - Modèle relationnel

Module BDR Master d Informatique (SAR)

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

CESI Bases de données

données en connaissance et en actions?

Bases de données élémentaires Maude Manouvrier

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Module BD et sites WEB

OpenPaaS Le réseau social d'entreprise

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Cours Bases de données 2ème année IUT

Bases de données Outils de gestion

Mercredi 15 Janvier 2014

CHAPITRE 1. Introduction aux bases de données

Arbres binaires de recherche

Plan. Introduction Eléments de la théorie des systèmes d'informations Les entrepôts de données (Datawarehouse) Les datamart Architecture Modélisation

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Transcription:

B. Amann - Cours No 3 - Stockage de données XML 1 Cours No 3 - Stockage de données XML Stocker des documents XML On peut distinguer entre trois types de documents XML : Données XML : typiquement export d une base de données Structure régulière (schéma) Requêtes sélection-projection-jointure Opérations de tri et de regroupement Documents XML (données mixtes) : texte + données Fragments de texte de taille importante L ordre des éléments est important Structure irrégulière Requêtes plein-texte et sélection-projection

B. Amann - Cours No 3 - Stockage de données XML 2 Flux de données : service Web Beaucoup de petits fragments indépendantes Requêtes de filtrage (sélection) Stockage de XML: Critères et Choix Temps d exécution de requêtes Complexité des mises-à-jour Taille des données stockées Intégration avec applications existantes Schéma de stockage : indépendante de la DTD/du schéma XML (générique) guidé par la DTD/le schéma XML Généralement il faut faire un choix parmi ces propriétés Problème d optimisation

B. Amann - Cours No 3 - Stockage de données XML 3 Choix 1 : Fichiers Fichiers plats : Petits documents Langage de requêtes : grep, index plein texte Avantages : temps de chargement/reconstruction Choix 2 : Bases de données étendues SGBD (objet-) relationnelle étendu avec des outils pour le traitement de documents XML : Définition d un schéma relationnel pour stocker des documents XML Nouveau type d attributs XML Interrogation avec SQL Avantages : On peut traiter en même temps des données XML et des tables classiques Passage doux du Relationnel vers XML

B. Amann - Stockage dans une BD relationnelle 4 Choix 3 : Bases de données XML natives (NXD) Bases de données spécifiquement conçues pour XML Modèle conçu pour le stockage et l accès à des arbres ordonnées. Le document XML est l entité centrale de la base (comme une relation dans une BD relationnelle) Avantages : Chargement efficace de gros documents Mises-à-jour efficaces Stockage dans une BD relationnelle

B. Amann - Stockage dans une BD relationnelle 5 Stockage dans une BD relationnelle Systèmes : Oracle XML IBM DB2 XML Extender Microsoft OpenXML Excellon Caractéristiques : Importation générique/guidé par le schéma Langages: SQL + TAD pour XML Mapping XML tables Il faut définir un mapping qui permet l importation de XML vers des tables l exportation du relationnel vers XML Il faut satisfaire les contraintes de la BD : exemple : le nombre d attributs par table

B. Amann - Stockage dans une BD relationnelle 6 Documents XML et Relations XML : modèle d arbres ordonnés structure irrégulière : éléments/attributs optionnels, éléments multiples Relations : modèle ensembliste (relation = ensemble de n-uplets) absence d ordre schéma obligatoire Stocker un arbre dans une BD relationnelle Mapping générique : Deux tables : une table binaire pour stocker l ordre, les balises et la relation parent/enfant, une table unaire pour les valeurs. Une table binaire pour chaque type de chemin : schéma Monet Attributs de type XML Mapping guidé par la DTD : Inlining Tables objet/relationnel

B. Amann - Stockage dans une BD relationnelle 7 Exemple : document XML <?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> Arbre XML

B. Amann - Stockage dans une BD relationnelle 8 Relation d arcs parent/enfant R: Part Pos Lab Type Id o 0 1 biblio ref o 1 o 1 1 livre ref o 2 o 1 2 livre ref o 5 o 2 1 titre cdata o 3 o 2 2 auteur cdata o 4 o 5 1 titre cdate o 6 o 5 2 auteur cdata o 7 o 5 3 auteur cdata o 8 o 5 4 editeur cdata o 9 S: Noeud o 3 o 4 o 6 o 7 o 8 o 9 Val Germinal E. Zola Comprendre XSLT B. Amann P. Rigaux O Reilly Requête XQuery : Les titres de livres d Emile Zola : For $l in document("biblio.xml")/biblio/livre, Where $l/auteur = "E. Zola" Return $l/titre SQL : 4 sélections et 4 jointures : 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 ;

B. Amann - Stockage dans une BD relationnelle 9 Relation d arcs parent/enfant Avantages : Format de stockage générique Espace utilisée est faible Inconvénients : Scan sur une seule grande table Beaucoup de jointures Le modèle Monet Fragmentation avec classification des noeuds (classe = type de chemin) : Chaque type de chemin correspond à une table binaire Types d associations stockées : père/fils noeud/valeur noeud/attribut noeud/rang

B. Amann - Stockage dans une BD relationnelle 10 Monet: Exemple biblio.livre Par Id o 1 o 2 o 1 o 5 biblio.livre.editeur Par Id o 5 o 9 biblio.livre.editeur.val Id Val o 9 O.Reilly biblio.livre.titre Par Id o 2 o 3 o 5 o 6 biblio.livre.titre.val Id Val o 3 Germinal o 6 ComprendreXSLT biblio.livre.auteur Par Id o 2 o 4 o 5 o 7 o 5 o 8 biblio.livre.auteur.val Id Val o 4 E.Zola o 7 B.Amann o 8 P ; Rigaux Monet: Exemple XQuery : For $l in document("biblio.xml")/biblio/livre, Where $l/auteur = "E. Zola" Return $l/titre SQL : 1 sélection et 3 jointures 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 ;

B. Amann - Stockage dans une BD relationnelle 11 Monet: Analyse Avantages : Requêtes avec expressions de chemins Exceptions sont traitées naturellement (petites relations) Classification des noeuds Inconvénients : Le nombre des relations est linéaire dans la taille du document Stockage guidé par la DTD: Inlining Principes : Utiliser la DTD pour créer le schéma. Décider quand un élément est mis dans la table de son parent ( inlining ) et quand il faut créer une table séparée. Types d éléments peuvent être partagés Redondance Trois approches: basic, shared et hybrid

B. Amann - Stockage dans une BD relationnelle 12 Basic inlining Créer une ou plusieurs relations pour chaque type d élément : Extraire le sous-graphe qui contient tous les noeuds qu on peut atteindre à partir du type d élément. Créer récursivement les tables à partir de ce sous-graphe : une table pour la racine. une table pour chaque noeud cible d un arc Les autres noeuds sont transformés en attributs. DTD de l exemple <!ELEMENT livre (titre, auteur*, editeur?) > <!ELEMENT article (titre, auteur*) > <!ELEMENT titre #PCDATA > <!ELEMENT auteur #PCDATA > <!ELEMENT editeur #PCDATA > titre livre * auteur * article? editeur

B. Amann - Stockage dans une BD relationnelle 13 Basic Inlining : Exemple livre(id, parid, titre, editeur) livre_auteur(id, parid, auteur) article(id, parid, titre) article_auteur(id, parid, auteur) titre(id,titre) editeur(id, parid, editeur) auteur(id, parid, auteur) livre titre * auteur * article? editeur Basic Inlining : Exemple Livres de Zola : For $l in document("biblio.xml")/biblio/livre Where $l/auteur = "E. Zola" Return $l/titre SQL : 1 jointure et 1 sélection select titre from livre, livre_auteur where livre.id = livre_auteur.parid and auteur = E.Zola

B. Amann - Stockage dans une BD relationnelle 14 Basic Inlining : Exemple Noms des auteurs : For $a in $biblio//auteur Return $a SQL : select auteur from auteur union select auteur from livre_auteur union select auteur from article_auteur; Trop de tables shared/hybrid inlining La solution d Oracle9i Deux solutions : Attributs de type XMLType : interrogation avec XPath fonctions de transformation relation XML Mapping canonique dans une table objet-relationnel

B. Amann - Stockage dans une BD relationnelle 15 Attributs de types XMLType SQL> create table PURCHASEORDER (PODOCUMENT sys.xmltype); Table created. SQL> insert into PURCHASEORDER (PODOCUMENT) values ( 2 sys.xmltype.createxml( 3 4 <PurchaseOrder> 5 <Refernce>2365</Reference> 6 <Actions> 7 <Action> 8 <User>KING</User> 9 <Date>12/11/02</DATE> 10 </Action> 11 </Actions> 12 </PurchaseOrder> 13 )); Requête : Requêtes SQL/XML SQL> select p.podocument.getclobval() from purchaseorder p P.PODOCUMENT.GETCLOBVAL() ---------------------------------- <PurchaseOrder> <Reference>2365</Reference> <Actions> <Action> <User>KING</User> <Date>12/11/02</DATE> </Action> </Actions> </PurchaseOrder>

B. Amann - Stockage dans une BD relationnelle 16 Requête SQL/XML avec extraction XPath Requête : SQL> select P.PODOCUMENT.extract( 2 /PurchaseOrder//User).getClobVal() 3 from PURCHASEORDER P 4 where P.PODOCUMENT.extract( 5 /PurchaseOrder//Date/text() 6 ).getstringval() = 12/11/02 P.PODOCUMENT.Extract( /PurchaseOrder//User ).GETClobVal() ---------------------------------------- <User>KING</User> Mapping XML Relationnel/objet XML: SQL: <row> <Person> <Name>Toto</Name> <Addr> <City>Paris</City> <Street>...</Street> </Addr> </Person> </row> create type AddrType as OBJECT ( City VARCHAR2(32) Street VARCHAR2(32) ); create table Person ( Name VARCHAR2(32) Addr AddrType ); Ce mapping est utilisé pour l importation et pour l exportation.

B. Amann - Stockage dans une BD relationnelle 17 Mapping canonique Avantages : Interrogation directe avec SQL Vue objet-relationnel de données XML Transformation dans la forme canonique avec XSLT Inconvénients : Difficile à mettre en oeuvre sur des documents irrégulière SQL n a pas la puissance de XPath pour les expressions de chemin Stratégies d exportation Trois étapes : extraction-structuration-balisage (ESB) Choix 1 : Composition des opérations : ESB table par table E globale suivi de SB ES globale suivi de B Choix 2 ; Intégration au moteur de requêtes : SB interne : extension moteur de requêtes meilleure performance (deux fois plus rapide) SB externe : procedures stockées, XSLT,.. pas d extension du moteur de requêtes

B. Amann - Stockage Natif 18 Construction d un document XML Oracle fournit une solution ESB interne : SELECT XMLElement("Department", XMLForest(d.deptno "DeptNo", d.dname "DeptName", d.loc "Location"), (SELECT XMLAGG(XMLElement("Employee", XMLForest(e.empno "EmployeeId", e.ename "Name", e.job "Job", e.comm "Commission"))) FROM emp e WHERE e.deptno = d.deptno)) FROM dept d; Fonctions SQL/XML d Oracle XMLAgg : agrégation de fragments XML XMLConcat : concaténation de fragments XML XMLElement : création d un élément XML XMLForest : conversion d une séquence de valeurs en XML XMLColAttVal : conversion d une valeur d attribut en XML XMLSequence : transformation d une relation en XML XMLTransform : application d une feuille de style XSL ExtractValue : extraction d une valeur avec XPath ExtractXML : extraction d un fragment XML avec XPath

B. Amann - Stockage Natif 19 Stockage Natif Stockage Natif Spécifiquement conçu pour XML Entité logique : document XML Techniques d indexation d arbres

B. Amann - Stockage Natif 20 Systèmes de stockage natives Tamino de Software AG Xyleme/Natix de l Université de Mannheim XIndice de Apache X-Hive DB IXIA Soft TextML Architecture XML Requete XML Module Importation Moteur de requetes Noyau SGBD Forets d arbres Index de chemins

B. Amann - Stockage Natif 21 Exemple: Natix Modèle : Niveau logique : arbre XML Niveau physique : arbre construit à partir de l arbre XML + noeuds supplémentaires Schéma physique : Une page est de taille fixe et contient plusieurs enregistrements de taille variable Un enregistrement est un espace de mémoire continu qui peut se déplacer à l intérieur d une page et entre les pages. Un enregistrement ne peut pas dépasser la taille d une page. Enregistrement = sous-arbre Un enregistrement stocke un sous-arbre d un document XML Enregistrement = le seuil de passage entre la représentation plate et la représentation structurée d un fragment XML Les enregistrements/sous-arbres sont reliés par des noeuds proxy

B. Amann - Stockage Natif 22 Exemple d un document XML r1 r2 r3 r4 r5 r6 r7 Arbre Natix page r1 r2 r3 r4 r5 proxy:r7 proxy:r8 r6 r7 Les opérations de modification sont similaire aux opérations sur un arbre B comment trouver le séparateur dans un arbre

B. Amann - Stockage Natif 23 Éclatement d un enregistrement Natix L f1 S R f2 f6 f11 f12 f3 f4 f5 f7 f10 f13 f14 f8 f9 d Page le noeud d définit une coupure séparateur = les noeuds de la racine jusqu à d comment trouver d : descendre dans le milieu de le l arbre Assemblage f1 p1 f6 p4 p2 p3 h1 h2 f3 f2 f4 f5 f8 f7 f9 f10 f11 f13 f12 f14

B. Amann - Mises-à-jour : XUpdate de XML:DB 24 Natix : Split Matrix Une matrice à deux dimensions qui exprime le comportement de regroupement entre les parents et leurs enfants : dimensions = types d éléments M A,B = 0 : séparer A et B si possible M A,B = : garder A et B dans le me enregistrement si possible Sinon: le système décide Mises-à-jour : XUpdate de XML:DB

B. Amann - Mises-à-jour : XUpdate de XML:DB 25 XUpdate Working Draft XML:DB Langage de mise-à-jour déclarative Programme de mise-à-jour = document XML Ordres de mise-à-jour Un programme de mise-à-jour est un élément de type modifications qui contient une séquence d ordres de mise-à-jour. Chaque ordre de mise-à-jour a un attribut select qui permet de choisir des noeuds contextes pour les mises-à-jour. insert-before, insert-after append, update, remove, rename variable value-of if

B. Amann - Mises-à-jour : XUpdate de XML:DB 26 Exemple : Document d origine <?xml version="1.0"?> <addresses version="1.0"> <address id="1"> <name>andreas Laux</name> <born day= 1 month= 12 year= 1978 /> <town>leipzig</town> </address> </addresses> Exemple : Programme de mise-à-jour <xup:modifications version="1.0" xmlns:xup="http://www.xmldb.org/xup"> <xup:remove select="/addresses/address[1]/born" /> <xup:rename select="/addresses/address[1]/name" > fullname </xup:rename> <xup:append select="/addresses/address[1]" > <xup:element name="country"> Germany </xup:element> </xup:append> <xup:insert-after select="/addresses/address[1]" > <xup:element name="address"> <xup:attribute name="id"> <xup:value-of select="/addresses/address[1]/@id+1"/> </xup:attribute> <fullname>lars Martin</fullname> <born day= 2 month= 12 year= 1974 /> <town> <xup:value-of select="/addresses/address[1]/city"/> </town> </xup:element> </xup:insert-after> </xup:modifications>

B. Amann - Mises-à-jour : XUpdate de XML:DB 27 Exemple : Document résultat <?xml version="1.0"?> <addresses version="1.0"> <address id="1"> <fullname>andreas Laux</fullname> <town>leipzig</town> <country>germany</country> </address> <address id="2"> <fullname>lars Martin</fullname> <born day= 2 month= 12 year= 1974 /> <town>leipzig</town> </address> </addresses> Prochain Cours Le Web Sémantique