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

Dimension: px
Commencer à balayer dès la page:

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

Transcription

1 Faculté Polytechnique de Mons Johnny TSHEKE SHELE Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML Travail de fin d études présenté en vue de l obtention du grade d Ingénieur Civil en Informatique et Gestion Année académique Promoteurs: Prof. Pierre Manneback (FPMs) et Prof. Esteban Zimányi (ULB)

2 1 à Brian

3 Table des matières 1 Introduction Description du sujet Autres intérêts de l ETL de données XML Structure de ce document XML en bref XML : Rappel Quelques règles élémentaires en XML Syntaxe d un document XML Déclaration d un document XML Exemple d un document XML Types et schémas des documents en XML Document Type Definition - DTD XML Schema Document XML bien formé et valide Document bien formé Document valide Arborescence d un document XML - DOM Parcours d un arbre XML Remarque importante sur l utilisation de l API DOM Transformation d un document XML - XSLT Les entrepôts de données XML Base de données XML Stockage des données XML Classification des bases de données XML Base de données avec support XML Base de données XML Native Entrepôt de données Source des données de l entrepôt Structure de données d un entrepôt de données Interrogation de l entrepôt de données Entrepôt de données XML Entrepôt de données XML et échange d informations Entrepôt de données vs entrepôt de données XML

4 TABLE DES MATIÈRES 3 4 ETL : État de l art Exécution parallèle Un gros fichier source Pipeline Plusieurs sources Evolution avec le temps Compatibilité avec les systèmes d exploitation ETL spatial Quelques logiciels ETL ETLs propriétaires ETLs open source Schéma XML canonique pour un processus ETL Motivations Difficulté d extraire une structure définie dans un schéma Eviter les redondances dans les schémas Règles génerales d écriture d un XSD Un élément de type simple Un élément de type complexe Règles canoniques Comment parcourir un schéma canonique Générateur automatique de fichier XSLT XPath XQuery Ouverture des fichiers Expressions FLWOR XSLT Déclaration d un document XSLT Quelques notions de base Pourquoi XSLT et pas XQuery? Comment générer un fichier XSLT automatiquement Programme principal Code XSLT selon la transformation demandée Transformation des attributs de l élément courant Comment trouver l élément ou l attribut correspondant? Autres opérations possibles Opérateur de fusion Opérateur de séparation Opérateur de transformation d un élément en attribut Opérateur de vérification de compatibilité Opérateurs arithmétiques Opérateur de manipulation des instructions de traitement Opérateurs d exécution paralèlle d un processus ETL

5 TABLE DES MATIÈRES 4 7 Réalisation de l ETL Quelques algorithmes du processus ETL des données XML Vérifier si un type est prédéfini en XSD Vérifier si un tag de XSD définit un élément Vérifier si un tag de XSD définit un attribut Extraction du nom d un élément, attribut ou type défini Extraction du type de l élément ou de l attribut défini Traitement d un élément et de ses fils directs Chargement des schémas Extraction des éléments et attributs définis dans un XSD Parsing d un noeud et de ses fils éventuels Parsing de la structure définie dans un fichier XSD Création de l interface des correspondances Compilation d un processus ETL Prototype ETL développé Exemple d application Chargement des fichiers dans l ETL Visualisation des schémas chargés Un choix de correspondances Un autre choix de correspondances Conclusions et perspectives Conclusions Perspectives Bibliographie 60 A Code PHP5 du prototype ETL développé 61 A.1 Fichier index.php A.2 Fichier viewsrc.php A.3 Fichier viewdst.php A.4 Fichier mapping.php B Code source de la classe XmlTransform 65

6 Table des figures 1.1 Le processus ETL dans un entrepôt de données XML Exportation/importation de données d un SGBD à un autre Transformation d un document GML en SVG Exemple d une arborescence XML Parcours d un arbre XML Illustration des noeuds réellement obtenus avec l API DOM Exemple de l entrepôt de données d Arizona State University [14] Exemple d un entrepôt de données XML : DAWAX [3] Interface des correspondances Page d accueil de XML ETL Visualisation des arborescences définies dans les schémas Un choix d une transformation Un autre choix de transformation

7 Listings 2.1 Exemple d un document XML Exemple d une DTD Exemple d un XML Schema -XSD Visualisation de la structure définie dans le listing Autre façon d écrire le schéma du listing Encore une autre manière d écrire le schéma du listing Illustration des redondances dans un XSD Exemple de définition d un élément de type complexe Exemple d un schéma canonique La fonction qui génère le fichier XSLT Production du code XSLT selon le type de transformation choisie Production du code XSLT pour transformer les attributs de l élément courant Algorithme testant si un type est prédéfini Algorithme testant si un tag XSD définit un élément Algorithme testant si un tag XSD définit un attribut Algorithme d extraction du nom de l élément/attribut/type complexe défini Extraction du type de l élément ou attribut défini Traitement de l élément défini et de ses fils Traitement de l élément défini et de ses fils Parsing d une branche d un arbre défini dans un XSD Parsing d une structure définie dans un fichier XSD Compilation d un processus ETL Schema XSD d une source Données XML d une source XSLT généré suite aux choix du paragraphe Résultat du processus ETL du paragraphe 8.3 sur les données du listing Schéma de destination du processus ETL du paragraphe XSLT généré suite aux choix du paragraphe Résultats de l ETL éxécuté au paragraphe A.1 Fichier Index.php A.2 Fichier viewsrc.php A.3 Fichier viewdst.php A.4 Fichier mapping.php B.1 Fichier xmletl2.php

8 Remerciements J aimerais tout d abord remercier mes promoteurs Pierre Manneback et Esteban Zimányi, tous les deux professeurs, respectivement, à la Faculté Polytechnique de Mons (FPMs) et à l Université Libre de Bruxelles (ULB). Leurs encouragements, conseils, suggestions, relectures et corrections ont vraiment été une aide précieuse pour la réalisation du présent mémoire. Je remercie également monsieur le professeur Philippe Fortemps, président de la section Informatique et Gestion, de m avoir suggéré monsieur Manneback pour superviser ce travail proposé par monsieur Zimànyi. J aimerais exprimer toute ma gratitute à ma famille et plus particulièrement à Jeannine et à Brian. Que cette oeuvre soit pour eux, le fruit des sacrifices qu ils ont consenti pour me soutenir durant ces études qui s achevent. Pour finir, je tiens à remercier tous mes collegues, amis et connaissances qui m ont soutenu et aidé d une manière ou d une autre pour la réalisation de ce travail. Parmi eux, je peux citer monsieur Marc Okoko pour la relecture et les corrections ainsi que les membres du laboratoire Informatique et Réseaux de l école polytechnique de l ULB. 7

9 Chapitre 1 Introduction Ce chapitre positionne le sujet dans son contexte. Il montre d une manière non exhaustive, quelques domaines confrontés aux problèmes pouvant être résolus par l outil que nous proposons. 1.1 Description du sujet Les entrepôts de données 1 constituent de nos jours l infrastructure de base des systèmes d aide à la décision. Ils permettent de garder des grands volumes d informations historiques permettant ainsi de découvrir des tendances et des informations similaires qui sont indispensables aux organisations. Les entrepôts de données obtiennent leurs informations des bases de données opérationnelles, c est-à-dire, des bases de données qui supportent les opérations journalières des organisations. Pour amener ces informations à l entrepôt, un processus communément appelé Extraction, Transformation et Load (ETL) est nécessaire. Celui-ci extrait les informations des systèmes opérationnels divers, les transforme de telle sorte qu elles puissent respecter aussi bien les règles que les formats de l entrepôt et les charge finalement dans ce dernier. Actuellement, le processus de ETL ainsi que les outils logiciels qui facilitent ce processus travaillent sur des bases de données relationnelles. Le but du mémoire est la définition d un processus ETL (voir la figure 1.1) et le développement d un prototype d outil associé qui permet d interroger des sources de données XML en vue d alimenter un entrepôt de données également en XML. 1.2 Autres intérêts de l ETL de données XML En dehors des entrepôts de données, le besoin de l ETL de données XML peut se faire sentir dans plusieurs domaines dont Exportation/Importation de données : Lorsqu on exporte les informations d une base de données (BD) à une autre (voir la figure 1.2), on est souvent confronté à plusieurs problèmes tels que : la différence des schémas ; 1 Data Warehouses 8

10 CHAPITRE 1. INTRODUCTION 9 XML Source 2 (Schema 2) XML Source 1 (Schema 1) ETL XML Source X (Schema X) XML Data Warehouse (Schema of DW) Fig. 1.1 Le processus ETL dans un entrepôt de données XML le Système de Gestion de Base de Données (SGBD) source n est pas toujours le même que celui de destination ; le type ou le format de données peut être différent. Exemple : d un côté une date est codée dans une chaîne de caractères ( ) de l autre, on code la date sur 3 nombres entiers (jours, mois, année) ; etc. Dans les bases de données relationnelles par exemple, il faut connaître la structure des tables pour bien écrire les requêtes permettant d extraire les informations. Si pour une raison ou une autre, le schéma de la base de données ou les formats des informations désirées change, il faut modifier ou adapter une à une les requêtes utilisées. Comme la plupart des SGBD actuels sont dotés d un outil permettant d exporter/importer les données en XML, un outil ETL pourrait se charger du passage automatique d un schéma/format à un autre. Ce qui permettrait une automatisation de l ensemble du processus. Traitement de données géographiques : Le langage GML (Geography Markup Language) permet d encoder des informations géographiques. Malheureusement, pour visualiser ces données de manière graphique (cartes,...), on a souvent besoin de les mettre sous un autre format comme SVG (Scalable Vector Graphics), X3D (extensible 3D) 2, etc. Ces langages (GML, SVG, X3D) utilisant le formalisme XML, on effectue souvent cette transformation au moyen d un fichier XSLT qu il faut écrire soi-même. 2 X3D est un format de fichier graphique et multimédia orienté 3D. Il peut être exprimé à l aide d une syntaxe basée sur XML [16]. Voir http :// pour plus d informations sur X3D

11 CHAPITRE 1. INTRODUCTION 10 SGBD1 SGBD2 XML source ETL XML Destination Fig. 1.2 Exportation/importation de données d un SGBD à un autre GML source ETL SVG Destination Fig. 1.3 Transformation d un document GML en SVG etc. D un fichier de type XML vers un autre fichier de type XML, on peut utiliser un outil ETL qui aura comme source, le document GML et pour destination, un document SVG ou X3D (voir la figure 1.3). 1.3 Structure de ce document Outre ce premier chapitre introductif, le présent ouvrage est structuré de la manière suivante. Un survol du langage XML sera donné au chapitre 2, Le chapitre 3 introduira ensuite, les entrepôts de données XML. L état de l art du processus ETL sera donné au chapitre 4. Au chapitre 5, nous expliquons une façon d écrire un schéma XML (XML Schema) pour simplifier le parcours de son arborescence dans le cadre d un processus ETL. La conception d un générateur automatique de fichier XSLT à partir des schémas XML source et destination sera abordée au chapitre 6. Le chapitre 7 couvrira la réalisation d un processus ETL à partir d un fichier XSLT généré au chaipitre 6. Une illustration du prototype ETL développé sera donnée au chapitre 8 sous forme d un

12 CHAPITRE 1. INTRODUCTION 11 exemple d application. Au chapitre 9, nous tirerons des conclusions et proposerons quelques pistes de recherche pour le futur. Compte tenu de la limitation du nombre 3 de pages dans un travail de fin d études imposée par la faculté, le présent ouvrage est rédigé de manière à se focaliser essentiellement sur le processus ETL que nous proposons. 3 +/- 50 pages

13 Chapitre 2 XML en bref Vous trouverez dans ce chapitre, un petit rappel sur le XML. Le but n est pas de nous étendre sur ce sujet très vaste et que nous supposerons connu mais, de rappeler quelques notions fondamentales nécessaires à la compréhension de la suite du présent travail. 2.1 XML : Rappel XML (extended Markup Language) est un langage de balisage extensible, un langage du style HTML, un descendant de SGML (Standard Generalized Markup Language) un langage qui définit un cadre de représentation générique de données (semi-)structurées [19], une famille de technologies qui peut tout faire depuis le formatage de document jusqu au filtrage de données [13], un ensemble de règles permettant de créer ses propres balises [13] et qui facile l échange automatisé des informations entre systèmes (d informations) hétérogènes (sur Internet) Quelques règles élémentaires en XML Un document XML est essentiellement composé de tags 1. Ces derniers forment les éléments. Exemple d un tag ouvrant : <person>. Le tag fermant correspondant est </person>. Un élément est constitué d un tag ouvrant, du tag fermant correspondant et d un contenu éventuel. Le contenu d un élément peut être d autres éléments, de données ou du texte [9]. Dans ce cas, une balise fermante est obligatoire. Exemple <person>brian</person>. Lorsqu un élément est vide (c est-à-dire, n a pas de contenu), on peut l écrire sous la forme d une annotation d ouverture et d une de fermeture (exemple : <person></person>) ou sous la forme contractée (exemple : <person/>). En XML, les Tags (annotations) respectent les règles suivantes [9, 13] sensibilité à la casse. C est-à-dire que les majuscules sont différenciées des minuscules. Le tag <person> est différent de <Person>, lui-même différent de <PERSON>, etc. 1 annotations ou balises 12

