Kettle

Kettle : une autre solution ETL

Kettle est un outil ETL (entièrement graphique) supportant de nombreuses bases de données (en entrée et en sortie) ainsi que des processus complexes de transformations de ces données.
Si vous n’avez pas le temps de faire mu muse avec le produit, voici quelques commentaires sur le produit Kettle, rappelons-le open source gratuit ! Kettle utilise les drivers JDBC pour les connexions aux différentes bases de données. Il existe des possibilités de mettre les données en cache, et l'on peut faire tourner plusieurs transformations en parallèle (voir paragraphe sur la lenteur). Kettle fonctionne sur des bases de données de production possédant des millions d'enregistrements.

L’interface, la convivialité : une qualité


En premier, ce qui vient aux yeux, c’est l’interface unique (développée en Java). Elle parait au premier abord plus fonctionnelle, donc plus agréable à l’œil d’un débutant que son concurrent. La gestion des transformations et des jobs en est facilitée. Cependant, certain trouveront que l’interface est moins séduisante que Talend à cause de son rapprochement avec la DB.

Certains reprochent également la lenteur de Kettle dans certaines opérations. Je tiens à rappeler que pour les tris par exemple il faut paramétrer parfaitement la transformation (nombre de rows pour une passe de tri, usage de la ram / fichiers temporaires…).
Car, en passant par un nombre élevé de fichiers temporaires, on augmente considérablement cette lenteur constatée. Augmenter le nombre de rows en mémoire augmente considérablement le traitement. Il y a aussi une option de compression des fichiers temporaires, mais qui rajoute du temps de traitement tout en diminuant l’espace disque nécessaire…(faut savoir ce que l’on souhaite !).

Tout ça pour dire que la lenteur de Kettle n’est pas une fin en soi.

Deux modes différents

Kettle peut s’utiliser au travers de deux modes distincts, en local ou avec référentiel :

En local : les transformations et les jobs sont stockés et gérés en local sur filesystem.


Avec référentiel : tout le travail du développeur est stocké dans le référentiel PDI/Kettle qui repose sur un schéma dédié créé sur la DB de votre choix (sur système cible par exemple). Il s’agit là d’une fonctionnalité idéale : plus de fichiers à gérer, tout est centralisé. En cas de changement de paramétrage d’une de vos DB, il vous suffira de changer une seule fois la connexion correspondante dans le référentiel ; le changement sera alors répercuté sur toutes les transformations / jobs qui utilisent cette connexion.


Dans tous les outils fournis, Kettle est livré avec des exemples de scripts pour le lancement des jobs / transformations en mode batch. Très utile dans mon contexte actuel (Solaris), on a la possibilité de mettre au point un pool de scripts qui assurent le déclenchement des jobs (certains en parallèle !), leur contrôle ainsi que la reprise sur anomalie.


Une anomalie se remonte très vite avec un simple parseur, voire un Ctrl-F « ano » lors des mises au point. A noter que le lancement d’un job/transformation en interactif (via l’interface) est bien entendu possible.

Globalement, les performances sont globalement au rendez-vous. Bien entendu, plus votre DB sera performante et structurée, meilleur sera le comportement de Kettle.

Défaut : un module de gestion manquant


Il manque cependant un module à Kettle, qui se fait cruellement sentir dès lors que l’on travaille avec de multiples environnements : un gestionnaire de transformations / jobs. Actuellement, pour migrer une transformation ou un job d’un environnement à un autre, il faut passer par une sauvegarde/export local, puis reconnexion au nouveau référentiel pour publication. Un module de gestion des transformations et des jobs serait plus rapide pour gérer au mieux la phase de montée en environnement à l’image d’un « CVS light » ou encore d’un « SourceSafe ».

Talend OpenStudio : une solution ETL

Talend OpenStudio : l’outil ETL Open source par excellence.


Comme mon blog est axé sur les outils Open Source, je parlerai dans ce post de l'ETL Talend OpenStudio (en plus made in d’un éditeur français…). La première version date de octobre 2006. Talend OpenStudio, c’est quoi ? C’est un outil graphique qui permet de tout faire en mode Drag and Drop. Elle permet d'appeler des Web Services, d'extraire des données de fichiers (en local ou via le ftp) et de bases de données pour réaliser des traitements complexes (sortie sous Java / Perl). Une interface intuitive permet également une écriture aisée des scripts et la réalisation de documents relativement facilement.

Talend a sorti la version 2.2.0 de Talend Open Studio le 8 octobre 2007.
Au rythme d'une release tous les 3 mois, la 2.2.0 apporte de nombreux enrichissements par rapport à la 2.1.x, côté studio de conception et côté génération de script Perl ou Java. Voici une liste des principales évolutions.

Les nouvelles fonctionnalités de Talend Open Studio 2.2.0 sont nombreuses, en voici quelques unes :

  • amélioration de la gestion de contexte (GUI, nouveaux composant tContextDump),
  • exportation des jobs comme des services Web Java,
  • interface de construction d’expression graphique (Expression Builder)

Nouveautés du studio : basé sur Eclipse 3.3, constructeur graphique d'expressions, glisser/déposer des metadonnées pour créer des composants pré configurés ainsi qu'une refonte de la gestion des contextes simplifiant leur utilisation. Vous bénéficierez donc de toutes les améliorations inhérentes à ce nouveau framework (support de Windows Vista…).

En Java :

  • Support de nouvelles bases de données : connecteur AS400 / connecteur Generic JDBC...
  • Le composant de Slowly Changing Dimension supporte désormais les bases MySQL, Oracle, Ingres, MSSQL, DB2 et Sybase. Il intègre désormais les types 1, 2 et 3 et supporte les surrogate key…
  • Support des procédures stockées pour les bases Oracle, MS SQL, Ingres, MySQL et DB2
  • Partage de connexion pour Oracle et PostgreSQL...
  • Support LDIF/LDAP
  • Les "wait for file" et "wait for SQL data" (déclenchement du job en fonction de l’apparition d’un fichier, de l’arrivée de lignes dans une table…)
  • Fusion et séparation de flux (tUnite et tReplicate)
  • Support de SCP

En Perl :

  • Composant permettant les substitutions multiples (simple et advanced) : tReplace
  • Partage de connexion pour les bases Oracle et PostgreSQL...
  • Lookup multiples
  • Les "wait for file" et "wait for SQL data" (déclenchement du job en fonction de l’apparition d’un fichier, de l’arrivée de lignes dans une table…)
  • Flow data metering
  • File touch
  • Fusion et séparation de flux (tUnite et tReplicate)
  • Support SCP
Enfin, si vous souhaitez trouver débuter (et même vous perfectionner, tout dépend de votre état d'avancement), je ne saurais vous conseiller le tutorial (en français) en format pdf. Quelques 130 pages auront raison de votre patience pour devenir autonome sur Talend ! Une simple indication de quelques informations personnelles vous seront demandées (email non vérifié).
Bon courage ! Et très bientôt un post sur son concurrent Kettle...