Vous êtes sur la page 1sur 34

XML et Bases de donnes

XMLType Oracle XML DB

S. Magnier - 19/06/2008

Oracle XML DB

Depuis la version 9i et de faon enrichie dans la version 10g, Oracle propose des outils pour grer des documents XML Depuis la 10g il n'y a plus d'extraction car auparavant il fallait extraire les fichiers avant de pouvoir les analyser. Pour l'utilisateur, a n'a aucune incidence sauf le temps de traitement.

S. Magnier - 19/06/2008

Oracle XML DB

Un type de donnes XMLType a t introduit pour faciliter la gestion native de documents XML

S. Magnier - 19/06/2008

Oracle XML DB
Cette technologie tend les possibilits de la base de donnes relationnelle d'Oracle en proposant toutes les fonctionnalits d'une base de donne XML. Le module Oracle XML DB offre une structure indpendante de stockage et de gestion de donnes XML. Il propose les fonctionnalits suivantes :
Un type de donnes W3C qui est utilis pour stocker et grer du contenu XML. Une collection de mthodes et des oprateurs SQL permettant d'agir sur du XML. La possibilit d'enregistrer un schma conforme au W3C dans la base de donnes Oracle.

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Le type XMLType permet de reprsenter un document XML dans la base de donnes et il est accessible en SQL (XML/SQL) Le type de donnes XMLType possde des mthodes pour crer, extraire et indexer les donnes XML stockes dans la base. Ces fonctionnalits sont aussi disponibles via des API PL/SQL et Java. Le type XMLType peut aussi tre utilis dans des procdures stockes PL/SQL.
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Le type XMLType peut tre utilis comme type pour les colonnes dune table ou dune vue. LAPI XMLType fournit plusieurs fonctionnalits pour travailler sur le contenu dun document XML.
Plusieurs de ces mthodes sont aussi fournies en fonctions SQL.
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Le type XMLType permet le stockage persistant de documents XML et :
Linterrogation via des requtes SQL dune partie ou de la totalit du document
XML/SQL fonctions exitsNode, extract

Lutilisation du langage XPath pour accder des parties du document dans les fonctions XML/SQL (existNode, extract) Un typage contrl des donnes de type XMLType Des mthodes dindexation des documents (XPath)

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Le XMLType offre une meilleure sparation des applications et des modles de stockage. Lutilisation de XMLType au lieu dun CLOB ou dun stockage relationnel permet une meilleure volution des bases de donnes. Dautres fonctionnalits sont en cours de dveloppement pour amliorer/optimiser la gestion de documents XML.
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Le type XMLType peut tre stock de deux faons:
Dans des gros objets (LOBs). Le document XML original est conserv.
On parle de fidlit au document

De faon structure, dans des tables et des vues. Le stockage conserve la structure du document.
On parle de fidlit DOM (Document Object Model)
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Avantages et inconvnients des 2 modes de stockage. Intgrit des donnes
LOB -> maintien du document original, mode structur -> maintien de la structure DOM

Performances
LOB -> mdiocres pour DML, mode structur-> excellentes performances

SQL Accs
LOB -> quelques mthodes, mode structur -> bon accs via SQL fonctions, index, contraintes,

Espace
LOB -> espace important, mode structur -> espace plus optimis

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


On utilise un stockage en CLOB,
Si il est seulement ncessaire de stocker et daccder au document en entier
Quelques mthodes de recherche

Sil nest pas ncessaire de faire des mises jour de parties de documents seulement
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType

Cration dune table avec une colonne de type XMLType


CREATE TABLE table_with_xml_column (filename VARCHAR2(64), xml_document XMLType);

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Chargement dun document XML
En utilisant SQL ou PLSQL
Les constructeurs de type XMLType permettent la cration dinstances partir de diffrentes sources Varchar, CLOB ou BFILE Le type dencodage peut tre prcis lors du chargement du document XML Character set id (csid)
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Exemple dinsertion dun document XML avec un gros objet de type BFILE
Cration du rpertoire Oracle
CREATE DIRECTORY xmldir AS path_to_folder_containing_XML_file';

Insertion
INSERT INTO table_with_xml_column (filename, xml_document) VALUES ('test.xml', XMLType(bfilename('XMLDIR', 'test.xml'), nls_charset_id('AL32UTF8'))); Le dernier paramtre indique le mode dencodage du fichier lire.
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Exemple dinsertion directement avec une chane de caractres INSERT INTO table_with_xml_column (filename, xml_document) VALUES ('test.xml', XMLType(' <etudiant> <nom>Magnier</nom> </etudiant> '));
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