14 CHAPITRE 2. XML EN BREF 13 Le premier caractère du nom d un tag doit être une lettre ou un soulignement ( ) Le caractère blanc n est pas permis au début du tag mais à la fin. Le nom peut être composé des caractères alphanumériques,-,.,_ Syntaxe d un document XML Un document XML doit respecter les règles suivantes. Avoir un et un seul élément racine (Root Element). Cet élement est aussi appelé Document element [9]. C est l élement qui contient tout le contenu du document. Les annotations d ouverture et de fermeture doivent se correspondre [9, 19]. Si un tag est ouvert à l intérieur d un élement, il doit être fermé à l intérieur de ce même élément. Tout tag doit être fermé comme il faut (<person>...</person> ou <person/>). Les attributs sont des propriétés contenues dans l annotation d ouverture. Dans un tag, deux attributs ne peuvent pas porter un même nom [9, 13]. Il y a une valeur unique par attribut. Un élément peut avoir plusieurs attributs [13] Déclaration d un document XML Un document XML est un fichier text dont la première ligne, appelée Déclaration XML (XML Declaration) [9] est de la forme <?xml version="1.0"?> où version précise le standard XML utilisé dans le document. On peut également spécifier le codage des caractères avec l attribut encoding pour permettre une lecture correcte du document [13]. A ce qui concerne les langues de l europe occidentale, on écrira : <?xml version="1.0"encoding="iso "?> Exemple d un document XML Listing 2.1 Exemple d un document XML <? xml version =" 1.0 " encoding ="ISO "?> < personslist > <person > < firstname >Johnny </ firstname > < middlename >Shele </ middlename > < lastname >Tsheke </ lastname > </ person > <person > < firstname >Pierre </ firstname > < middlename /> < lastname > Manneback </ lastname > </ person > <person > < firstname > Esteban </ firstname > < middlename > Borrageiros </ middlename > < lastname > Zimanyi </ lastname > </ person > </ personslist >

15 CHAPITRE 2. XML EN BREF Types et schémas des documents en XML XML permet de créer ses propres balises et de définir un modèle (une structure) auquel les documents doivent se conformer. On peut créer un modèle de document XML par Document Type Definition (DTD) ou par XML schema Document Type Definition - DTD Une DTD est un modèle qui représente une classe de document [10] ou qui décrit les exigences structurales d un document XML [9]. Il peut définir : les éléments et attributs éventuels, les éléments fils, leurs nombres et l ordre dans lequel ils peuvent apparaître, les valeurs possibles et éventuellement, par défaut prises par les éléments et/ou les attributs, etc. Pour le document XML du listing 2.1, une DTD correspondant pourrait être celui du listing 2.2 Listing 2.2 Exemple d une DTD <? xml version ="1.0" encoding =" UTF -8"? > <! ELEMENT personslist ( person +) > <! ELEMENT person ( firstname, middlename, lastname ) > <! ATTLIST person birthdate CDATA # IMPLIED > <! ELEMENT firstname (# PCDATA ) > <! ELEMENT middlename (# PCDATA ) > <! ELEMENT lastname (# PCDATA ) > Le lecteur intéressé par les DTDs pourrait consulter [9, 10, 13] où il trouvera plus de détails XML Schema XML Schema est une alternative aux DTDs, basée sur XML [13,15]. Il définit un modèle de contenu pour une classe de documents XML et présente plusieurs avantages par rapport aux DTDs : il est écrit en XML [4, 9, 13, 15], il permet de spécifier le type de données [4, 15], il est extensible, il supporte les espaces de noms, etc. On parle de XML Schema Definition (XSD) pour désigner la grammaire de XML Schema. Devenu une recommandation 2 du W3C depuis le 2 Mai 2001 et étant plus riche et plus puissant, on admet actuellement que XML Schema sera le successeur des DTDs [15]. C est pour cette raison que nous n utiliserons pas de DTD dans le cadre de ce travail de fin d études. Nous ne considérerons que les schémas donnés en XML schema. Le lecteur trouvera quelques règles d écriture des schémas XSD au chaiptre 5, p.28. Dans l immédiat nous nous contentons de donner dans le listing 2.3, un exemple d un XML Schema qui peut définir le document XML du listing XML Schema est un standard W3C

16 CHAPITRE 2. XML EN BREF 15 Listing 2.3 Exemple d un XML Schema -XSD <? xml version =" 1.0 " encoding ="ISO "?> <! -- Une liste de personnes -- > < xs:schema xmlns:xs =" http: // /2001/ XMLSchema "> < xs:element name =" personslist " type =" personslisttype "/> < xs: complextype name =" personslisttype " > < xs:element name =" person " type =" persontype "/> </ xs: complextype > < xs:complextype name =" persontype "> < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > </ xs:schema > 2.3 Document XML bien formé et valide Document bien formé Un document XML est dit bien formé 3 s il est syntaxiquement correct [1, 2, 9, 15, 19] ; c est-à-dire qu il respecte les règles énoncées au paragraphe (p. 13). Il est exigé que tout document XML à traiter soit bien formé Document valide Un document XML sera dit valide s il est bien formé et conforme à la DTD ou au schéma XML (XML schema) qui définit sa structure. Cette condition est capitale dans la conception et l implémentation de l ETL parce qu il faut veuiller à ce que les informations importées dans l entrepôt de données XML soient stockées en conformité avec les exigences du schéma de ce dernier. Dans la suite du présent travail, nous supposerons que le document XML de données est valide à la source (Base de données opérationnelle). 2.4 Arborescence d un document XML - DOM Les deux API (Application Programming Interface) les plus utilisées pour accéder aux données et aux structures des documents XML sont le DOM (Document Object Model) et le SAX (Simple API for XML). Dans ce travail, nous utiliserons le DOM qui présente un document XML dans une structure arborescente où les éléments, les attributs et les textes sont définis comme des noeuds [15]. Cette structure est facile à manipuler et offre une certaine aisance à accéder à n importe quelle partie du document. Ceci nous sera particulièrement important pour l implémentation de l interface graphique 4 à partir de laquelle l utilisateur 3 En Anglais, on dit Well formed 4 Le fichier XSLT sera généré en fonction des choix faits sur cette interface

17 CHAPITRE 2. XML EN BREF 16 choisira les types d informations à importer dans l entrepôt de données. Nous n avons pas l intention de nous attarder sur le DOM. Nous voulons tout simplement donner à la figure 2.1 une illustration de l arborescence correspondant au document XML du listing 2.1 (p. 13) (Root Element) personslist (Element) person (Element) person (Element) person (Element) firstname (Element) middlename (Element) lastname (Element) firstname (Element) middlename (Element) lastname (Element) firstname (Element) middlename (Element) lastname (Text) Johnny (Text) Shele (Text) Tsheke (Text) Pierre (Text) Manneback (Text) Esteban (Text) Borrageiros (Text) Zimanyi Fig. 2.1 Exemple d une arborescence XML 2.5 Parcours d un arbre XML Dans un arbre de représentation d un document XML [15] : Le noeud supérieur (le premier noeud) est appelé Racine (Root), Un noeud ascendant est appelé parent, Un noeud descendant est appelé enfant (child), A part la racine, chaque noeud a un et un seul parent direct (père), Un noeud peut avoir 0 ou plusieurs enfants, Une feuille est un noeud qui n a pas d enfant, Les noeuds déscendants d un même père (direct) sont dits frères (siblings). A partir d un noeud, on peut parcourir l arbre d une des manières suivantes. En allant vers un descendant (child). Ceci n est pas possible pour une feuille. En allant vers un frère (next, previous) si possible. En remontant vers le noeud père (parent) si on n est pas à la racine. La figure 2.2 illustre le parcours d une partie de l arbre de la figure Remarque importante sur l utilisation de l API DOM Nous attirons l attention du lecteur et plus précisement du programmeur sur le fait qu indépendamment de la validité du document (voir paragraphe 2.3.2), la manipulation de l arbre XML avec l API DOM retourne (en PHP, JAVA,...) des noeuds Text de part et d autre d un noeud Element. Sauf l élément racine (Root Element) qui apparaît comme un fils du noeud document (Document) [11, 12]. Il sera particulièrement utile de tenir compte de cette réalité lors du processing des schémas XSD en vue de générer un fichier XSLT automatiquement. Pour l arbre de la figure 2.2, on obtiendrait en réalité celui de la figure 2.3. Il faut donc être attentif dans la sélection des

18 CHAPITRE 2. XML EN BREF 17 (Root Element) personslist firstchild (Element) person (Element) firstname parent (Text) Pierre (Element) person parent children (Element) middlename lastchild (Element) person (Element) lastname parent (Text) Manneback Fig. 2.2 Parcours d un arbre XML noeuds utiles pour éviter des surprises. Les algorithmes proposés dans la suite permettront de résoudre ce problème dans le cadre de l ETL. De manière plus générale, on peut tester le type du noeud présent puis effectuer un traitement approprié. Les personnes confrontées à ce problème pourront consulter [12]. 2.7 Transformation d un document XML - XSLT La transformation est l opération par laquelle on convertit un document XML (source) dans un autre format (destination) : HTML, XML,etc. Le langage de programmation le plus utilisé à cet effet est le XSL Transformation (XSLT). XSL (Extensible Stylesheet Language) est la composition des trois langages : XSLT, XPath qui permet de parcourir l arbre du document et XSL-FO qui permet le formatage. Dans le cadre de cette conception de l ETL de données XML, nous ne nous intéresserons qu à XSLT et XPath dont nous donnerons un petit rappel au chapitre 6. Notre préoccupation est de transformer à l aide de XSLT, un arbre XML valide par rapport au schéma source, en un arbre XML respectant le XSD de l entrepôt de données XML (destination). Les expressions XPath seront utilisées pour naviguer dans le document.

19 CHAPITRE 2. XML EN BREF 18 (Document) (Root Element) personslist firstchild (Text) (Element) person (Text) (Element) person (Text) (Element) person lastchild (Text) Fig. 2.3 Illustration des noeuds réellement obtenus avec l API DOM

20 Chapitre 3 Les entrepôts de données XML 3.1 Base de données XML On appelle base de données XML, un logiciel capable de stocker, importer, exporter et rendre accessible les données XML [18]. Le paragraphe 3.2 survole les manières de conserver ces types d informations. 3.2 Stockage des données XML Il y a plusieurs façons de stocker les données XML. Les techniques les plus utilisées sont les suivantes [3]. Dans des fichiers de type text : Les informations sont conservées dans les fichiers XML par exemple. La gestion de ces fichiers peut se faire éventuellement dans des collections structurées elles-mêmes en hierarchie comme dans un système de fichier (Linux, Unix). Dans une base de données traditionnelle : Ici, on extrait les données et on les garde au format du SGBD. On utilisera des tables, par exemple, si on a affaire à une base de données relationnelle. On veuillera à disposer d un modèle de données pour permettre la restitution en XML au moment d extraire les informations. Dans un système hybride : Cette technique fait le mixage des deux approches précédentes. 3.3 Classification des bases de données XML On classifie habituellement les bases de données XML en deux grands groupes : celles avec support XML et celles qu on qualifie de natives Base de données avec support XML Dans ce groupe, on trouve les bases de données traditionnelles (relationnelle, objet,...) avec une couche ou interface permettant l importation et/ou l exportation des données en XML, et stockent ces informations au format du SGBD. En se basant sur le modèle DOM où un document XML peut être vu comme un arbre (un objet), on peut stocker ce dernier comme un objet dans une base de données objet. Dans le 19

21 CHAPITRE 3. LES ENTREPÔTS DE DONNÉES XML 20 même ordre d idées, en définissant une certaine correspondance entre le document XML et certaines tables, on peut enregistrer les données XML dans une BD relationnelle Base de données XML Native Dans ce groupe, on définit un modèle logique du document en fonction de XML et on utilise un document XML comme unité fondamentale de stockage. Dans une base de données relationnelle, on a une ligne de table comme unité de stockage. Mais, dans une base de donnée XML Native (Native XML Database - NXD), c est un document XML qui est l unité de stockage [18]. Actuellement il existe plusieurs SGBD XML natifs : exist, Apache XIndice, Tamino, Entrepôt de données Dans une organisation, un entrépôt de données (Data Warehouse) est une base de données intégrant des informations [19] : issues des sources hétérogènes, datées (historisées), non modifiables (lecture seule), et organisées de manière à permettre des analyses statistiques et une exploitation en gestion stratégique. La figure 3.1 illustre l implémentation d un entrepôt de données à l université d état d Arizona aux USA (Arizona State University - ASU ) Source des données de l entrepôt Les données sont issues des BD opérationnelles qui ont, en général, des schémas différents. La mise à jour ne se fait pas toujours périodiquement mais parfois sporadiquement. Ces données seront agrégées pour éviter les redondances et permettre la facilité d accès et d analyse Structure de données d un entrepôt de données Dans un entrepôt de données, les informations sont en géneral représentées dans un modèle de données en étoile ou en cube Interrogation de l entrepôt de données Les deux approches les plus utilisées sont R-OLAP (Relational On-Line Analytical Porcessing) : lorsqu on a des requêtes SQL et M-OLAP (Multidimensional On-Line Analytical Porcessing) : si on a un modèle en cube de plusieurs dimensions. De manière plus générale, on parle de OLAP qui englobe aussi d autres approches (H-OLAP 1, S-OLAP 2 et D-OLAP 3 ) 4 1 Hybrid OLAP 2 Spatial OLAP 3 Dynamic ou Desktop OLAP 4 Voir http ://fr.wikipedia.org/wiki/olap

