Transfert de données XML-SGBD relationnel

publicité
Transfert de données XML =>
SGBD relationnel
INF7115-10 : Bases de données
Maryse Durocher
Guy Lafontaine
Etienne Morency-Bachand
Plan
• Problématique
• Solutions et produits existants
• Solutions choisies
– Intergiciels (middlewares)
– BD relationnelles supportant XML
• Analyse et comparaison
• Questions
Présentation de la problématique
• XML vs SGBD
• Remplacement ou coopération?
• Exportation / importation
• Pourquoi utiliser XML?
• Pourquoi utiliser une BD?
Problématique:
exemple Vidéotron
• Partie client en Flash
– Fichier de configuration XML
• Partie serveur Perl ou Java + SGBD Oracle
– Données de configuration
+ données de participations enregistrées dans la
BD
Problématique:
module de votes sur illico
SQL
HTTP
illico
Serveur
load
<?xml...
<?xml...
FTP
XML
XML
BD
importation
Problématique:
module de votes (alternatives)
SQL
HTTP
illico
BD
Serveur
<?xml...
HTTP
SQLX
illico
Serveur
XML
Serveur,
wrapper
Problématique:
solution adoptée…
• Besoin XML: simplicité, contraintes
technologiques, portabilité, performances
• Besoin BD: accès serveur, gestion des
transactions, sécurité, relationnel, index
• Besoin de transfert des données du XML à la BD
(importation)
– Réutilisation de l’information
– Risques d’erreurs réduits
Problématique:
module de votes (détails)
DNCS
DHCT
bst/res/star/star.swf
vote.swf
(Flash)
XML.load("bfs://...")
bst/res/vote/vote_config.xml
xml.load("http://...")
FTP
xml.load("http://...")
HTTP Server INP-ING
HTTP Server VSI
vote_config.xml
Deloitte
courriel
http
get_votes_for_verif.pl
(Perl)
load
FTP
create_voting_session.pl
(Perl)
check_votes_illico.cgi
(CGI Perl)
telnet
SQL
SQL
SQL
SQL
PC (réseau VSI)
Opérations INP
Note: tous les composants réseau ne sont pas illustrés
PC (réseau VSI)
GestionVoteServlet.xml
(Java)
VerifVotesServlet.xml
(Java)
SQL
telnet
http
WAS Server VSI
DIP
(DB2 DB)
(VSI)
SQL
employé SAC
Problématique:
…solution adoptée
• Solution de middleware maison (Perl)
• Insertion + mise à jour
• Librairies Perl XML::*** + DBI
• Souplesse, rapidité de développement : )
• Parsing spécifique, besoin de réutilisation… : (
Solutions et produits existants
•
•
•
•
•
•
•
Intergiciels (middlewares)
Bases de données relationnelles supportant XML
Bases de données XML natives
Serveurs XML
Couches enveloppantes (wrappers)
Systèmes à base de requêtes XML
Systèmes de correspondance XML-objets
Solutions choisies
•
•
•
•
•
•
•
Intergiciels (middlewares)
Bases de données relationnelles supportant XML
Bases de données XML natives
Serveurs XML
Couches enveloppantes (wrappers)
Systèmes à base de requêtes XML
Systèmes de correspondance XML-objets
Solutions choisies:
pourquoi?
• XML centré données
vs
XML centré document
• Données => importation dans BD
=> intergiciel (ou outils SGBD-XML)
• Documents => préservation de la structure => BD
natives, wrappers, serveurs…
Solutions choisies
intergiciels (middlewares)
• XML-DBMS
– code source libre
• XMLSpy ® 2004
– produit commercial
• …
Solutions choisies
SGBD - XML
• Oracle
• …
XML-DBMS
XML-DBMS
XML-DBMS
• Principale raison d’existence:
XML (données) <=> BD
• Perl ou Java
• Besoins: XML-DBMS, JDK, SGBD, JDBC,
parser XML (+ DOM ou SAX)
• Clé: mapping
(correspondance XML => relationnel)
XML-DBMS:
mapping
• XML => tables
<?xml version="1.0"?>
<A>
<a1></a1>
<a2></a2>
<a3></a3>
</A>
Table: A
a1
a2
a3
<?xml version="1.0"?>
<root>
<A a1="" a2="" .../>
<A a1="" a2="" .../>
<A a1="" a2="" .../>
</root>
XML-DBMS:
étapes
1. ConvertSchema.java
•
Schema XML => DTD
2. GenerateMap.java
•
DTD => .map + .sql
3. Transfer.java
•
.xml + .map => BD
XML-DBMS:
exemple (XML)
<?xml version="1.0" encoding="ISO-8859-1"?>
<vote_config>
<voting_session id="1" app="starac2" time_start="200401150900"
time_end="200402012100">
<vote_question question="Quel académicien voulez-vous sauver?"/>
<vote_candidate id="1" name="Wilfred"/>
<vote_candidate id="2" name="Jimbo"/>
<vote_candidate id="3" name="Bob"/>
</voting_session>
</vote_config>
XML-DBMS:
exemple (DTD)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT broadcast EMPTY>
<!ATTLIST broadcast
days CDATA #REQUIRED
time_start CDATA #REQUIRED
time_end CDATA #REQUIRED
>
<!ELEMENT broadcasts (broadcast+)>
<!ELEMENT vote_app (broadcasts, voting_session)>
<!ATTLIST vote_app
app CDATA #REQUIRED
>
<!ELEMENT vote_candidate EMPTY>
<!ATTLIST vote_candidate
id CDATA #REQUIRED
(…)
XML-DBMS:
exemple (.sql)
CREATE TABLE `broadcast` (`broadcastOrder` INTEGER, `time_start` VARCHAR(255),
`time_end` VARCHAR(255), `broadcastsFK` INTEGER, `days` VARCHAR(255))
CREATE TABLE `vote_question` (…)
CREATE TABLE `vote_config` (…)
CREATE TABLE `voting_session` (…)
CREATE TABLE `vote_candidate` (…)
CREATE TABLE `broadcasts` (…)
CREATE TABLE `vote_app` (…)
XML-DBMS:
exemple (BD)
• Structure de tables réelle…
XML-DBMS:
exemple (.map)
<?xml version='1.0' ?>
<!DOCTYPE XMLToDBMS SYSTEM "xmldbms.dtd" >
<XMLToDBMS Version="1.0">
<Options>
</Options>
<Maps>
<ClassMap>
<ElementType Name="broadcast"/>
<ToClassTable>
<Table Name="broadcast"/>
</ToClassTable>
<PropertyMap>
<Attribute Name="time_start"/>
<ToColumn>
<Column Name="time_start"/>
</ToColumn> (…)
XML-DBMS:
exemple (Transfer.java)
• Transfer.java (.xml + .map => BD)
– Configuration d’une connexion ODBC
– Configuration du parser XML utilisé
(Oracle, Sun ou Xerces)
– Compilation et:
java Transfer –todbms fich.map fich.xml
XMLSpy ® 2004
XMLSpy ® 2004
• Altova
- Depuis 1992
- Logiciel XML 1998
- Série Spy 1999
- 1 291 135 utilisateurs
XMLSpy ® 2004
• Développement
• Service Web
• Édition intelligente
• Connectivité ODBC ADO
XMLSpy ® 2004
• Génération d’un schéma DTD
XMLSpy ® 2004
• Exportation du document
- XML => Base de données relationnel
Oracle
Oracle XML DB - Architecture
Oracle XML DB - Architecture
Oracle XML DB - Repository
Oracle XML DB - Fonctionnalités
XMLType :
• Type de colonnes ou
tables.
• Fonctions pour créer,
extraire et indexer des
données XML.
• Paramètre, valeur de
retour ou type de
variable pour PL/SQL.
CREATE TABLE example1 (
key_column VARCHAR2(10)
primary key, xml_column
XMLType );
CREATE TABLE example2
of XMLType;
Oracle XML DB – Fonctionnalités
• XMLType permet de
valider le document
XML selon son schéma.
isSchemaValid()
schemaValidate()
Oracle XML DB – Fonctionnalités
public void doInsert(Connection conn, Document doc) throws
Exception
{
String SQLTEXT = "insert into PURCHASEORDER values (?)";
XMLType xml = null;
xml = XMLType.createXML(conn,doc);
OraclePreparedStatement sqlStatement = null;
sqlStatement = (OraclePreparedStatement)
conn.prepareStatement(SQLTEXT);
sqlStatement.setObject(1,xml);
sqlStatement.execute();
}
Oracle XML DB – Fonctionnalités
• Schéma XML
– Entreposage structuré
Vs.
– Entreposage non structuré
Oracle XML DB - Fonctionnalités
•XML et SQL
– existsNode()
– extract()
– extractValue()
– updateXML()
– XMLSequence()
Oracle XML DB
Analyse et comparaison
XMLSpy ®
2004
XML-DBMS
Maison
Oracle
Internet
Internet
N/A
Oracle 9i v.2 +
$59 - $999 US
Coûts de dev.
Coûts de dev.
521 $ - 52 000 $
*
Facile
Moyen
Facile
Facile
Apprentissage
Facile-moyen
Moyen
Facile
Facile-moyen
Documentation
Beaucoup
Peu, mais bien
N/A
Beaucoup
Élevée
Moyenne
Moyenne
Très élevée
N/A
N/A
N/A
N/A
Moyenne
Faible
N/A
Élevée
Fiable
N/A
Excellent (!) : )
Excellent
Oui
Groupes seul.
Maison
Oui
Disponibilité
Coût
Utilisation
Fiabilité
Performance
Maturité
Compagnie
Support
technique
* Par processeur…
Références
• http://www.rpbourret.com/xml/XMLAndDatabases.htm
• http://www.rpbourret.com/xmldbms/
• http://www.xml.com/databases/
• http://www.xmlspy.com/manual/exportingxmldatatoextern
aldata.htm
• http://otn.oracle.com/tech/xml/xmldb/index.html
Discussion et conclusion
Questions ?
Téléchargement