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

Documents pareils
SQL Historique

Les bases de données

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

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

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

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

Bases de données relationnelles

Langage SQL : créer et interroger une base

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

Le Langage SQL version Oracle

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

Compétences Business Objects

Bases de données Outils de gestion

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

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

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

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

OpenPaaS Le réseau social d'entreprise

Le langage SQL Rappels

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

Bases de données avancées Introduction

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

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

CREATION WEB DYNAMIQUE

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

1. Base de données SQLite

1 Introduction et installation

Le Langage De Description De Données(LDD)

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

Encryptions, compression et partitionnement des données

Olivier Mondet

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

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

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)

Master I Génie Logiciel

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

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

Séance 1 Introduction aux bases de données

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

Les BASES de DONNEES dans WampServer

Bases de Données Avancées

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

Cours SQL. Base du langage SQL et des bases de données

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

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

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

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

Création et Gestion des tables

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

I4 : Bases de Données

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

Stockage du fichier dans une table mysql:

TP3 : Creation de tables 1 seance

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

TD n 10 : Ma première Base de Données

1 Position du problème

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

Java DataBaseConnectivity

Information utiles. webpage : Google+ : digiusto/

Pratique et administration des systèmes

Module BD et sites WEB

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

A QUOI SERVENT LES BASES DE DONNÉES?

SQL MAP. Etude d un logiciel SQL Injection

I. MySQL : Serveur et SGBD

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Master Exploration Informatique des données DataWareHouse

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)

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

FileMaker 13. Guide de référence SQL

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

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

Bases de données élémentaires Maude Manouvrier

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

Objectifs du TP : Initiation à Access

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

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

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

Optimisations des SGBDR. Étude de cas : MySQL

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

BIRT (Business Intelligence and Reporting Tools)

Gestion Électronique de Documents et XML. Master 2 TSM

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

1/ Présentation de SQL Server :

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

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

Transcription:

1/28 2/28 XML Anne-Cécile Caron Master MIAGE - SGBD 1er trimestre 2017-2018 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 érents. 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é mais nécessité d un schéma. I Depuis 2003 : langage dans la norme SQL. Aussi appelé SQLX, enrichi en 2006, 2008, 2011. I Permet de manipuler des données de type XML, en intégrant du XPath et du XQuery 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 tableau comparatif - source wikipédia :

type XML 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 xmlelement( crée un élément XML, dont le nom peut être spécifié I Ce type peut être utilisé pour typer une colonne d une table, ou pour typer une ligne (cf modèle objet-relationnel I Type XML dans la norme, Ce type porte di érents noms selon les SGBD, I Sous PostgreSQL, DB2 et MySQL, ce type s appelle XML. I Sous Oracle, ce type s appelle XMLType. Constructeur qui fabrique une valeur XMLType à partir de VARCHAR, CLOB, BLOB, BFILE. 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 xmlattributes( crée des attributs XML à partir de colonnes (le nom de la colonne est le nom de l attribut I xmlcomment(, xmlpi( 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 tranforme du texte en une valeur de type XML (analyse lexicale et syntaxique. 11 / 28 12 / 28 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> Exemple 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(name "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. Sachant qu une requête XQuery retourne une séquence d items, I XMLQuery permet d appliquer une requête XQuery sur une valeur XML, en retournant 1 document XML, en aggrégeant les items résultat de la requête. I XMLTable permet d appliquer une requête XQuery sur une valeur XML, en retournant 1 table SQL dont chaque ligne contient 1 item résultat de la requête XQuery. Cette fonction apparaît dans la clause FROM d une requête SQL. I XMLExists qui verifie si une requête XQuery sur une valeur XML donnée retourne une séquence non vide. De plus, il existe un certain nombre de fonctions permettant de modifier de façon incrémentale une donnée XML, i.e. de remplacer, supprimer, insérer, un sous-arbre XML à l intérieur d un arbre XML, alors que le update de SQL remplace la valeur dans son intégralité.

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, ( select xmlagg(xmlelement(name "client",numero from client where clien from caisse ; select * from T2; <caisse ID="1"><client>1</client><client>3</client><client>12</client> <client>16</client></caisse> <caisse ID="10"></caisse> <caisse ID="2"><client>2</client><client>5</client></caisse> <caisse ID="3"><client>7</client><client>9</client><client>13</client></caisse> <caisse ID="4"><client>4</client><client>11</client><client>14</client> <client>18</client></caisse> <caisse ID="5"><client>6</client><client>10</client><client>15</client> <client>17</client></caisse> <caisse ID="6"></caisse> <caisse ID="7"></caisse> <caisse ID="8"></caisse> <caisse ID="9"></caisse> -- 10 lignes 19 / 28 20 / 28 Requête XQuery/XPath XMLExists select XMLQuery( /caisse/client PASSING OBJECT_VALUE RETURNING CONTENT as clients from T2 ; -- ou bien select XMLQuery( /caisse/client PASSING value(t RETURNING CONTENT as clients from T2 t ; CLIENTS ----------------------------------------------------------- <client>1</client><client>3</client><client>12</client><client>16</client> <client>2</client><client>5</client> <client>7</client><client>9</client><client>13</client> <client>4</client><client>11</client><client>14</client><client>18</client> <client>6</client><client>10</client><client>15</client><client>17</client> select value(t from T2 t where XMLExists( /caisse/client PASSING value(t ; <caisse ID="1"><client>1</client><client>3</client><client>12</client> <client>16</client></caisse> <caisse ID="2"><client>2</client><client>5</client></caisse> <caisse ID="3"><client>7</client><client>9</client><client>13</client></caisse> <caisse ID="4"><client>4</client><client>11</client><client>14</client> <client>18</client></caisse> <caisse ID="5"><client>6</client><client>10</client><client>15</client> <client>17</client></caisse> -- 5 lignes 10 lignes sélectionnées

21 / 28 Vues entre les modèles 22 / 28 Mise à jour (partielle Vues 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"><caissier-e>Bob</caissier-e><client>2</client></caisse> ; I On peut définir une vue relationnelle sur des données XML I A l inverse, on peut définir une vue XML sur des données relationnelles. I Les requêtes sur les vues sont réécrites dans le modèle sous-jacent. E cacité?? update T2 set object_value = insertchildxml( object_value, /caisse[@id="5"], caissier-e, xmltype( <caissier-e>eve</caissier-e> ; <caisse ID="2"><caissier-e>Bob</caissier-e><client>2</client> <client>5</client></caisse> <caisse ID="5"><client>6</client><client>10</client><client>15</client> <client>17</client><caissier-e>eve</caissier-e></caisse> 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