1/28 XML. I XML = extensible markup language. I Langage de description de documents (semi)-structurés, utilisant des.



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

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

Les bases de données

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

A QUOI SERVENT LES BASES DE DONNÉES?

SQL Historique

Bases de données relationnelles

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

Le Langage SQL version Oracle

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

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

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

Bases de données avancées Introduction

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

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Notes de cours : bases de données distribuées et repliquées

I4 : Bases de Données

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)

OpenPaaS Le réseau social d'entreprise

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Le Langage De Description De Données(LDD)

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

Langage SQL : créer et interroger une base

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

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

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

1/ Présentation de SQL Server :

CREATION WEB DYNAMIQUE

Bases de Données Avancées

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

Compétences Business Objects

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

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

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

Le langage SQL Rappels

1 Introduction et installation

Information utiles. webpage : Google+ : digiusto/

Introduction à JDBC. Accès aux bases de données en Java

Création et Gestion des tables

Java DataBaseConnectivity

1 Position du problème

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

Séance 1 Introduction aux bases de données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Encryptions, compression et partitionnement des données

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Java et les bases de données

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

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

1. Base de données SQLite

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

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

UE 8 Systèmes d information de gestion Le programme

Devoir Data WareHouse

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Module BD et sites WEB

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

CHAPITRE 1 ARCHITECTURE

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

Cours Bases de données

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

Objectifs du TP : Initiation à Access

Application web de gestion de comptes en banques

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Master Exploration Informatique des données DataWareHouse

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

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

Olivier Mondet

Stockage du fichier dans une table mysql:

TP Bases de données réparties

Programmation des Applications Réparties. Parsers XML DOM et SAX

Master I Génie Logiciel

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Historisation des données

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

Les bases de données Page 1 / 8

Compte Rendu d intégration d application

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

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

Implémentation des SGBD

Optimisations des SGBDR. Étude de cas : MySQL

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

Bases de données Outils de gestion

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

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

Mysql. Les requêtes préparées Prepared statements

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

BASE DE DONNÉES XML NATIVE

Accès aux bases de données

Transcription:

