Implémentation d’une interface pour l’exécution d’ETL à distance Projet de développement logiciel dans le cadre du cours SCG : « Réalisation d’Applications en SIG » Présenté par Charlotte Declercq Lundi 16 avril 2007
Plan de la présentation Contexte Analyse Réalisation Démonstration Calendrier Tests et suggestions
Contexte Gros volume de données provenant de sources transactionnelles Données agrégées, non volatiles –Pré calculées ou non –Cube de données Système d’information décisionnel –Analyser rapidement les données d’une organisation Intérêt récent pour des données localisées –Naissance du SOLAP (U. Laval & Kheops) Entrepôts de données géodécisionnels
Contexte Cube Dimension Mesure Structure transactionnelle -> schéma étoile ou structure multidimensionnelle En amont de l’entrepôt (ETL): –Extract –Transform : Filtrage, codage, synchronisation –Load : peuplement du cube ETL : Construction de l’entrepôt
Contexte « Développement d’un service web de propagation des mises à jour au sein d’entrepôts de données géodécisionnels » But : reconstruction des parties utiles du cube (ETL) –propager les mises à jour Service web : architecture orientée services –Interopérabilité, traitements géographiques à distance, maîtrise du processus Sujet de maîtrise
Contexte Développer une application qui permet de lancer la propagation des mises à jour à distance –donc : ETL via web Objectifs spécifiques –Exécuter des transformations définies –Exécuter des transformations distantes –Charger des transformations Définition du projet
Analyse Architecture Client Web Tiers Client Serveur Web Conteneur de Servlets et de JSP Tiers Web API GeoKettle Bibilothèque de Transformations /Jobs http / xhtml JSP Servlet jdbc Bases de données
Analyse Base de données : PostgreSQL / Postgis –Open source –Postgis : gestion des objets spatiaux –PGAdmin ETL : Kettle (Pentaho) –Open Source –Gère l’évolution temporelle des dimensions Slowly changing dimensions (Kimball) –Importe et exporte du XML –Outil complet et en évolution –GeoKettle Choix des technologies
Analyse Serveur web : Tomcat –Communauté Apache –Conteneur de Servlets et de JSP –Portable (Java) Langage de programmation : Java –Pour les servlets et jsp –Api kettle en java –Orienté objet, portable, gratuit, robuste Format de stockage des transformations et des jobs: xml –Interopérabilité Choix des technologies
Analyse API FileUpload (Apache) –Upload de fichiers à partir de formulaires HTML IDE: Eclipse Web Tools Platform Project –Développement J2EE –Écriture de Servlets et JSP, export WAR –Intégration de serveurs web –Débuguer sur serveur SIG uDig –Open source Choix des technologies
Analyse Fonctionnement de l’application Exécuter à distance: une transformation/job définie sur le serveur Une transformation/job disponible à une autre adresse Charger une transformation/job et l’exécuter ensuite
Conception 2 membres : région et province: Utilisation du WKT: INSERT INTO "Region" VALUES (1, 'Montreal', GeomFromText('POLYGON((4 0,6 0,6 2,4 2,4 0))',-1), 2); Dimension géométriques
Conception Kettle Spoon: –Job = U (transformations) –Transformation Chargement des données dans la table dim_spatiale_geom Définition de la transformation dans Kettle Load_dim_spatial_trans
Reçoit les paramètres: Emplacement du fichier xml (.kjb ou.ktr) et appelle l’exécution runKitchen Conception Diagramme de classes Exécute le job et affiche le log Upload un fichier
Conception Fichier.ktr Transformation: Informations: log, server, user, date Transformation: Informations: log, server, user, date Connection à PostgreSQL Sauts Transformation: Informations: log, server, user, date Connection à PostgreSQL Sauts (hops) Transformation: Informations: log, server, user, date Connection à PostgreSQL Sauts Steps: nom, type, table de sortie, champs (type d’update)… Transformation: Informations: log, server, user, date Connection à PostgreSQL Sauts Steps: nom, type, table de sortie, champs (type d’update)… GUI Accepte type geom (GeoKettle)
Réalisation Index.jsp
Réalisation Servlet ExecuteTrans Méthode Get: exécution d’une transformation disponible sur le serveur Méthode Post: exécution d’une transformation distante Télécharge le fichier sur le serveur Définit les paramètres de ligne de commande pour l’exécution de Pan (url du fichier+ url du fichier de log) Exécute Pan (classe runpan)
Réalisation Classe RunPan Kettle contient Pan.java: –exécution des transformations en ligne de commande –un main RunPan: –Reprise du main de Pan dans la méthode Execute() –Simplification du code de Pan –Ajout de l’affichage du log dans la page web
Réalisation Servlet FileUp Utilisation de l’API FileUpload d’Apache: –Récupérer des fichiers à partir de formulaires html –Encodage multipart/form-data exigé dans le formulaire
Démonstration
Calendrier Définition du projet (3h) Redéfinition du projet (3h) Constitution des tables région et province (10h) Étude de Kettle (60h) –Prise en main de Spoon –Définition du job et de la transformation –Autres fonctionnalités (forum Pentaho) –Choix : écrire mes servlets et pas adapter Carte Configuration et prise en main (15h) –Eclipse (WTP) –Tomcat Implémentation des servlets (30h) Tests et améliorations (10h) –Execution d’une transformation/job distant –Upload d’une transformation/job ? Quel service implanter
Tests Le système fonctionne bien. Limite : il semble que l’on doive exécuter un job avant pour initialiser une variable dans Kettle –Problème de variable de processus non résolu pour le projet. Limite : le log est écrit dans un fichier puis lu –Ne gère pas les exécutions simultanées Ne gère pas l’upload de gros fichiers Résultats
Suggestions Modification de la date lors de la modification d’un enregistrement Exécuter à partir du repository Uploader directement dans le repository Mieux gérer l’affichage du log Modifier Carte (serveur fourni avec Kettle) Laisser l’usager paramétrer ses transformations/jobs –Sujet de maîtrise Implémenter le tout sous forme d’un service web Améliorations
Merci de votre écoute ! Etienne Dubé pour son aide précieuse et sa patience Thierry Badard pour ses conseils Remerciements Questions?