22 CHAPITRE 3. LES ENTREPÔTS DE DONNÉES XML 21 Fig. 3.1 Exemple de l entrepôt de données d Arizona State University [14] 3.5 Entrepôt de données XML Un entrepôt de données XML est un entrepôt de données capable de accepter des sources de données XML, fournir les données ou document XML en output, supporter les techniques de manipulation habituelle des documents XML (XSLT, XPATH,...) et, agréger les données issues des différentes sources de sorte qu elles soient valides par rapport aux schémas de stockage. La figure FIG.3.2 illustre l entrepôt de données XML proposé dans [3]. Comme nous l avons dit au paragraphe 3.2 (p.19), il y a plusieurs façons de stocker les documents XML. Cette réalité implique une diversité de manières d implémenter un entrepôt de données XML. Dans ce chapitre, le but n est pas d expliquer la conception ou l implémentation d un entrepôt de données XML dans sa globalité mais de donner un aperçu général.

23 CHAPITRE 3. LES ENTREPÔTS DE DONNÉES XML 22 Fig. 3.2 Exemple d un entrepôt de données XML : DAWAX [3] 3.6 Entrepôt de données XML et échange d informations Un des avantages que peut offrir un entrepôt de données XML est notament la possibilité d échanger les informations par http en intranet ou Internet. Grâce à la technologie XML, on peut utiliser des standards. Ce qui ne nécessite pas d avoir une API propriétaire quelconque. Cette solution est particulièrement intéressante pour une organisation (societé mutinationale, grosse administration,...) répartie sur plusieurs sites ou qui inter-agit avec des sous-traitants par exemple. On notera que la plupart des SGBD actuels prévoient au moins la possibilté d intégrer les données XML. Dans SQL Server 2005, Integration Service [8] par exemple, malgré le stockage des informations dans une base de données relationnelles (SQL Server), on prévoit tout de même la possibilité d importer les données à partir d une source XML. Cette source peut être locale (un fichier) ou distante (accessible par http). Nous verrons plus tard que cette stratégie s intègre parfaitement dans l outil ETL que nous proposons. 3.7 Entrepôt de données vs entrepôt de données XML Dans la table 3.1 nous reprenons une synthèse d éléments distinguant, de manière générale, un Entrepôt de données d un entrepôt de données XML [1]. Rappelons que dans la pratique, la différence est un peu nuancée parce que de nos jours, les systèmes mis réellement en production sont souvent hybrides. c est-à-dire, qu on essaie de combiner les différentes approches pour tirer au mieux les avantages de chacune. Après tout, chacun construit son entrepôt de données (XML) selon ses besoins. Bill Inmon 5 n aurait-il pas dit : Un Data Warehouse ne s achète 5 On le considère généralement comme le père du concept Data Warehouse

24 CHAPITRE 3. LES ENTREPÔTS DE DONNÉES XML 23 Entrepôt de données Entrpôt de données XML Données Données relationnelles XML Valeurs numériques texte Approvisionnement filtrage filtrage classification, semantique..., Integration et vue relations XML cube Interrogation SQL XQuery, XSLT Exploitation OLAP lecture outils statistiques production des rapports production des rapports Tab. 3.1 Différence entre entrepôt de données et entrepôt de données XML [1] pas, il se construit 6. On peut donc utiliser telle ou telle autre technique pour mieux exploiter les données. 6 http ://fr.wikipedia.org/wiki/entrepôt de données

25 Chapitre 4 ETL : État de l art Dans ce chapitre, nous survolons l état de l art du processus ETL. Nous examinerons les possibilités offertes actuellement par l évolution technologique. Ceci permettra de mieux comprendre par la suite la contribution qu apporte la technique que nous proposons. 4.1 Exécution parallèle Compte tenu du développement des technologies de l information et de la communication, on est de plus en plus confronté à un volume de données important. Ceci néssecite d adapter les techniques d extraction et/ou de filtrage pour que l outil ETL ne prenne pas trop de temps. Actuellement, on utilise de plus en plus le parallélisme [17]. Ce dernier peut s appliquer lorsqu il faut traiter : un gros fichier source, les données en pipeline ou plusieurs sources de données Un gros fichier source Lorsque les données de la source se trouvent dans un fichier séquentiel par exemple, la taille de ce dernier peut avoir un impact non négligeable sur les applications qui doivent le manipuler. Dans le cas d un fichier XML, si on utilise une API DOM, on risque de rencontrer des difficultés en voulant charger l entièreté de l arbre en mémoire. Les bases de données exist par exemple, fonctionnent moins bien lorsque le nombre d entrées devient relativement important. Une solution consiste à découper (split) le fichier en des morceaux de tailles plus facilement manipulables. De cette manière, on peut accéder à plusieurs parties simultanément Pipeline La technique de pipeline permet de traiter plusieurs composants d un même fichier simultanément. Pendant que l on fait une opération ou une manipulation sur un élément on peut en même temps faire un autre traitement sur l élément suivant. 24

26 CHAPITRE 4. ETL : ÉTAT DE L ART Plusieurs sources Lorsqu on est en présence de plusieurs sources (fichiers), on peut envisager de traiter un certain nombre en parallèle. Si un processus est occupé à trier un fichier par exemple, on peut demander à un autre processus de supprimer les doublons d un autre fichier. De cette manière on gagne en temps parce que le traitement du 2e fichier commence plus tôt que si on devait attendre de finir le tri du 1er. Signalons tout de même que le Multi-processing/Multi-threading n est pleinement opérationnel que sur des systèmes multi-processeurs! Heureusement qu aujourd hui la plupart des machines supportant les entrepôts de données sont multiprocesseurs. 4.2 Evolution avec le temps Comme pour les autres logiciels, il est indispensable que l outil ETL puisse évoluer avec le temps. On doit donc pouvoir le mettre à jour facilement et si possible garder la compatibilité avec les versions ou les applications antérieures. On doit par exemple pouvoir se connecter à des nouveaux SGBD capables de fournir des données au format supporté par l ETL. Il faut également pouvoir supporter une mise à jour éventuelle du/des SGBD constituant l entrepôt. Il convient de noter que les bases de données opérationnelles évoluent et qu on pourrait vouloir garder dans l entrepôt des informations auxquelles on n avait pas songé au moment de l implémentation de l entrepôt de données. A titre d exemple, à un moment, on peut vouloir conserver une liste de personnes (clientes) de l étranger. Malheureusement, la structure d adresse est différente de ce qu on a prévu initialement (certains champs en plus ou en moins,...). Il faut que l ETL puisse s adapter très facilement dans ces genres de problèmes. 4.3 Compatibilité avec les systèmes d exploitation A part les ETL incorporés dans les produits Microsoft comme SQL Server Integration Service qui ne fonctionnent essentiellement que sous Windows, la plupart des fabricants essaient de rendre compatibles leurs produits avec un grand nombre de systèmes d exploitation (Windows, Linux/Unix, Mac-OS,...). Notre prototype a été développé en PHP. Ce qui permet de l intégrer facilement dans n importe quel serveur web supportant ce langage. On pourrait utiliser le serveur web Apache 1 que l on peut télécharger gratuitement sur le site ETL spatial L ETL spatial est poussé par le geographic information system (GIS) pour permettre l interopérabilité entre les divers formats des données géographiques [17]. Malgré le fait que plusieurs fabricants des logiciels ETL commencent à incorporer les spécifications de l ETL spatial, le problème est encore loin d être résolu. Nous pensons tout de même que le noyau de notre ETL pourrait s adapter aux besoins de GIS. En effet, comme nous l avons dit précédemment, plusieurs technologies actuelles supportent l importation et l exportation de données en XML. Le fait que notre ETL effectue 1 Open source