1/28 2/28 Anne-Cécile Caron Master MIAGE - BDA 1er trimestre 2013-2014 XML I XML = extensible markup language I Langage de description de documents (semi-structurés, utilisant des balises <lettre> <en-tete> <nom-ent>a.c. Caron</nom-ent> <adresse> </adresse> </en-tete> <date>2 décembre 2006</date> <destinataire></destinataire> <objet></objet> <salut>monsieur,</salut> <corps> <para></para> </corps> <signature>anne-cécile Caron</signature> </lettre> 3/28 4/28 Histoire I Langages de balises : I SGML, description de documents techniques, normalisé en 1986 (début en 1979. I HTML, inventé pour le web 1991 I 1996 : création d un groupe de travail du W3C dont les objectifs sont de définir un langage 1. plus facile que SGML 2. plus général que HTML I 1998 : XML 1.0. Version simplifiée de SGML et plus adaptée au Web (support natif des di érents codages internationaux. Documents bien formés / valides I Bien formé = suit les règles syntaxiques de XML. I Bon parenthèsage des balises ouvrantes et fermantes. I Un élément racine contient tous les autres (on parle d arbre d éléments I Valide = bien formé + conforme à un schéma, défini par une DTD ou un XML-schema. I La validité n est pas requise : il n est jamais obligatoire de définir un schéma pour un document.

liens XML/BDD 5/28 6/28 Contenu orienté document / orienté données I Contenu orienté données : I très régulier, contenu structuré. I Souvent, fichier généré à partir d un SGBD (relationnel par un programme. I Contenu orienté document : I contenu semi-structuré. Exploitation de la souplesse d XML. I Fichier écrit manuellement, ou provenant d une conversion à partir de PDF, RTF,. Pourquoi XML et Bases de données? I Technologies qui rapprochent XML des SGBD : I définition de schéma : DTD, XML-schema, Relax-NG I Langages de requêtes : XPath, XQuery I Interfaces de programmation : SAX, DOM, JDOM, I Stocker du XML si I On possède déjà beaucoup de données sous ce format I Nécessité de faire de la recherche d informations parmi ces données I Quand on veut stocker des documents XML dans un SGBD, on peut 1. Stocker dans une base de données XML native 2. Stocker dans un SGBD relationnel sous la forme de CLOB 3. Stocker dans un SGBD relationnel sous la forme de tables. Quel SGBD pour XML? 7/28 8/28 BdD XML native ou relationnelle? I SGBD XML natif : I respect des normes XML du W3C, I stockage adapté donc bonnes performances, I langage de requête XQuery, XUpdate, I MAIS peut-être moins performant sur les points propres aux SGBD (transaction, sécurité I Pas de lien avec des données relationnelles I SGBD relationnel I Le langage de requête/modification basé sur SQL est un peu lourd, di culté de manipuler des modèles di é r e n t s. I Des passerelles entre les données relationnelles et XML. I stockage sous forme de CLOB I juste la persistance I fidélité au texte : le document est conservé tel quel I peu performant (interrogation, modification. I stockage dans des tables : I Utilisation d un stockage mieux adapté. I Depuis 2003 : langage dans la norme SQL3. Aussi appelé SQLX I Permet de manipuler des données de type XML, en intégrant du XPath dans des requêtes SQL. I Permet de fabriquer du XML à partir de données relationnelles I attention, la norme est di érente de la technologie Microsoft SQLXML de SQLServer

XMLType 9/28 10 / 28 Un type pour les données XML Comment générer du XML I Il existe un type pour les données XML I Ce type peut être utilisé pour typer une colonne d une table, ou pour typer une ligne (cf modèle objet-relationnel create table T1 ( clef NUMBER(3 constraint t1_pkey primary key, xml_col XMLType ; create table T2 of XMLType ; I Une valeur de ce type est une forêt XML. I Sous Oracle, ce type s appelle XMLType. Constructeur qui fabrique une valeur XMLType à partir de VARCHAR, CLOB, BLOB, BFILE. I xmlelement( crée un élément XML, dont le nom peut être spécifié I xmlattributes( crée des attributs XML à partir de colonnes (le nom de la colonne est le nom de l attribut I xmlforest( crée des éléments XML à partir de colonnes, le nom de chaque élément étant le nom de chaque colonne I xmlconcat( concatène des valeurs XML en 1 seule valeur qui représente une forêt XML I xmlagg( combine une collection de lignes, chacune contenant une valeur XML, pour créer une forêt XML. xmlagg est une fonction d agrégation, comme sum. On a donc un résultat par groupe de lignes. I xmlparse, xmlcomment, 11 / 28 12 / 28 Exemple Exemple Schéma qui sert à la simulation d un supermarché. CAISSE(identifiant,ouverte ; CLIENT(numero, duree_prevue, idcaisse, rang select xmlelement(name "client", xmlforest(numero as numclient, duree_prevue as duree, rang, idcaisse from client ; <client> <NUMCLIENT>1</NUMCLIENT> <DUREE>4</DUREE> <RANG>4</RANG> <IDCAISSE>1</IDCAISSE> </client> <client> <NUMCLIENT>2</NUMCLIENT> <DUREE>8</DUREE> <RANG>1</RANG> <IDCAISSE>2</IDCAISSE> </client> I Dans la requête précédente, chaque ligne de la table CLIENT engendre une ligne du résultat. I On peut fabriquer un résultat avec une seule ligne qui soit un vrai document XML enraciné. Pour cela, 1. utiliser xmlagg pour fabriquer 1 seule ligne contenant une forêt avec toutes les lignes du résultat précédent, 2. puis mettre cette forêt dans un élément père lesclients. select xmlelement(name "lesclients", xmlagg( xmlelement(name "client", xmlforest(numero as numclient, duree_prevue as duree, rang, idcaisse from client ;

13 / 28 14 / 28 Exemple avec jointure Exemple avec sous-requête select xmlelement(name "caisse", xmlattributes(identifiant as id, xmlagg( xmlelement("client",numero from caisse join client on identifiant = idcaisse group by identifiant ; <caisse ID="1"> <client>1</client> <client>3</client> <client>12</client> <client>16</client> </caisse> utiliser left join si on veut les caisses qui n ont pas de client Requête qui extrait toutes les données sous la forme d un seul document : select xmlelement(name "lescaisses", xmlagg( xmlelement(name "caisse", xmlattributes(identifiant as id, xmlelement(name "ouverte", ouverte, xmlelement(name "clients", (select xmlagg( xmlelement(name "client", xmlattributes(numero as id, xmlforest(duree_prevue, rang order by rang from client where client.idcaisse = caisse.identifiant from caisse ; 15 / 28 16 / 28 Exemple Manipulation de données XML Résultat de la requête précédente : <lescaisses> <caisse ID="1"> <ouverte>1</ouverte> <clients> <client ID="12"><DUREE_PREVUE>9</DUREE_PREVUE><RANG>1</RANG></client> <client ID="16"><DUREE_PREVUE>1</DUREE_ PREVUE><RANG>2</RANG></client> <client ID="3"><DUREE_PREV UE>3</DUREE_PREVUE><RANG>3</RANG></client> <client ID="1"><DUREE_PREVUE>4</DUREE_PREVUE><RANG>4</RANG></client> </clients> </caisse> <caisse ID="10"> <ouverte>0</ouverte> <clients></clients> </caisse> </lescaisses> définit des opérateurs applicables sur des données de type XML. I existsnode( qui teste si un noeud particulier existe, noeud désigné par requête XPath I schemavalidate( qui valide selon un XML-schema I transform( qui applique une transformation XSLT I extract( prend une expression XPath e et retourne les noeuds formant le résultat de e I extractvalue( prend une expression XPath e et retourne les valeurs (feuilles des noeuds formant le résultat de e I updatexml( Permet de modifier une données XML en utilisant des expression XPath I

17 / 28 18 / 28 Préparation de l exemple Contenu de la table exemple On suppose que T2 contient des lignes de documents XML, une ligne représentant une caisse du supermarché. Pour remplir une table contenant du XML on peut : I Remplir à partir d un fichier XML externe (donnée BFILE insert into T2 values(xmltype( bfilename(, nls_charset_id( ; I Remplir à partir d une chaîne de caractères insert into T2 values( <caisse ID="1"><client>3</client><client>16</client></caisse> ; I Remplir à partir d une requête insert into T2 select xmlelement(name "caisse", xmlattributes(identifiant as id, xmlagg( xmlelement("client",numero from caisse join client on identifiant = idcaisse group by identifiant ; select * from T2; <caisse ID="1"> <client>1</client> <client>16</client> </caisse> <caisse ID="2"><client>2</client> <client>5</client> </caisse> <caisse ID="3"> <client>7</client> </caisse> <caisse ID="4"> <client>4</client> </caisse> <caisse ID="5"> <client>17</client> </caisse> <caisse ID="6"/> <caisse ID="10"/> <caisse ID="9"/> <caisse ID="7"/> <caisse ID="8"/> 19 / 28 20 / 28 Requête XPath et extract updatexml select extract(t.object_value, /caisse/client from T2 t ; <client>3</client><client>16</client><client>12</client><client>1</client> <client>2</client><client>5</client> <client>7</client><client>9</client><client>13</client> <client>11</client><client>18</client><client>14</client><client>4</client> <client>17</client><client>10</client><client>6</client><client>15</client> 10 ligne(s sélectionnée(s. -- dont 5 contiennent NULL On peut remplacer un sous-arbre par un autre, du texte par un autre, update T2 set object_value = updatexml( object_value, /caisse[@id="2"], xmltype( <caisse ID="2"><caissiere>Annie</caissiere><client>2</client></caisse> ; -- on fait pareil pour la caisse 5 <caisse ID="1"> <client>3</client> <client>1</client> </caisse> <caisse ID="10"> <client/> </caisse> <caisse ID="2"> <caissiere>annie</caissiere> <client>2</client> </caisse> <caisse ID="3"> <client>7</client></caisse> <caisse ID="4"> <client>4</client> </caisse> <caisse ID="5"> <caissiere>eve</caissiere> <client>15</client> </caisse> <caisse ID="6"> <client/> </caisse> <caisse ID="7"> <client/> </caisse> <caisse ID="8"> <client/> </caisse> <caisse ID="9"> <client/> </caisse>

21 / 28 Vues entre les modèles 22 / 28 existsnode select extract(t.object_value, /caisse/client from T2 t where existsnode(t.object_value, /caisse/caissiere =1; <client>2</client><client>5</client> <client>17</client><client>10</client><client>6</client><client>15</client> Vues I On peut définir une vue relationnelle sur des données XML create or replace view ma_vue(idcaisse,numclient as select extract(object_value, /caisse/@id, extractvalue(value(c,. from T2 t, table(xmlsequence(extract(value(t, /caisse/client c I Al inverse,onpeutdéfinirunevuexmlsurdesdonnéesrelationnelles. create or replace view caisses_xml of xmltype with object id (substr(extractvalue(object_value, /lescaisses/caisse/@id, 1,128 as select xmlelement( from caisse ; I Les requêtes sur les vues sont réécrites dans le modèle sous-jacent. E cacité?? 23 / 28 24 / 28 Stockage sous Oracle I Oracle XML DB est l ensemble des technologies fournies par Oracle pour générer, stocker et manipuler du XML. I Les données XML sont dans des tables I Le Oracle XML DB Repository permet d utiliser une métaphore de système de fichiers.

25 / 28 26 / 28 Stockage de données XMLType Il existe 3 alternatives : 1. Le stockage sous forme de CLOB est le moins performant, mais le plus fidèle. Une mise à jour du document XML entraine une réécriture sur disque de tout le document. 2. Le stockage en relationnel objet n est possible que si on associe un schéma à la donnée. C est la façon la plus économique (en place de stocker un document XML. Une mise à jour du document se fait par morceaux. On perd la fidélité au texte à cause des espaces. Reconstituer le document initial peut prendre du temps à cause de la décomposition. 3. Le stockage binaire est possible avec ou sans schéma. Il est plus e cace en espace que le CLOB, et un peu moins que le relationnel objet. On perd la fidélité au texte à cause des espaces. Une mise à jour du document se fait par morceaux. Reconstituer le document initial est très rapide. et JDBC Conclusion 27 / 28 28 / 28 JDBC I JDBC 4.0, (java 6 : interface java.sql.sqlxml. I méthodes getsqlxml, updatesqlxml de ResultSet, méthode setsqlxml de PreparedStatement, idem pour CallableStatement. I On peut profiter de toutes les fonctionnalités des sous-paquetages de javax.xml : validation (SAX, StAX, DOM, requête XPath, transformation XSLT,. Conclusion I permet la manipulation de données XML et la publication vers ce format. I Intégration de données XML et relationnelles dans le même SGBD. I Vues pour passer d un modèle à l autre. I Exploitation de avec JDBC. I Langage de modification peu pratique, langage de sélection moins lisible que XQuery. I Traitement des requêtes très variable selon le mode de stockage (CLOB, table relationnel-objet, autre