La commande suivante va insrer dans une colonne de type XMLType un document XML : insert into COMMANDES (comm) values (sys.XMLTYPE.createXML ('<commande></commande>')); La fonction createXML() va convertir les balises passes en paramtre en un contenu de type XMLType. INSERT INTO mytable2 VALUES (XMLType(bfilename('XMLDIR', test.xml'),nls_charset_id('AL32UTF8')));

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Oprations disponibles XMLType (quel que soit le mode de stockage)
Les mthodes getClobVal(), getStringVal() et getBlobVal(csid) Permettent de rcuprer des donnes XML respectivement comme un CLOB, VARCHAR, BLOB
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Rcupration du document XML
SELECT x.OBJECT_VALUE.getCLOBVal() FROM xml_table x; SELECT x.xml_document.getCLOBVal() FROM table_with_xml_column x;

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Il est possible dinterroger des donnes XML et den extraire des parties en utilisant les fonctions SQL
existsNode, extract et extractValue

Ces mthodes utilisent un sous ensemble du langage XPath du W3C Consortium pour naviguer dans le document.
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


EXISTSNODE (XMLType_instance, XPath_string [, namespace_string ] ) Cette fonction vrifie si le chemin XPath donn, rfrence au moins un nud lment ou texte du document XML
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Exemple Rcupration de tous les documents XML ayant un noeud Etudiant/Nom avec la valeur = "Magnier" dans la table Etudiants (de type XMLType)
SELECT OBJECT_VALUE FROM Etudiants WHERE existsNode(OBJECT_VALUE, '/Etudiant[Nom="Magnier"]') = 1;

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Mise jour de XMLType
SELECT Nom, EXTRACT(Credit, '/Etudiant/Credit') "Nombre de Credits" FROM Etudiants WHERE Nom = 'Magnier' AND Prenom='Sebastien' ; Nom -------------------Magnier Nombre de Credits -------------------<Credit>1</Credit>

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


UPDATE Etudiants SET Credit = UPDATEXML(Credit, '/Etudiant/Credit/text()',4) WHERE Nom = 'Magnier' AND Prenom = 'Sebastien'; 1 row updated.

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


SELECT Nom, EXTRACT(Credit, '/Etudiant/Credit') "Nombre de Credits" FROM Etudiants WHERE Nom = 'Magnier' AND Prenom='Sebastien' ; Nom Nombre de Credits --------------------------------------Magnier <Credit>4</Credit>
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType

On constate donc que cest une fonction assez complique dutilisation.

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Cration dun index pour optimiser lutilisation de la fonction existNode
CREATE INDEX table_index1_XML ON xml_table (OBJECT_VALUE) INDEXTYPE IS CTXSYS.ctxxpath; CREATE INDEX table_index2_XML ON table_with_xml_column (xml_document ) INDEXTYPE IS CTXSYS.ctxxpath;
S. Magnier - 19/06/2008

XML et Bases de donnes XMLType

La fonction Extract est similaire la fonction existsNode mais peut retourner un fragment du document XML.

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Rcupration uniquement des rfrences des documents XML slectionns
SELECT extract(OBJECT_VALUE, '/Etudiant/NIP') "NIP" FROM Etudiants WHERE existsNode(OBJECT_VALUE, '/Etudiant[Nom="Magnier"]')=1;

Rsultat de la forme
NIP ---------------------------<NIP>10502216</NIP> <NIP>10542356</NIP>

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


La fonction extractValue permet de rcuprer la valeur dun noeud dcrit par le chemin XPath. Elle retourne un rsultat de type VARCHAR2 par dfaut sauf avec des documents qui ont un schma associ. EXTRACTVALUE (XMLType_instance, XPath_string [, namespace_string ] )

S. Magnier - 19/06/2008

XML et Bases de donnes XMLType


Rcupration des valeurs des rfrences des documents slectionns SELECT extractValue(OBJECT_VALUE, 'Etudiant/NIP') "NIP" FROM Etudiants WHERE existsNode(OBJECT_VALUE, '/Etudiant [Nom="Magnier"]')=1; Rsultats de la forme
NIP ---------------------------10502216 10542356
S. Magnier - 19/06/2008

Oracle XML DB
Oracle offre une architecture complte qui permet
La gestion de documents XML avec des fonctionnalits de stockage, recherche, indexation, mise jour. Le dveloppement dapplications avec des accs http ou ftp la base de donnes.

S. Magnier - 19/06/2008

Oracle XML DB
Quand des schmas XML sont enregistrs avec Oracle XML DB, un ensemble de tables par dfaut est cr et utilis pour stocker les documents Ces documents peuvent vus et accder via un rpertoire (repository) Les tables et colonnes XMLType peuvent tre stockes comme : Des gros objets Des ensembles dobjets structurs

S. Magnier - 19/06/2008

Oracle XML DB
Les vues peuvent tre stockes dans des tables locales ou distantes (remote) Les tables et les vues peuvent tre indexes B*Tree, Oracle Text, Le rpertoire (repository) peut tre accd via Des connexions http et ftp, SQL avec des services Oracle (incluant jdbc)
S. Magnier - 19/06/2008

Conclusion
Oracle fournit de plus en plus doutils (type de donnes, API, architecture complte, ) Pour la manipulation de documents XML Plusieurs technologies sont disponibles soit directement via la base de donnes, soit par des applications. Le dveloppement important de ces outils confirme limportance de XML comme format dchanges dinformations avec une gestion de plus en plus performantes des documents.

S. Magnier - 19/06/2008

Vous aimerez peut-être aussi