27 CHAPITRE 4. ETL : ÉTAT DE L ART 26 une transformation de XML vers XML fait qu on peut avoir une interopérabilité en allant séquentiellemment de la manière suivante. exporter les données en XML (à partir de la source), passer les données source XML dans l ETL, obtenir les données destination XML conformes au schéma accepté par le système exploitant les données, importer les données XML dans le système de destination. On obtient ainsi les données dans l autre format. Les figures 1.2 et 1.3 illustrent cette possibilité. 4.5 Quelques logiciels ETL Dans cette section nous présentons quelques principaux logiciels ETL que l on peut trouver actuellement sur le marché. La liste est loin d être exhaustive mais elle donne une idée générale des tendances actuelles. Dans cette liste, nous distinguons les ETLs open source des ETLs propriétaires. Habituellement les prémiers sont téléchargeables gratuitement mais pour les autres, seule une version dévalution peut être téléchargée et installée de manière gratuite ETLs propriétaires SQL Server Integration Services Le SQL Server 2005 Integration Services (SSIS) comporte un outil ETL permettant d intégrer les données en provenance des diverses sources hétérogènes 2. Comme SQL server 2005 prend en charge les données XML en mode natif, on peut manipuler ces types d informations. Le problème est que cet outil ETL ne fonctionne que dans un SSIS qui ne peut lui même être installé que sous Windows. Ce qui ne permet pas de l installer dans un autre environnement Oracle Data Integrator Il s agit d un ETL de Oracle 3 pouvant tourner sur plusieurs systèmes d exploitation. Il peut se connecter sur plusieurs plateformes d entrepôt de données (Teradata, IBM DB, Oracle,...) ainsi qu à des technologies ERP, LDAP, XML, etc. A l origine, ce produit appartenait à la société Sunopsis 4 qui a été rachetée par Oracle en Oxio Data Integration La société française Oxio ( développe un ETL 100% web. Cette solution, comme dans notre prototype, a l avantage de ne pas nécessiter des applications clientes. Il suffit de disposer d un navigateur web et d un accès réseau pour pourvoir utiliser l application selon les autorisations accordées. Le fait qu il soit développé en SQL server et.net nous semble limiter les possibilités de son installation sur d autres systèmes d exploitation comme Linux, Mac-Os, etc. 2 voir 3 voir 4 voir

28 CHAPITRE 4. ETL : ÉTAT DE L ART ETLs open source Talend open studio Talend Open Studio est un ETL graphique et open source développé en Java/Eclipse. Pour un fichier XML se présentant en entrée, il le lit ligne par ligne pour le scinder en champs et envoie ces derniers tels que définis dans le schéma au composant suivant du job, via un lien Row. L approche peut paraître relativement lente pour l accès aux éléments mais si on tient compte de la lourdeur des applications java, il ne serait peut-être pas optimal d envisager le chargement d un grand-t-arbre XML en mémoire. Le lecteur trouvera plus d informations sur Scriptella Scriptella ( est un ETL open source développé en java. Il nous a semblé relativement moins approprié pour une production réelle. En effet, il utilise essentiellement le SQL pour les transformations. Ce qui n est pas spécialement adapté pour les données XML. Il faut de toutes les façons aller éditer un fichier XML pour préciser les informations de connexion (host, login,...) et les requêtes éventuelles à exécuter.

29 Chapitre 5 Schéma XML canonique pour un processus ETL Dans ce chapitre, nous expliquerons comment écrire un schéma XML en vue de simplifier le parcours automatique de son arborescence dans un processus ETL. Avant d y arriver, nous donnerons d abord un petit rappel sur les XSD. 5.1 Motivations Nous voulons permettre à l utilisateur de faire un mapping entre les schémas source et destination. Il nous faut donc lui présenter ces schémas graphiquement sur l écran. Notons également que nous souhaitons une application web la plus légère possible. Tenant compte du fait que les browsers web actuels sont presque tous capables d afficher (faire du Parsing) un fichier XML, une idée serait de passer tout simplement le schéma XSD au navigateur web pour affichage. Afficher un document XSD comme tel pourrait être extrêmement incorfortable pour un utilisateur dépourvu des notions solides de XML schema. Notre stratégie est donc de créer un fichier XML ne contenant que la structure (de l arbre) représenté dans le fichier XSD. Dans le cas du schéma du listing 2.3 (p. 15), nous voulons quelque chose comme ce qui est dans le listing 5.1. Listing 5.1 Visualisation de la structure définie dans le listing 2.3 <? xml version =" 1.0 " encoding ="ISO "?> < personslist > <person birthdate =" xs:date "> < firstname /> < middlename /> < lastname /> </ person > </ personslist > De cette manière l utilisateur voit directement et de façon plus claire l imbrication et la séquence des éléments. Chaque élément porte les attributs éventuels définis dans le fichier XSD. La difficulté c est de pouvoir parcourir automatiquement tout schéma XML d une source ou 28

30 CHAPITRE 5. SCHÉMA XML CANONIQUE POUR UN PROCESSUS ETL 29 de la destination en vue d extraire non pas l arborescence du schéma XSD comme telle mais celle du type de document qu il définit. Arrêtons-nous un instant sur cette problématique et regardons dans la section suivante, d où proviendrait le problème. 5.2 Difficulté d extraire une structure définie dans un schéma Un schéma XSD étant un fichier XML, on peut l écrire de plusieurs manières. A chaque présentation du schéma, correspond une arborescence différente mais l arbre défini lui-même garde la même structure. Le XML schema du listing 2.3 (p. 2.3) par exemple, pourrait encore s écrire comme dans le listing 5.2. Listing 5.2 Autre façon d écrire le schéma du listing 2.3 <? xml version =" 1.0 " encoding ="ISO "?> <! -- Schéma d une liste des personnes -- > < xs:schema xmlns:xs =" http: // /2001/ XMLSchema "> < xs:element name =" personslist "> < xs: complextype > < xs:element name =" person " type =" persontype "/> </ xs: complextype > </ xs:element > < xs:complextype name =" persontype "> < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > </ xs:schema > Dans le code du listing 5.2, l élément person est déclaré directement à l intérieur de la définition de l élément personslist. Le fait de déclarer person avec un attribut type= persontype permet de donner sa définition à l extérieur (dans un xs :complextype). Remarquez que ce même schéma peut encore s écrire comme dans le listing 5.3. Listing 5.3 Encore une autre manière d écrire le schéma du listing 2.3 <? xml version =" 1.0 " encoding ="ISO "?> <! -- Schéma d une liste des personnes -- > < xs:schema xmlns:xs =" http: // /2001/ XMLSchema "> < xs:element name =" personslist "> < xs: complextype > < xs:element name =" person "> < xs: complextype > < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > </ xs:element > </ xs: conplextype > </ xs:element > </ xs:schema >

31 CHAPITRE 5. SCHÉMA XML CANONIQUE POUR UN PROCESSUS ETL 30 Dans la méthode du listing 5.3, les éléments fils sont toujours définis à l intérieur de la déclaration de l élément père. Si nous devrions dessiner les arbres des schémas des listings 2.3, 5.2 et 5.3, nous verrions sans doute que les branches ont des structures différentes. Et pourtant, ils définissent exactement le même type de document. En parcourant l arborescence du schéma pour extraire le type de document qui y est défini, on se rend compte que la définition des éléments fils peut être dans les sous-arbres descendants de la branche courante ou carrément dans une autre branche (de l arbre du schéma). D où la difficulté de trouver la définition des éléments fils et des attributs éventuels dans un parcours automatique. Une question qui nous revient à l esprit est de savoir si toutes ces méthodes d écriture des schémas sont adaptées pour les entrepôts de données. Si dans un entrepôt de données (XML) on évite la répétition inutile des informations, pourquoi ne pas avoir la même exigence dans la définition des schémas? 5.3 Eviter les redondances dans les schémas Comme nous venons de le voir au paragraphe 5.2, un schéma peut s écrire de plusieurs methodes. Malheureusement, il arrive que dans certains cas, on trouve des parties entières de code qui se répètent. Considérons le schéma du listing 2.3, si nous voulons définir une liste de personnes subdivisée en une sous-liste de femmes et une sous-liste d hommes, la méthode utilisée dans le listing 5.3 risque de produire des redondances parce que chacune des deux sous-listes pourra contenir la définition des mêmes informations définissant les identités d une personne (firstname,name,...). Ce qui donnerait le code du listing 5.4, par exemple. Listing 5.4 Illustration des redondances dans un XSD <? xml version =" 1.0 " encoding ="ISO "?> <! -- Une liste de personnes -- > < xs:schema xmlns:xs =" http: // /2001/ XMLSchema "> < xs:element name =" personslist "> < xs: complextype > <! -- sous liste d hommes --> < xs:element name =" menlist "> < xs: complextype > < xs:element name =" man "> < xs: complextype > < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > </ xs:element > </ xs: complextype > </ xs:element > <! -- sous liste de femmes --> < xs:element name =" womenlist "> < xs: complextype > < xs:element name =" woman "> < xs: complextype >

32 CHAPITRE 5. SCHÉMA XML CANONIQUE POUR UN PROCESSUS ETL 31 < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > </ xs:element > </ xs: complextype > </ xs:element > </ xs: complextype > </ xs:element > </ xs:schema > Le schéma du listing 5.4 est plus lourd à manipuler. On voit que les éléments man et woman sont de même type mais la manière dont ils sont définis agrandit inutilement l arbre du schéma. Dans un entrepôt de données XML, on peut faire face à des schémas relativement grands. Il faut donc éviter des répétions inutiles pour ne pas perdre trop de temps dans le traitement de XSD. Nous savons aussi qu une erreur sur le traitement de schéma peut avoir des conséquences sur : l interface utilisateur : l interface permettant de faire le mapping entre le schéma source et destination l extraction des données à la source et le chargement de données à la destination. Il nous faut donc proposer quelques règles claires permettant d écrire un XSD de façon plus appropriée au processus ETL et aux entrepôts de données XML. Voyons d abord, en général, comment écrire un XSD. 5.4 Règles génerales d écriture d un XSD Dans cette section, nous survolons quelques règles d écriture d un XSD. Nous ne reprenons que les points importants dont le rappel nous semble indispensable à la bonne compréhension des règles d écriture d un schéma canonique. Le lecteur trouvera plus d informations dans [4, 15]. Notons d abord que l élément spécial schema (<xs:schema>) est la racine (Root Element) de l arbre XSD. Pour définir les éléments et/ou les attributs on procède de la manière suivante. La définition d un attribut se fait en spécifiant son nom dans l attribut name de l élément attribute (<xs:attribute>). La définition d un élément se fait en spécifiant son nom dans l attribut name de l élément element (<xs:element>). On distingue deux types d éléments : le type simple et le type complexe Un élément de type simple Un élément de type simple ne peut contenir ni autre élément, ni attribut. Il ne peut contenir que du texte. L élément firstname défini dans le listing 2.3 (p. 15) par exemple, est de type simple : <xs:element name="firstname" type="xs:string"/> De manière générale, on définit un élément de type simple comme suit.

33 CHAPITRE 5. SCHÉMA XML CANONIQUE POUR UN PROCESSUS ETL 32 <xs:element name="elemname" type="elemtype"/> où elemname est le nom de l élément que l on veut définir et elemtype un type simple. Parmi les types simples, on peut citer : xs : string une chaîne de caractères xs : decimal une valeur numérique signée ou non signée composée de 18 chiffres tout au plus xs : integer une valeur entière xs : boolean une valeur booléenne qui peut être true (vrai) ou false (faux). Les valeurs 1 et 0 indiquent respectivement true et false. xs : date la date qui doit s encoder au format AAAA-MM-JJ où AAAA est l année, MM le mois et JJ le jour du mois. xs : time l heure au format HH : MM : SS où HH, MM et SS désignent respectivement l heure, les minutes et les secondes Un élément de type complexe Un élément de type complexe peut contenir d autres éléments et/ou des attributs. Il y deux façons de définir un élément de type complexe : 1. en définissant les éléments fils et les attributs éventuels à l intérieur de la définition de l élément de type complexe ; 2. en définissant les éléments fils et les attributs éventuels à l extérieur Définitions des fils à l intérieur La définition des éléments descendants à l intérieur se fait de la manière suivante <xs:element name="elemname"> <xs:complextype> <!--mettre les enfants ici --> </xs:complextype> </xs:element> Les éléments man et woman du listing 5.4 (p.30) par exemple, sont définis selon cette méthode Définitions des fils à l extérieur Dans cette méthode, on définit un type complexe qui contiendra les fils et les attributs éventuels. Les éléments de type complexe correspondants sont définis en précisant le nom de ce type dans l attribut spécial type. On aura donc les codes suivants dans le fichier XSD. <xs:element name="elemname" type="complextypename"/> <xs:complextype name="complextypename"> <!--mettre les enfants ici --> </xs:complextype> où elemname est le nom de l elément de type complexe que l on définit et complextype- Name, le nom du type complexe. Le listing 5.5 montre un exemple de définition utilisant cette méthode.

34 CHAPITRE 5. SCHÉMA XML CANONIQUE POUR UN PROCESSUS ETL 33 Listing 5.5 Exemple de définition d un élément de type complexe < xs:element name =" man " type =" persontype "/> < xs:complextype name =" persontype "> < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > 5.5 Règles canoniques Dans cette section, nous présentons quelques règles permettant d écrire un schéma XSD canonique dans le cadre d un processus ETL. Comme nous venons de le voir précédemment, la définition d un élément de type complexe peut avoir un impact important sur le nombre de noeuds de l arbre du schéma. Il nous faut établir quelques règles permettant de définir ce type d éléments sans augmenter inutilement le contenu du fichier XSD. Le schéma obtenu doit également respecter les normes du W3C. Les règles proposées dans le cadre de ce travail sont les suivantes : Seul l élément racine ne peut être défini comme fils direct de l élément schema (<xs:schema>). Tout autre élément ne peut être défini que dans un type complexe. Le nom d un type complexe ne peut en aucun cas avoir pour préfixe, celui défini dans l espace de nom 1 suivi du caractère :. Un élément complexe est toujours défini comme au paragraphe (p.32). Les éléments de type complexe qui ont des définitions identiques doivent se déclarer comme étant de même type complexe. En appliquant ces règles, on évite de gonfler le code inutilement comme dans le listing 5.4. L élement man et woman sont de même type. Il faut définir le type complexe une seule fois. Le listing 5.6 montre un exemple de schéma canonique éliminant les redondances du listing 5.4. Listing 5.6 Exemple d un schéma canonique <? xml version =" 1.0 " encoding ="ISO "?> <! -- Une liste de personnes -- > < xs:schema xmlns:xs =" http: // /2001/ XMLSchema "> < xs:element name =" personslist " type =" personslisttype "/> < xs: complextype name =" personslisttype " > < xs:element name =" menlist " type =" menlisttype "/> < xs:element name =" womenlist " type =" womenlisttype "/> </ xs: complextype > < xs:complextype name =" menlisttype "> < xs:element name =" man " type =" persontype "/> </ xs: complextype > < xs: complextype name =" womenlisttype " > < xs:element name =" woman " type =" persontype "/> </ xs: complextype > 1 voir [4, 10, 15]

35 CHAPITRE 5. SCHÉMA XML CANONIQUE POUR UN PROCESSUS ETL 34 < xs:complextype name =" persontype "> < xs:element name =" firstname " type =" xs:string "/> < xs:element name =" middlename " type =" xs:string "/> < xs:element name =" lastname " type =" xs:string " use =" require "/> < xs:attribute name =" birthdate " type =" xs:date "/> </ xs: complextype > </ xs:schema > Un schéma canonique est plus compact et plus facile à parcourir. On peut à présent trouver une stratégie de parcourir systématiquement tout schéma canonique de la source ou de la destination pour extraire facilement la structure qui y est définie. 5.6 Comment parcourir un schéma canonique Le point clé du parcours d un schéma canonique XSD consiste à tester le type de l élément défini : Si c est un attribut, alors terminer pour cette branche, Si c est un élément de type prédéfini dans le langage XSD (type Simple), alors on a fini pour cette branche, Sinon, prendre le nom du type (complexe ou défini par l utilisateur) dans l attribut type, chercher la branche qui définit le type dont on vient de prendre le nom, effectuer un appel récursif sur chacun des fils éventuels déclarés dans ce type, terminer et remonter pour passer à l élément suivant si c est possible. Comme nous pouvons le constater dans ce parcours et dans les algorithmes qui vont suivre, les techniques de récursion sont abondament utilisées dans ce travail.

36 Chapitre 6 Générateur automatique de fichier XSLT Ce chapitre présente la conception d un générateur automatique de fichier XSLT à partir des schémas définis au chapitre 5. C est ce fichier qui sera appliqué aux données XML source pour extraire et transformer les informations. Nous savons que les langages les plus utilisés pour la transformation des documents XML sont XQuery et XSLT. Mais pourquoi a-t-on choisi XSLT et pas XQuery? Pour répondre à cette question, voyons d abord un petit rappel sur chacun de ces langages. 6.1 XPath XPath est un langage utilisé pour naviguer entre les éléments et les attributs dans un document XML [15]. Dans la table 6.1, nous reprenons quelques expressions XPath couramment utilisées. Expression Description / sélectionne depuis la racine // sélectionne les noeuds du document, qui correspondent à la sélection.. sélectionne le noeud sélectionne les attributs. Tab. 6.1 Qeulques expressions XPath 6.2 XQuery XQuery est un langage d interrogation des données XML. En d autres termes, c est un langage permettant d écrire les requêtes sur les documents XML comme on le fait avec SQL sur les bases de données relationnelles. XQuery utilise les expressions XPath pour accéder aux noeuds du document. Dans cette section, nous voulons tout simplement donner un aperçu général du langage XQuery. Le lecteur 35

37 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT 36 trouvera plus d informations sur Les fonctions les plus élémentaires en XQuery sont celles d ouverture de document et les expressions FLWOR 1 [7] Ouverture des fichiers L ouverture des documents en XQuery se fait en utilisant la fonction spéciale doc. Pour ouvrir un fichier nommé personslist.xml, par exemple, on écrira doc("personslist.xml") Expressions FLWOR Les expressions FLWOR sont les plus simples en XQuery : For : permet de sélectionner les éléments, Let : permet de déclarer une variable et de lui attribuer une valeur, Where : permet, comme en SQL, de spécifier les conditions à satisfaire, Ordered By : permet de préciser l ordre à suivre dans le tri. 6.3 XSLT XSLT est essentiellement utilisé pour la transformation des documents XML. Il définit ses opérations selon la représentation en arbre des documents XML [5] et utilise les expressions XPath pour accéder aux noeuds. Dans ce paragraphe, nous survolons quelques fonctions de base les plus utilisées en XSLT. Le lecteur pourrait approfondir ses connaissances en consultant [5, 15] Déclaration d un document XSLT Comme nous l avons dit précédemment, un document XSLT est un document XML. Pour déclarer un document XSLT, il faut que l élément racine soit <xsl:stylesheet> ou <xsl:transform> En ajoutant les attributs utiles, nous obtenons <xsl:stylesheet version="1.0" xmlns:xsl=" ou <xsl:transform version="1.0" xmlns:xsl=" Quelques notions de base Ci-après, nous présentons quelques concepts XSLT en vue de donner au lecteur novice une idée générale lui permettant de comprendre la suite de ce travail. template contient les règles à appliquer lorsqu on rencontre un noeud précis. Pour définir un template, on utilise l élément <xsl:template> dont l attribut match permet de préciser le noeud ciblé. 1 Voir le paragraphe 6.2.2

38 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT 37 value-of permet d extraire la valeur du noeud sélectionné. On utilise l élement <xsl:value-of> dont l attribut select précise ce qu il faut sélectionner. if permet de tester une condition. On fait usage de l élément <xsl:if> dont l attribut test indique l expression à tester. apply-templates permet d appliquer un template à l élément courant ou aux noeuds descendants. L élement utilisé est <xsl:apply-templates> 6.4 Pourquoi XSLT et pas XQuery? Nous avons préféré d utiliser XSLT dans notre ETL pour les raisons suivantes. XSLT utilise la synthaxe XML. C est un document bien formé. Il est donc facilement extensible. Historiquement, XQuery a été conçu pour être un langage de requêtes alors que XSLT est fait pour les transformations. La transformation est sans doute, la partie la plus difficile dans un processus ETL. XSLT s adapte facilement aux systèmes fonctionnant en pipeline [6]. La version 1.0 de XSLT est une recommandation W3C depuis 1999 et la 2.0 vient d être recommandée en janvier 2007 alors que XQuery 1.0 n est recommandée qu en janvier XSLT permet de parcourir tout le document source alors XQuery ne vise que certaines de ses parties. Le concept de template présent dans XSLT n existe pas dans XQuery [6]. les templates facilitent l écriture des règles de transformation. XSLT 2.0 inclut le formatage des nombres, dates et heures [6]. Ainsi, on pourrait par exemple, convertir le nombre 1127 en 1.127,00. Chose qu on ne pourrait pas faire avec XQuery du moins pour le moment. Les 2 langages sont basés sur les expressions XPath. Fondamentalement, il n y a pas des grandes différences entre les deux langages mais sur le plan fonctionnel, XSLT 2.0 offre plus de possibilité que XQuery [6]. Actuellement, on admet aussi que le XSLT est plus adapté pour la manipulation des documents. Nous choisissons donc XSLT parce que tant à la source qu à la destination, nous avons affaire avec des documents XML. Le choix de XQuery se fera : dans le traitement des schémas en vue de créer une interface où l utilisateur pourrait choisir ses correspondances (Mapping Interface) et dans l extraction de la structure définie par le schéma XSD en vue de la montrer à l utilisateur. Ce choix s explique aussi par le fait que XQuery s incorpore plus facilement dans les langages de programmation comme le PHP. 2 voir

39 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT Comment générer un fichier XSLT automatiquement Pour générer un fichier XSLT automatiquement, la stratégie consiste à ouvrir un fichier en écriture et y mettre les entêtes XSLT, parcourir l interface des correspondances (Mapping Interface) et à chaque type de correspondance, écrire le code XSLT adéquat dans le fichier, fermer le fichier XSLT. Dans notre implémentation dont le code PHP se trouve en annexe, ces tâches sont effectuées dans la fonction extracttransform. Ci-après, nous présentons une brève explication en métalangage pour garder la conception suffisamment indépendante du langage de programmation utilisé. Tous ces algorithmes propoés sont le résultat de notre propre conception Programme principal Le code du programme principal produisant le fichier XSLT se trouve dans le listing 6.1. Dans ce code : outfilexsl est le nom du fichier XSLT à créer, filexsl est le descripteur du fichier XSLT ouvert, fopen la primitive permettant d ouvrir un fichier, fclose la primitive de fermeture du fichier ouvert. Rappelons que ces deux primitives existent dans la plupart des langages de programmation et que l ouverture en écriture d un fichier qui n existe pas aura pour conséquence, la création d un nouveau fichier portant ce nom. Listing 6.1 La fonction qui génère le fichier XSLT function extracttransform ( nbelem ) outfilexsl :=" name of the output XSLT file "; filexsl := fopen ( outfilexsl," w"); // open file for writing fwrite ( filexsl," <? xml version =\"1.0\" encoding =\" ISO \" >\ n"); // write the XML declaration in the output file fwrite ( filexsl," < xsl : transform xmlns : xsl =\" http :// /1999/ XSL / Transform \" version =\"1.0\" >\n >") ; // write the XSLT declaration in the output file fwrite ( filexsl," < xsl : output method =\" xml \" encoding =\" ISO \"/ >\ n"); // The output method of the XSLT file is XML " generate the content of the XSLT file here!"; // process " nbelem " elements / attributes defined // in the source XSD fwrite ( filexsl," </ xsl : transform >\n"); // close the " xslt : transform " tag fclose ( filexsl ) // close the output file

40 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT Code XSLT selon la transformation demandée Dans ce paragraphe, nous présentons une façon de générer le code XSLT selon le type de transformation choisie par l utilisateur. Nous signalons tout de suite que dans le prototype que nous avons développé, nous n avons couvert que quelques configurations des transformations. Notre objectif étant de montrer tout simplement la faisabilité de générer un XSLT automatiquement. Pour un ETL à mettre en production, il faut essayer de couvrir au mieux les types des conversions possibles. Nous avons implémenté les cas des transformations suivantes. Transformation d un élément en un autre élément. Transformation des attributs (que l élément lui-même soit transformé ou pas). Transformation des éléments descendants. Dans le code du listing 6.2, on utilise, notamment, les variables suivantes. elsrc est le nom de l élément source à transformer éventuellement, eldst est le nom de l élément destination correspondant à la transformation, attribsrc est le nom de l attribut qu on veut transformer, attribdst est le nom de l attribut/élément en quoi se transforme attribsrc, elsrclst est la liste des noms des éléments définis à la source, eldstlst est la liste des noms des éléments définis à la destination. Listing 6.2 Production du code XSLT selon le type de transformation choisie while (" elsrclst is not empty ") elsrc :=" the next elem in elsrclst "; eldst :=" corresponding elem in eldstlst "; fwrite ( filexsl," < xsl : template match =\" elsrc \" >\n"); // one founds an element called elsrc. What to do? if (" eldst is not empty ") then fwrite ( filexsl," < eldst >") ; // open the tag of the correspoding element " Generate XSLT code for translating attributes of elsrc, if needed "; // we have to check wether attributes should be transformed // even if the elemenent itself is not taken. if (" eldst is not empty ") then fwrite ( filexsl," < xsl : apply - templates / >\n"); // apply template of children fwrite ( filexsl," </ eldst >") ; // close the tag of the destination element. else // there is no direct corresponding element fwrite ( filexsl," < xsl :if test =\" child ::*\" >\ n"); // Test whether the current element has any children fwrite ( filexsl," < xsl : apply - templates / >\n"); // apply template of children

41 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT 40 fwrite ( filexsl," </ xsl :if >\n"); fwrite ( filexsl," </ xsl : template >\n"); " remove elsrc from elsrclst "; // elsrc is processed Transformation des attributs de l élément courant Dans cette section nous proposons une stratégie permettant de créer le code XSLT pour transformer les attributs de l élément courant. Dans notre prototype, nous avons couvert les cas où : l attribut se transforme en un attribut de l élément correspondant au père dans la transformation, l attribut se transforme en élément. Dans le code du listing 6.3 (p.40) : attribsrclst est la liste des attributs de l élément courant de la source. Listing 6.3 Production du code XSLT pour transformer les attributs de l élément courant attribsrclst =" list of attributes of elsrc "; while ( attribsrclst is not empty ) // one must process all attributes attribsrc :=" the next attribute in attribsrclst "; attribdst :=" corresponding elem or attribute in eldstlst "; if( attribdst is an attribute of eldst ) then fwrite ( filexsl," < xsl : attribute name =\" attribdst \" >\n"); // create the attribute fwrite ( filexsl," < xsl : value -of select \"/ >\ n"); // take the value of the attribute fwrite ( filexsl," </ xsl : attribute >\n"); // close creation of attribute else if( attribdst is an element ) then fwrite ( filexsl," < attribdst >\n"); fwrite ( filexsl," < xsl : value -of select \"/ >\ n"); fwrite ( filexsl," </ attribdst >\n"); " remove attribsrc from attribsrclst "; Comment trouver l élément ou l attribut correspondant? Avant d envisager toute transformation, il faut d abord trouver ce qui correspond à l attribut ou à l élément que l on veut transformer. La résolution de ce problème est fortement lié au langage de programmation utilisé et à l interface des correspondances implémentée.

42 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT 41 Fig. 6.1 Interface des correspondances Dans notre prototype, l interface de la figure 6.1 montre un formulaire dans lequel on peut sélectionner un correspondant pour chaque élément ou attribut source. Ce formulaire peut être recupéré sous forme de tableau à deux colonnes ou sous forme de 2 vecteurs de même dimension. Il suffit alors de parcourir la colonne source et regarder à chaque fois s il y a un correspondant à la destination. 6.6 Autres opérations possibles Comme nous venons de le voir, nous n avons implémenté qu un nombre d opérations relativement limité dans le prototype pour illustrer la faisabilité d une génération automatique d un fichier XSLT. Dans un environnement de production réel, il serait souhaitable d implémenter certaines opérations plus compliquées comme celles que nous citons ci-après (liste non ex-

43 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT 42 haustive) Opérateur de fusion L opérateur de fusion permettra à l ETL de fusionner deux éléments suite à la demande de l utilisateur. Rappelons qu ici l utilisateur n est plus censé écrire la moindre ligne de code! Par exemple, si l entrée est la suivante, <middlename>shele</middlename> <lastname>tsheke</lastname> la fusion donnerait : ou encore <familyname>tsheke Shele</familyname> <familyname>shele Tsheke</familyname> Opérateur de séparation C est l inverse de la fusion définie au paragraphe Si nous mettons à l entrée <familyname>shele Tsheke</familyname> la séparation donnerait : <middlename>shele</middlename> <lastname>tsheke</lastname> Opérateur de transformation d un élément en attribut C est plus ou moins l inverse de ce que nous avons implémenté dans le prototype. Ici, un élément donné deviendrait un attribut d un autre élément. Considérons un cas où on aurait les éléments suivants, <middlename>shele</middlename> <lastname>tsheke</lastname> la transformation donnerait : <familyname othername="shele">tsheke</familyname> Opérateur de vérification de compatibilité Cet opérateur est fondamental dans un processus ETL. En effet, n importe quel élément ou attribut ne peut se transformer en n importe quel autre élément ou attribut. Il faut s assurer de la compatibilité des types pour éviter d avoir un document non valide à la destination. En particulier, on ne devrait pas arriver à une situation où on puisse mettre le nom d une personne à l endroit prévu pour la date de naissance Opérateurs arithmétiques Ces opérateurs de base (+,-,/,*) devraient permettre d effectuer quelques opérations sur les valeurs numériques au cours d un processus ETL.

44 CHAPITRE 6. GÉNÉRATEUR AUTOMATIQUE DE FICHIER XSLT Opérateur de manipulation des instructions de traitement Cet opérateur devrait dire ce qu il faut faire quand on a affaire à une instruction de traitement Opérateurs d exécution paralèlle d un processus ETL Ces opérateurs devraient permettre le parallélisme dans un processus ETL tel que nous l avons abordé au paragraphe 4.1. On pourrait ainsi étudier la possibilité d une exécution sur les GRIDs ou sur des systèmes distribués.

45 Chapitre 7 Réalisation de l ETL Ce chapitre montre une façon de formaliser et de rassembler les fonctions et les concepts présentés dans les chapitres précédents en vue de réaliser un outil ETL réellement fonctionnel. Nous montrerons en particulier une manière dont on pourrait se servir du fichier XSLT généré au chapitre 6 pour Extraire, Transformer et Charger (Load) les données dans l entrepôt. Dans le souci de permettre au programmeur d utiliser la méthodologie et le langage de programmation de son choix, nous présenterons d abord les algorithmes les plus importants en métalangage et nous donnerons par la suite, une explication générale de la manière dont on a développé notre prototype ETL. 7.1 Quelques algorithmes du processus ETL des données XML Dans cette section, nous proposons quelques fonctions qui nous semblent indispensables ou du moins importantes dans le développement d un outil ETL de données XML. Le Développeur pourra apporter les adapations nécessaires à la méthode et/ou au langage de programmation qu il compte utiliser. Précisons tout de même que l absence de référence dans cettte section s explique par le fait que les algorithmes proposés sont le fruit de notre propre conception Vérifier si un type est prédéfini en XSD Comme nous l avons vu au paragraphe (p.31), le nom d un type prédéfini commence par xs :. Le fait d avoir ce préfixe 1 signifie qu on est en présence d un type simple et prédéfini. Nous formalisons notre raisonnement dans le listing 7.1. Listing 7.1 Algorithme testant si un type est prédéfini function issimpletype ( typename ) returnval := false ; if " xs: is a prefix of typename " then returnval := true ; return returnval ; 1 On pourrait, éventuellement, considérer le prefixe xsd 44

46 CHAPITRE 7. RÉALISATION DE L ETL Vérifier si un tag de XSD définit un élément Comme nous l avons vu au chapitre 5 (p. 28), la définition d un élément se fait avec le tag spécial xs : element (parfois on utilise xsd : element). Il suffit donc de vérifier si on a affaire avec ce tag pour savoir si on définit un élément. C est ce que nous faisons dans l algorithme du listing 7.2. Listing 7.2 Algorithme testant si un tag XSD définit un élément function iselement ( tagname ) returnval := false ; if " tagname is xs: element " then returnval := true ; return returnval ; Vérifier si un tag de XSD définit un attribut En suivant un raisonnement analogue á celui du paragraphe 7.1.2, nous obtenons l algorithme du listing 7.3. Listing 7.3 Algorithme testant si un tag XSD définit un attribut function isattribute ( tagname ) returnval := false ; if " tagname is xs: attribute " then returnval := true ; return returnval ; Extraction du nom d un élément, attribut ou type défini Ce paragraphe montre comment extraire le nom de l élément, de l attribut ou du type complexe défini dans le noeud courant de l arbre du schéma XSD. Pour trouver 2 cette information, il suffit de vérifier si le noeud a des attributs. Si c est le cas, alors prendre la valeur de l attribut name. Une fonction que nous proposons pour effectuer cette tâche est reprise dans le listing 7.4. Listing 7.4 Algorithme d extraction du nom de l élément/attribut/type complexe défini function elemname ( node ) if (" node is not null " and node - > hasattributes ()) then returnval := node -> getattribute (" name "); return returnval ; 2 Voir le chapitre 5 pour la définition de schéma XSD

47 CHAPITRE 7. RÉALISATION DE L ETL Extraction du type de l élément ou de l attribut défini Dans le listing 7.5, nous proposons une fonction permettant d extraire le type de l élément ou de l attribut défini dans le noeud passé en argument. Listing 7.5 Extraction du type de l élément ou attribut défini function elemtype ( node ) if (" node is not null " and node - > hasattributes ()) then returnval := node -> getattribute (" type "); return returnval ; Traitement d un élément et de ses fils directs L algorithme du listing 7.6 traite l élément défini dans le noeud passé en argument et ses fils éventuels définis dans un type complexe. La fonction retourne une liste contenant le nom de l élément et ceux de ses attributs. Listing 7.6 Traitement de l élément défini et de ses fils function sonsandattributes ( xpath, node ) // xpath is a DOMPath. // node is a node of this DOM tree. // variables initialisation tagname := NULL ; elemname := NULL ; sonname := NULL ; attname := NULL ; elemtype := NULL ; returnval := NULL ; if( ( node is not NULL ) and ( xpath is not NULL )) then if( iselement (node -> tagname )) then elemname := elemname ( node ); // take the name of the element returnval []:= elemname ; // insert the name of element in the table to return elemtype = elemtype ( node ); // take the type if( not ( issimpletype ( elemtype ))) then // complextype query :="// xs: complextype = elemtype ]/*"; // take all the children of the defined complextype element xpathquery := xpath -> query ( query ); // run query and return a list of sons ( nodes )

48 CHAPITRE 7. RÉALISATION DE L ETL 47 foreach ( son in xpathquery ) sontagname := son -> tagname ; //i.e xs: element sonname = elemname ( son ); if( iselement ( sontagname )) then // process the child element if needed else if( isattribute ( sontagname )) then // process the attribute returnval []:=" elemname ]"; return returnval ; Chargement des schémas Le chargement des schémas est intimément lié à la méthodologie et au langage de programmation utilisés. Nous invitons le lecteur à consulter la documentation des outils de développement dont il fait usage. Il trouvera néanmoins un exemple PHP dans le code source en annexe Extraction des éléments et attributs définis dans un XSD Une façon d extraire les éléments et les attributs définis dans un schéma XSD consiste à : prendre tous les éléments <xs : element>de XSD et extraire, pour chacun de ces éléments, les attributs éventuels. Nous illustrons cette démarche dans le listing 7.7. Listing 7.7 Traitement de l élément défini et de ses fils function extractelem () " initialize xmldoc to the XSD document "; " initialize xptah to xpath of the document "; query :="// xs: element ]"; // all defined elements xpathquery := xpath -> query ( query ); // run query elemlist := array (); // list of elements and attributes tmplst := array (); // the name of the current element and its attributes foreach ( elem in xpathquery )

49 CHAPITRE 7. RÉALISATION DE L ETL 48 tmplst := sonsandattributes ( xpath, elem ); elemlist := merge ( elemlist, tmplst ); " process elemlist "; Parsing d un noeud et de ses fils éventuels La fonction définie dans le listing 7.8 permet notamment d insérer dans la visionneuse (viewer) des schémas, le sous arbre défini dans XSD et descendant à partir du noeud courant. Nous laissons au programmeur la latitude de définir le modèle de présentation dans lequel il souhaite visualiser la structure de document défini. Dans le prototype, nous avons simplement créé un fichier XML que l on peut visualiser facilement sur un navigateur web. Listing 7.8 Parsing d une branche d un arbre défini dans un XSD function parsenode ( node, xpath ) if (( node is not NULL ) and ( xpath is not NULL )) then tagname := node -> tagname (); if( iselement ( tagname )) then elemtype := elemtype ( node ); if( issimpletype ( elemtype )) then " insert element in the viewer "; else // an element of complex type. query :="// xs: complextype = elemtype ]// xs: attribute ]"; // attributes of the current element attributes := xpath -> query ( query ); // run query " insert element and its attributes in the viewer "; query :="// xs: complextype = elemtype ]// xs: element ]"; // children elements elements := xpath -> query ( query ); // list of children elements foreach ( element in elements ) parsenode ( element, xpath ); // recursive call else // the node doesn t define an element if(node -> haschilds ()) then

50 CHAPITRE 7. RÉALISATION DE L ETL 49 children := node -> childnodes ; // list of children nodes foreach ( child in children ) parsenode ( child, xpath ); // recursive call Parsing de la structure définie dans un fichier XSD La fonction définie dans le listing 7.9, permet d extraire la structure de document défini dans un fichier XSD. Cette fonction est notamment utilisée pour créer une visionneuse (viewer) des schémas sans montrer le fichier XSD comme tel. Listing 7.9 Parsing d une structure définie dans un fichier XSD function parseschema () " initialization of the document "; " initilization of xpath "; query :="// xs: schema /xs: element ]"; // root element xpathquery := xpath -> query ( query ); // run query if( xpathquery is not NULL ) then " begin creation of viewer "; rootelem := xpathquery -> item (0) ; parsenode ( rootelem, xpath ); " end creation of viewer "; Création de l interface des correspondances L interface des correspondances est la fenêtre dans laquelle l utilisateur déterminera les transformations à effectuer. Nous laissons au programmeur la liberté de créer l interface de son choix. Dans notre prototype, nous générons un formulaire illustré à la figure 6.1. La fonction extractelem définie dans le listing 7.7 peut aider à obtenir la liste des éléments et des attributs définis dans les schémas XSD source et destination Compilation d un processus ETL Dans ce paragraphe, nous illustrons une manière de rassembler (compiler) les différentes fonctions définies précédemment pour réaliser un processus ETL. C est ici où nous faisons usage du fichier XSLT généré au chapitre 6 (p. 35).

51 CHAPITRE 7. RÉALISATION DE L ETL 50 La connexion à la source de données se fera en fonction de son SGBD et des types de connexions autorisées. Les données extraites et transformées seront chargées dans l entrepôt de données XML selon les règles prévues pour le chargement. Listing 7.10 Compilation d un processus ETL function initetl () if (" There is no XSLT for the transformation ") " Load source and destination schemas "; " Run extractelem for XSD source "; " Run extractelem for XSD destination "; " Run parseschema for XSD source "; " Run parseschema for XSD destination "; " Create a mapping interface "; " Generate the XSLT file at request "; // run extracttransform " Apply the XSLT file on the source data "; // data are Extracted and Transformed " Load Transformed Data to the XML Warehouse "; // data Extracted, Transformed and Loaded 7.2 Prototype ETL développé Dans le prototype que nous avons développé, nous avons utilisé un serveur web apache et le langage de programmation PHP5. Quant à la méthologie de programmation, nous avons opté pour une approche orienté objet. Nous avons développé une application web pour permettre aux ayants droit de l utiliser à distance sans avoir à installer une quelconque application cliente mais d utiliser tout simplement un navigateur web (Internet Explorer, Fire Fox,...). Pour le chargement de données, nous nous sommes limité à stocker le fichier résultat dans un répertoire donné. Nous reprenons un exemple d application au chapitre 8 (p.51) pour illustrer le fonctionnement du prototype développé. Le lecteur intéressé trouvera le code source dans les annexes.

52 Chapitre 8 Exemple d application Dans ce chapitre, nous présentons un exemple d application du protype ETL que nous avons développé. Il y aura beaucoup d images de capture d écran parce qu il s agit d une application web dynamique. De manière générale, l application consiste en un chargement de schéma XSD source un chargement de schéma XSD destination (entrepôt de données XML) un fichier XML de données source une génération automatique d un fichier XSLT extraction, transformation et chargement (Load) de la source vers la destination. Dans ce prototype, le chargement à l entrepôt de données XML se fait en stockant le fichier XML produit par l ETL dans un répertoire précis (output). 8.1 Chargement des fichiers dans l ETL La page d accueil montrée à la figure 8.1 offre la possibilité de charger les schémas source et destination. Quant au fichier de données, en principe, l ETL se connecte à la source pour extraire les données mais dans ce prototype, nous avons prévu la possibilité d aller les chercher dans un répertoire donné ou de les charger sur l ETL (à la page d accueil). Pour tester l application, nous procédons de la manière suivante. Charger le schéma XSD source ( listing 8.1 p. 51). Charger le schéma XSD destination (listing 2.3 p. 15). Les données de la source sont celles du listing 8.2 (p. 52). cliquer sur le bouton Upload Files pour valider le chargement. Listing 8.1 Schema XSD d une source <? xml version =" 1.0 " encoding ="ISO "?> <! -- Une liste de personnes en Belgique -- > < xs:schema xmlns:xs =" http: // /2001/ XMLSchema "> < xs:element name =" listepersonnes " type =" typelistepersonnes "/> < xs: complextype name =" typelistepersonnes " > < xs:element name =" personne " type =" typepersonne "/> </ xs: complextype > 51

53 CHAPITRE 8. EXEMPLE D APPLICATION 52 < xs:complextype name =" typepersonne "> < xs:element name =" prenom " type =" xs:string "/> < xs:element name =" nomdefamille " type =" xs:string " use =" require "/> < xs:element name =" langue " type =" xs:string "/> < xs:attribute name =" datenais " type =" xs:date " use =" require "/> </ xs: complextype > </ xs:schema > Fig. 8.1 Page d accueil de XML ETL Listing 8.2 Données XML d une source <? xml version =" 1.0 " encoding ="ISO "?> < listepersonnes > < personne datenais =" "> <prenom >Johnny </ prenom > < nomdefamille > Tsheke </ nomdefamille > <langue > français </ langue > </ personne > < personne datenais =" "> <prenom >Pierre </ prenom > < nomdefamille > Manneback </ nomdefamille > <langue > français </ langue > </ personne > < personne datenais =" ">

54 CHAPITRE 8. EXEMPLE D APPLICATION 53 <prenom > Esteban </ prenom > < nomdefamille > Zimanyi </ nomdefamille > <langue > français </ langue > </ personne > </ listepersonnes > 8.2 Visualisation des schémas chargés Une fois les fichiers chargés, on arrive à une page permettant de visualiser les structures des arborescences définies respectivement par le schéma source et le schéma destination. Fig. 8.2 Visualisation des arborescences définies dans les schémas Comme le montre la figure 8.2, le Mapping Interface permet de choisir les correspondances de la transformation qu on souhaite effectuer. 8.3 Un choix de correspondances Prenons par exemple un cas dans lequel on choisit toutes les informations relatives à une personne, à l exception de langue. (voir la figure 8.3). Cliquons ensuite sur le bouton Transforme de Mapping Interface. L ETL génère dès lors le code XSLT repris dans le listing 8.3 (p. 53). Listing 8.3 XSLT généré suite aux choix du paragraphe 8.3 <? xml version =" 1.0 " encoding ="ISO "?> < xsl:transform xmlns:xsl =" http: // /1999/ XSL / Transform " version =" 1.0 "> < xsl:output method =" xml " encoding ="ISO "/> < xsl: template match =" listepersonnes " >

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

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème Chapitre IX L intégration de données Le problème De façon très générale, le problème de l intégration de données (data integration) est de permettre un accès cohérent à des données d origine, de structuration

Plus en détail

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

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition) Présentation du langage XML 1. De SGML à XML 17 2. Les bases de XML 18 2.1 Rappel sur HTML 18 2.2 Votre premier document XML 19 2.3 Les avantages de XML 21 3. La syntaxe XML 21 3.1 La première ligne du

Plus en détail

Fournir un accès rapide à nos données : agréger au préalable nos données permet de faire nos requêtes beaucoup plus rapidement

Fournir un accès rapide à nos données : agréger au préalable nos données permet de faire nos requêtes beaucoup plus rapidement Introduction Phases du projet Les principales phases du projet sont les suivantes : La mise à disposition des sources Des fichiers Excel sont utilisés pour récolter nos informations L extraction des données

Plus en détail

et les Systèmes Multidimensionnels

et les Systèmes Multidimensionnels Le Data Warehouse et les Systèmes Multidimensionnels 1 1. Définition d un Datawarehouse (DW) Le Datawarehouse est une collection de données orientées sujet, intégrées, non volatiles et historisées, organisées

Plus en détail

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza Avant de commencer à travailler avec le produit, il est nécessaire de comprendre, à un haut niveau, les problèmes en réponse desquels l outil a été

Plus en détail

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

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv> Langage HTML (2 partie) «Je n'ai fait que prendre le principe d - hypertexte et le relier au principe du TCP et du DNS et alors boum! ce fut le World Wide Web!» Tim Berners-Lee

Plus en détail

Introduction à la B.I. Avec SQL Server 2008

Introduction à la B.I. Avec SQL Server 2008 Introduction à la B.I. Avec SQL Server 2008 Version 1.0 VALENTIN Pauline 2 Introduction à la B.I. avec SQL Server 2008 Sommaire 1 Présentation de la B.I. et SQL Server 2008... 3 1.1 Présentation rapide

Plus en détail

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

XML, PMML, SOAP. Rapport. EPITA SCIA Promo 2004 16 janvier 2003. Julien Lemoine Alexandre Thibault Nicolas Wiest-Million XML, PMML, SOAP Rapport EPITA SCIA Promo 2004 16 janvier 2003 Julien Lemoine Alexandre Thibault Nicolas Wiest-Million i TABLE DES MATIÈRES Table des matières 1 XML 1 1.1 Présentation de XML.................................

Plus en détail

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Datawarehouse: Cubes OLAP. Marlyse Dieungang Khaoula Ghilani

Datawarehouse: Cubes OLAP. Marlyse Dieungang Khaoula Ghilani Datawarehouse: Cubes OLAP Marlyse Dieungang Khaoula Ghilani Table des matières 1 Data Warehouse 3 1.1 Introduction............................ 3 1.1.1 Définition......................... 3 1.1.2 Architecture........................

Plus en détail

Introduction à Microsoft InfoPath 2010

Introduction à Microsoft InfoPath 2010 Introduction à Microsoft InfoPath 2010 Couplé à Microsoft SharePoint Designer 2010, InfoPath 2010 simplifie la création de solutions de bout en bout sur SharePoint Server 2010, qui contiennent des formulaires

Plus en détail

2 Serveurs OLAP et introduction au Data Mining

2 Serveurs OLAP et introduction au Data Mining 2-1 2 Serveurs OLAP et introduction au Data Mining 2-2 Création et consultation des cubes en mode client-serveur Serveur OLAP Clients OLAP Clients OLAP 2-3 Intérêt Systèmes serveurs et clients Fonctionnalité

Plus en détail

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence É C O L E D I N G É N I E U R D E S T E C H N O L O G I E S D E L I N F O R M A T I O N E T D E L A C O M M U N I C A T I O N Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION Mentions

Plus en détail

Les Entrepôts de Données

Les Entrepôts de Données Les Entrepôts de Données Grégory Bonnet Abdel-Illah Mouaddib GREYC Dépt Dépt informatique :: GREYC Dépt Dépt informatique :: Cours Cours SIR SIR Systèmes d information décisionnels Nouvelles générations

Plus en détail

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

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch Faculté de Génie Chaire industrielle en infrastructures de communication La technologie XML Wajdi Elleuch Octobre 2004 SOMMAIRE Content : - XML : Définition - XML : Solution pour des applications réparties

Plus en détail

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

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition XML par la pratique Bases indispensables Concepts et cas pratiques 3 ième édition Nouvelle édition Thierry BOULANGER Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante

Plus en détail

BD et XML : Exercices

BD et XML : Exercices BD et XML : Exercices 1 Stockage XML Voici un arbre XML : A B E C F C F C F D C C D D D 1.1 Stockage générique Exercice 1.1.1 : Définissez un schéma de stockage relationnel générique (sans prendre en compte

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT FileMaker Server 11 Publication Web personnalisée avec XML et XSLT 2007-2010 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker est une

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Urbanisation des SI-NFE107

Urbanisation des SI-NFE107 OLAP Urbanisation des SI-NFE107 Fiche de lecture Karim SEKRI 20/01/2009 OLAP 1 Introduction PLAN OLAP Les différentes technologies OLAP Plate formes et Outils 20/01/2009 OLAP 2 Informatique décisionnelle

Plus en détail

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

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

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

Accès à l'information XML par des requêtes XQuery au travers de son XSchema Rapport projet de fin d étude ASR Accès à l'information XML par des requêtes XQuery au travers de son XSchema Réalisé par : DAB Marwa MGARRECH Oussama Encadré par : Mme LOPES GANCARSKI Alda 2011/2012 Remerciements

Plus en détail

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

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht. Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht.fr 1 MVC et le web 27/05/14 2 L'évolution des systèmes informatiques

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/26 Bases de Données Avancées DataWareHouse Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin,

Plus en détail

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte 1Les bases : vos objectifs 2 Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Plus en détail

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

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr Module BDWEB Maîtrise d informatique Cours 9 - Xquery Anne Doucet anne.doucet@lip6.fr 1 Langages de requêtes XML Concepts des langages de requêtes XML motivations caractéristiques Navigation dans les documents

Plus en détail

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

les techniques d'extraction, les formulaires et intégration dans un site WEB les techniques d'extraction, les formulaires et intégration dans un site WEB Edyta Bellouni MSHS-T, UMS838 Plan L extraction des données pour un site en ligne Architecture et techniques Les différents

Plus en détail

Travail de diplôme 2011 Business Intelligence Open Source SpagoBI/Talend Résumé

Travail de diplôme 2011 Business Intelligence Open Source SpagoBI/Talend Résumé ESNE Travail de diplôme 2011 Business Intelligence Open Source SpagoBI/Talend Résumé I.Cirillo 2010-2011 Introduction Le laboratoire de base de données de l ESNE a mis en place, il y a quelques années,

Plus en détail

Méthodologie de conceptualisation BI

Méthodologie de conceptualisation BI Méthodologie de conceptualisation BI Business Intelligence (BI) La Business intelligence est un outil décisionnel incontournable à la gestion stratégique et quotidienne des entités. Il fournit de l information

Plus en détail

SII Stage d informatique pour l ingénieur

SII Stage d informatique pour l ingénieur SII Stage d informatique pour l ingénieur Création d un site Web École nationale supérieure de techniques avancées SII Stage d informatique pour l ingénieur 1 / 15 L informatique et le temps qui passe...

Plus en détail

BUSINESS INTELLIGENCE. Une vision cockpit : utilité et apport pour l'entreprise

BUSINESS INTELLIGENCE. Une vision cockpit : utilité et apport pour l'entreprise BUSINESS INTELLIGENCE Une vision cockpit : utilité et apport pour l'entreprise 1 Présentation PIERRE-YVES BONVIN, SOLVAXIS BERNARD BOIL, RESP. SI, GROUPE OROLUX 2 AGENDA Définitions Positionnement de la

Plus en détail

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech Autour du web Une introduction technique Première partie : HTML Georges-André SILBER Centre de recherche en informatique MINES ParisTech silber@cri.ensmp.fr http://www.cri.ensmp.fr/people/silber/cours/2010/web

Plus en détail

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

Bases de données Cours 1 : Généralités sur les bases de données Cours 1 : Généralités sur les bases de données POLYTECH Université d Aix-Marseille odile.papini@univ-amu.fr http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 1 Qu est ce qu une

Plus en détail

LES ENTREPOTS DE DONNEES

LES ENTREPOTS DE DONNEES Module B4 : Projet des Systèmes d information Lille, le 25 mars 2002 LES ENTREPOTS DE DONNEES Problématique : Pour capitaliser ses informations, une entreprise doit-elle commencer par mettre en œuvre des

Plus en détail

Le "tout fichier" Le besoin de centraliser les traitements des fichiers. Maitriser les bases de données. Historique

Le tout fichier Le besoin de centraliser les traitements des fichiers. Maitriser les bases de données. Historique Introduction à l informatique : Information automatisée Le premier ordinateur Définition disque dure, mémoire, carte mémoire, carte mère etc Architecture d un ordinateur Les constructeurs leader du marché

Plus en détail

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Bien architecturer une application REST

Bien architecturer une application REST Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui

Plus en détail

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

Programmation des Applications Réparties. Parsers XML DOM et SAX Programmation des Applications Réparties Parsers XML DOM et SAX Luiz Angelo Steffenel luiz-angelo.steffenel@univ-reims.fr Steffenel Programmation des Applications Réparties Master M1-2007-2008 1 Comment

Plus en détail

BI = Business Intelligence Master Data-Science

BI = Business Intelligence Master Data-Science BI = Business Intelligence Master Data-Science UPMC 25 janvier 2015 Organisation Horaire Cours : Lundi de 13h30 à 15h30 TP : Vendredi de 13h30 à 17h45 Intervenants : Divers industriels (en cours de construction)

Plus en détail

Analyse comparative entre différents outils de BI (Business Intelligence) :

Analyse comparative entre différents outils de BI (Business Intelligence) : Analyse comparative entre différents outils de BI (Business Intelligence) : Réalisé par: NAMIR YASSINE RAGUI ACHRAF Encadré par: PR. L. LAMRINI Dans le domaine d économies des Big Data et Open Data, comment

Plus en détail

La place de la Géomatique Décisionnelle dans le processus de décision

La place de la Géomatique Décisionnelle dans le processus de décision Géomatique décisionnelle La place de la Géomatique Décisionnelle dans le processus de décision - Arnaud Van De Casteele Mines ParisTech - CRC Arnaud {dot} van_de_casteele {at} mines-paristech.fr Les rencontres

Plus en détail

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

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Entrepôt de données 1. Introduction

Entrepôt de données 1. Introduction Entrepôt de données 1 (data warehouse) Introduction 1 Présentation Le concept d entrepôt de données a été formalisé pour la première fois en 1990 par Bill Inmon. Il s agissait de constituer une base de

Plus en détail

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

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales Ecole des Hautes Etudes Commerciales HEC Alger Évolution des SGBDs par Amina GACEM Module Informatique 1ière Année Master Sciences Commerciales Evolution des SGBDs Pour toute remarque, question, commentaire

Plus en détail

Didier MOUNIEN Samantha MOINEAUX

Didier MOUNIEN Samantha MOINEAUX Didier MOUNIEN Samantha MOINEAUX 08/01/2008 1 Généralisation des ERP ERP génère une importante masse de données Comment mesurer l impact réel d une décision? Comment choisir entre plusieurs décisions?

Plus en détail

La Clé informatique. Formation Excel XP Aide-mémoire

La Clé informatique. Formation Excel XP Aide-mémoire La Clé informatique Formation Excel XP Aide-mémoire Septembre 2005 Table des matières Qu est-ce que le logiciel Microsoft Excel?... 3 Classeur... 4 Cellule... 5 Barre d outil dans Excel...6 Fonctions habituelles

Plus en détail

4. SERVICES WEB REST 46

4. SERVICES WEB REST 46 4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

Business Intelligence avec SQL Server 2012

Business Intelligence avec SQL Server 2012 Editions ENI Business Intelligence avec SQL Server 2012 Maîtrisez les concepts et réalisez un système décisionnel Collection Solutions Informatiques Extrait Alimenter l'entrepôt de données avec SSIS Business

Plus en détail

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop Passez au niveau supérieur en termes de connaissance grâce à la formation Data Analyst de Cloudera. Public Durée Objectifs Analystes de données, business analysts, développeurs et administrateurs qui ont

Plus en détail

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL . THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL Mr MEZRED MOHAMED Ingénieur météorologue INTRODUCTION Il existe de nombreuses manières de construire une base de données. En effet,

Plus en détail

Chapitre 9 : Informatique décisionnelle

Chapitre 9 : Informatique décisionnelle Chapitre 9 : Informatique décisionnelle Sommaire Introduction... 3 Définition... 3 Les domaines d application de l informatique décisionnelle... 4 Architecture d un système décisionnel... 5 L outil Oracle

Plus en détail

SQL Server 2012 et SQL Server 2014

SQL Server 2012 et SQL Server 2014 SQL Server 2012 et SQL Server 2014 Principales fonctions SQL Server 2012 est le système de gestion de base de données de Microsoft. Il intègre un moteur relationnel, un outil d extraction et de transformation

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Les entrepôts de données

Les entrepôts de données Les entrepôts de données Lydie Soler Janvier 2008 U.F.R. d informatique Document diffusé sous licence Creative Commons by-nc-nd (http://creativecommons.org/licenses/by-nc-nd/2.0/fr/) 1 Plan Introduction

Plus en détail

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée

Plus en détail

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

SQL Parser XML Xquery : Approche de détection des injections SQL SQL Parser XML Xquery : Approche de détection des injections SQL Ramahefy T.R. 1, Rakotomiraho S. 2, Rabeherimanana L. 3 Laboratoire de Recherche Systèmes Embarqués, Instrumentation et Modélisation des

Plus en détail

Bases de Données. Stella MARC-ZWECKER. stella@unistra.u-strasbg.fr. Maître de conférences Dpt. Informatique - UdS

Bases de Données. Stella MARC-ZWECKER. stella@unistra.u-strasbg.fr. Maître de conférences Dpt. Informatique - UdS Bases de Données Stella MARC-ZWECKER Maître de conférences Dpt. Informatique - UdS stella@unistra.u-strasbg.fr 1 Plan du cours 1. Introduction aux BD et aux SGBD Objectifs, fonctionnalités et évolutions

Plus en détail

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1 Big Data Cyril Amsellem Consultant avant-vente 16 juin 2011 Talend 2010 1 Big Data Architecture globale Hadoop Les projets Hadoop (partie 1) Hadoop-Core : projet principal. HDFS : système de fichiers distribués

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

BUSINESS INTELLIGENCE

BUSINESS INTELLIGENCE GUIDE COMPARATIF BUSINESS INTELLIGENCE www.viseo.com Table des matières Business Intelligence :... 2 Contexte et objectifs... 2 Une architecture spécifique... 2 Les outils de Business intelligence... 3

Plus en détail

HelpDesk. Sept avantages de HelpDesk

HelpDesk. Sept avantages de HelpDesk HelpDesk Artologik HelpDesk est l outil rêvé pour ceux qui recherchent un programme de support et de gestion des tickets alliant facilité d utilisation et puissance. Avec Artologik HelpDesk, vous pourrez

Plus en détail

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING Durée : 3J / 21H Formateur : Consultant expert en PAO et Web-marketing. Groupe de : 4 max Formation au web marketing Objectifs : Mettre en oeuvre des

Plus en détail

IBM Tivoli Monitoring, version 6.1

IBM Tivoli Monitoring, version 6.1 Superviser et administrer à partir d une unique console l ensemble de vos ressources, plates-formes et applications. IBM Tivoli Monitoring, version 6.1 Points forts! Surveillez de façon proactive les éléments

Plus en détail

Programmation Internet Cours 4

Programmation Internet Cours 4 Programmation Internet Cours 4 Kim Nguy ên http://www.lri.fr/~kn 17 octobre 2011 1 / 23 Plan 1. Système d exploitation 2. Réseau et Internet 3. Web 3.1 Internet et ses services 3.1 Fonctionnement du Web

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

FreeAnalysis. Schema Designer. Cubes

FreeAnalysis. Schema Designer. Cubes FreeAnalysis Schema Designer Cubes Charles Martin et Patrick Beaucamp BPM Conseil Contact : charles.martin@bpm-conseil.com, patrick.beaucamp@bpm-conseil.com Janvier 2013 Document : BPM_Vanilla_FreeAnalysisSchemaDesigner_v4.2_FR.odt

Plus en détail

Introduction aux concepts d ez Publish

Introduction aux concepts d ez Publish Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de

Plus en détail

Mercredi 15 Janvier 2014

Mercredi 15 Janvier 2014 De la conception au site web Mercredi 15 Janvier 2014 Loïc THOMAS Géo-Hyd Responsable Informatique & Ingénierie des Systèmes d'information loic.thomas@anteagroup.com 02 38 64 26 41 Architecture Il est

Plus en détail

SQL Server Installation Center et SQL Server Management Studio

SQL Server Installation Center et SQL Server Management Studio SQL Server Installation Center et SQL Server Management Studio Version 1.0 Grégory CASANOVA 2 SQL Server Installation Center et SQL Server Management Studio [03/07/09] Sommaire 1 Installation de SQL Server

Plus en détail

Architectures web/bases de données

Architectures web/bases de données Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est

Plus en détail

< Atelier 1 /> Démarrer une application web

< Atelier 1 /> Démarrer une application web MES ANNOTATIONS SONT EN ROUGE : Axel < Atelier 1 /> Démarrer une application web Microsoft France Tutorial Découverte de ASP.NET 2.0 Sommaire 1 INTRODUCTION... 3 1.1 CONTEXTE FONCTIONNEL... 3 1.2 CONTEXTE

Plus en détail

Intégration de données hétérogènes et réparties. Anne Doucet Anne.Doucet@lip6.fr

Intégration de données hétérogènes et réparties. Anne Doucet Anne.Doucet@lip6.fr Intégration de données hétérogènes et réparties Anne Doucet Anne.Doucet@lip6.fr 1 Plan Intégration de données Architectures d intégration Approche matérialisée Approche virtuelle Médiateurs Conception

Plus en détail

Thibault Denizet. Introduction à SSIS

Thibault Denizet. Introduction à SSIS Thibault Denizet Introduction à SSIS 2 SSIS - Introduction Sommaire 1 Introduction à SQL Server 2008 Integration services... 3 2 Rappel sur la Business Intelligence... 4 2.1 ETL (Extract, Transform, Load)...

Plus en détail

Business Intelligence

Business Intelligence avec Excel, Power BI et Office 365 Téléchargement www.editions-eni.fr.fr Jean-Pierre GIRARDOT Table des matières 1 Avant-propos A. À qui s adresse ce livre?..................................................

Plus en détail

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8 Sage 100 CRM Guide de l Import Plus avec Talend Version 8 Mise à jour : 2015 version 8 Composition du progiciel Votre progiciel est composé d un boîtier de rangement comprenant : le cédérom sur lequel

Plus en détail

Module http MMS AllMySMS.com Manuel d intégration

Module http MMS AllMySMS.com Manuel d intégration Module http MMS AllMySMS.com Manuel d intégration Objectif du document... 3 1 Envoi de MMS par requête http... 4 1.1 Format de la requête utilisée... 4 1.2 Arborescence et explication des balises du flux

Plus en détail

FileMaker Server 12. publication Web personnalisée avec XML

FileMaker Server 12. publication Web personnalisée avec XML FileMaker Server 12 publication Web personnalisée avec XML 2007-2012 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker et Bento sont

Plus en détail

Entrepôts de données. NEGRE Elsa Université Paris-Dauphine 2015-2016

Entrepôts de données. NEGRE Elsa Université Paris-Dauphine 2015-2016 Entrepôts de données NEGRE Elsa Université Paris-Dauphine 2015-2016 Contexte et problématique Le processus de prise de décision L entrepôt de données Définition Différence avec un SGBD Caractéristiques

Plus en détail

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France Développement d applications Internet et réseaux avec LabVIEW Alexandre STANURSKI National Instruments France Quelles sont les possibilités? Publication de données Génération de rapports et de documents

Plus en détail

CATALOGUE DE FORMATIONS BUSINESS INTELLIGENCE. Edition 2012

CATALOGUE DE FORMATIONS BUSINESS INTELLIGENCE. Edition 2012 CATALOGUE DE FORMATIONS BUSINESS INTELLIGENCE Edition 2012 AGENDA Qui sommes nous? Présentation de Keyrus Keyrus : Expert en formations BI Nos propositions de formation 3 modes de formations Liste des

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Organiser le disque dur Dossiers Fichiers

Organiser le disque dur Dossiers Fichiers Ce document contient des éléments empruntés aux pages d aide de Microsoft Organiser le disque dur Dossiers Fichiers Généralités La connaissance de la logique d organisation des données sur le disque dur

Plus en détail

A l aide de votre e-mail vous pouvez visiter un site web!

A l aide de votre e-mail vous pouvez visiter un site web! A l aide de votre e-mail vous pouvez visiter un site web! par Ueli Scheuermeier, LBL Êtes vous parmi ces agents de terrain qui ont la possibilité de se servir de l e-mail? Mais vous arrivez pas à naviguer

Plus en détail

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed 6, bd maréchal Juin F-14050 Caen cedex 4 Spécialité Informatique 2 e année Rapport de projet Gestion du parc informatique matériel et logiciel de l Ensicaen SAKHI Taoufik SIFAOUI Mohammed Suivi ENSICAEN

Plus en détail

Business Intelligence : Informatique Décisionnelle

Business Intelligence : Informatique Décisionnelle Business Intelligence : Informatique Décisionnelle On appelle «aide à la décision», «décisionnel», ou encore «business intelligence», un ensemble de solutions informatiques permettant l analyse des données

Plus en détail

BES WEBDEVELOPER ACTIVITÉ RÔLE

BES WEBDEVELOPER ACTIVITÉ RÔLE BES WEBDEVELOPER ACTIVITÉ Le web developer participe aux activités concernant la conception, la réalisation, la mise à jour, la maintenance et l évolution d applications internet/intranet statiques et

Plus en détail

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

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Unix/Linux I. 1 ere année DUT. Université marne la vallée Unix/Linux I 1 ere année DUT Université marne la vallée 1 Introduction 2 Fonctions et spécifité d Unix Architecture 3 4 5 Fichier Unix Arborescence de fichiers Quelques commandes sur les fichiers Chemins

Plus en détail

Livre Blanc WebSphere Transcoding Publisher

Livre Blanc WebSphere Transcoding Publisher Livre Blanc WebSphere Transcoding Publisher Introduction WebSphere Transcoding Publisher vous permet d'offrir aux utilisateurs des informations Web adaptées à leurs besoins. Il vous permet, par exemple,

Plus en détail

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

Un datawarehouse est un entrepôt de données (une base de données) qui se caractérise par des données :

Un datawarehouse est un entrepôt de données (une base de données) qui se caractérise par des données : Page 1 of 6 Entrepôt de données Un article de Wikipédia, l'encyclopédie libre. L'entrepôt de données, ou datawarehouse, est un concept spécifique de l'informatique décisionnelle, issu du constat suivant

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Programmation Web Avancée Introduction aux services Web

Programmation Web Avancée Introduction aux services Web 1/21 Programmation Web Avancée Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Installation Client (licence réseau) de IBM SPSS Modeler 14.2

Installation Client (licence réseau) de IBM SPSS Modeler 14.2 Installation Client (licence réseau) de IBM SPSS Modeler 14.2 Les instructions suivantes permettent d installer IBM SPSS Modeler Client version 14.2 en utilisant un licence réseau. Ce présent document

Plus en détail

Développement d un interpréteur OCL pour une machine virtuelle UML.

Développement d un interpréteur OCL pour une machine virtuelle UML. ObjeXion Software Prototyping made easy SA au capital de 500 000 F Siret 421 565 565 00015 APE 722Z Téléphone : 03 89 35 70 75 Télécopie : 03 89 35 70 76 L embarcadère 5, rue Gutemberg 68 800 Vieux-Thann,

Plus en détail

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

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES BASE DE DONNEES La plupart des entreprises possèdent des bases de données informatiques contenant des informations essentielles à leur fonctionnement. Ces informations concernent ses clients, ses produits,

Plus en détail