IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Les ETL open source : Une réelle alternative aux solutions propriétaires


précédentsommairesuivant

III. Pourquoi utiliser un ETL open source ?

Le choix le plus difficile dans tout projet décisionnel ou d'intégration/migration de données consiste à déterminer quelle méthode doit être mise en œuvre :

  1. Faut-il créer du code spécifique (procédures SQL, code Java ou autre) ?
  2. Faut-il acheter un ETL propriétaire (Informatica, Oracle Warehouse Builder, BO Data Integrator ou autre) ?

La première solution semble intéressante, car elle permet de rester au plus près des spécificités métier des données à traiter, tout en s'affranchissant des contraintes liées à l'achat et l'utilisation d'un ETL propriétaire. Cependant, cette solution peut s'avérer coûteuse à long terme, tout simplement, car l'évolutivité constante des données métier entraîne une nécessaire adaptation des traitements d'intégration. Celle-ci n'est pas toujours facile à gérer, surtout si les équipes projets évoluent au cours du temps.

La deuxième solution va permettre de mettre en œuvre très rapidement les traitements d'intégration, avec cependant des coûts élevés (achat des licences, formations…) et ceci dès la phase de démarrage du projet.

Il existe désormais une solution alternative : Utiliser un ETL open source.

On bénéficie ainsi des avantages d'un ETL tout en gardant une maîtrise lissée des coûts.

Ces derniers sont en effet réduits aux coûts de formation initiale de l'outil et d'une éventuelle souscription à une hot-line technique. Aucune licence n'est à payer dans ce modèle économique.

Image non disponible

C'est donc dans cette 3e approche que se positionnent les ETL « Talend Open Studio » et « Pentaho Data Integration ».

IV. Notre comparatif « Talend Open Studio »/« Pentaho Data Integration »

IV-A. Présentation de Talend Open Studio

Talend Open Studio est développé par Talend (www.talend.com), une société française dynamique et relativement jeune. La première version de « Talend Open Studio » a vu le jour au 2e semestre 2006, et la version actuelle est la 2.3.

Talend Open Studio est un ETL du type « générateur de code ». Pour chaque traitement d'intégration de données, un code spécifique est généré, ce dernier pouvant être en Java ou en Perl. Les données traitées et les traitements effectués sont donc intimement liés.

Talend Open Studio utilise une interface graphique, le « Job Designer » (basée sur Eclipse RCP) qui permet la création des processus de manipulation de données :

Image non disponible

De nombreux types d'étapes sont disponibles pour se connecter aux principaux SGBD (Oracle, DB2, MS SQL Server, PostgreSQL, MySQL…) ainsi que pour traiter tous les types de fichiers plats (CSV, Excel, XML), aussi bien en lecture qu'en écriture.

Talend facilite la construction des requêtes dans les bases de données en détectant le schéma et les relations entre tables.

Un référentiel permet de stocker les métadonnées afin de pouvoir les exploiter dans différents jobs.

Par exemple on peut sauvegarder le type et le format des données d'entrée d'un fichier CSV afin de pouvoir les exploiter ultérieurement.

Une gamme complète de composants

Le Job Designer intègre une « Component Library » : une palette graphique de composants et connecteurs.

Les processus d'intégration sont construits simplement en déposant des composants et connecteurs sur le diagramme, en dessinant leurs connexions et relations, et en modifiant leurs propriétés.

La plupart de ces propriétés peuvent être issues des métadonnées déjà définies.

La Component Library inclut plus de 80 composants et connecteurs, fournissant des fonctions basiques telles que des associations, transformations, agrégations et recherches, des fonctions spécialisées comme le filtrage de données, le multiplexage de données…

Cette librairie supporte tous les principaux SGBDR, formats de fichiers, annuaires LDAP…

La Component Library peut facilement être complétée en utilisant des langages standards tels que Perl, Java ou SQL.

Des traces et statistiques d'exécution en temps réel 

La conception très visuelle des « jobs » permet de présenter des statistiques d'exécution en temps réel ou encore de tracer les données transitant ligne à ligne dans les composants de la chaîne de traitement.

Quand un job d'intégration est lancé via le Job Designer (en mode graphique), il est possible d'afficher les statistiques de traitement en temps réel, montrant le nombre de lignes traitées et rejetées, ainsi que la vitesse d'exécution (lignes par secondes). On peut ainsi repérer immédiatement les goulots d'étranglement.

Il est aussi possible d'activer un mode de traçage, qui affiche pour chaque ligne le comportement adopté et montre le résultat des transformations. Les fonctionnalités de débogage traditionnelles sont évidemment disponibles.

Image non disponible

L'enrichissement des traitements par ajout de code spécifique 

La totalité du code généré par Talend Open Studio, quel que soit le langage cible, est toujours visible et accessible depuis l'environnement de conception.

On peut bien sûr implémenter des spécificités « métier » propres aux données traitées, ceci en ajoutant de nouvelles « routines ».

Exemple de code généré par Talend Open Studio 

Image non disponible

Intégration dans les suites décisionnelles open source 

Talend est partenaire des éditeurs des suites décisionnelles SpagoBI et JasperIntelligence.

IV-B. Présention de Pentaho Data Integration

Pentaho Data Integration est l'ETL de la suite décisionnelle open source Pentaho.
Cet ETL, « Kettle » à l'origine, est le fruit du travail de Matt Casters, un consultant BI qui l'a développé à l'origine pour ses propres besoins au début des années 2000.

Courant 2006, Matt Casters rejoint la société Pentaho, et « Kettle » devient « Pentaho Data Integration ».

Les nouvelles versions s'enchaînent alors à un rythme soutenu. La prochaine version est la 3.0.2 qui doit sortir courant février 2008.

Contrairement à Talend Open Studio, Pentaho Data Integration est un « moteur de transformation » ETL : les données traitées et les traitements à effectuer sont parfaitement séparés. (on parle de « meta-data driven » ETL).

Les traitements sont stockés dans un référentiel (repository) qui peut être soit au format XML (fichiers plats), soit dans une base de données (ce qui permet notamment le partage entre plusieurs designers).

Tout comme Talend Open Studio, de nombreux types de SGBD sont supportés (une trentaine) ainsi que tous les types de fichiers plats (Csv, délimité, Excel, XML).

Pentaho Data Integration dipose d'une interface graphique « Spoon » (basée sur SWT), depuis laquelle on peut créer deux types de traitements :

  • des transformations : celles-ci constituent les traitements de base d'intégration de données avec toutes les étapes (steps) nécessaires à l'extraction, la transformation, et le chargement des données ;
  • des tâches (jobs) : ceux-ci permettent le séquencement de plusieurs transformations avec des fonctionnalités plus orientées « EAI » : gestion des erreurs, envoi de mails de notification, transferts FTP/SFTP, exécution de scripts shell ou SQL, etc.
Image non disponible

Caractéristiques de Pentaho Data Integration 

  • Un produit sous licence GNU disponible sur plusieurs systèmes d'exploitation :
Image non disponible
  • Une suite de 3 composants: L'interface graphique « Spoon », les déclencheurs en mode batch pour les transformations (« Pan ») et les jobs (« Kitchen »).
  • Une installation simple (un dossier à décompresser) => un environnement d'exécution JAVA 1.5 suffit.
  • La possibilité de prévisualiser les flux de données traitées, et ceci pour une étape donnée.
  • La possibilité d'exécuter les traitements sur le poste local, un serveur distant, ou un ensemble de serveurs (exécution en « grappe »; clustering).
  • La possibilité de logger les traitements dans une base de données spécifique.
  • L'intégration parfaite avec la plate-forme décisionnelle Pentaho. Par exemple, les flux de données en provenance de l'ETL peuvent servir à alimenter des rapports ou des dashboards en temps réel.

Spoon, l'interface graphique de création des transformations et jobs :

Image non disponible
Image non disponible

Spoon, le suivi des traitements « real time » :

Image non disponible

Briques de traitements de données (liste non exhaustive) :

Step

Etape

Description

Extraction depuis EXCEL

Image non disponible

Extraction de données depuis un ou plusieurs onglets d'un fichier XLS

Extraction depuis ACCESS

Image non disponible

Extraction de données depuis une table d'une base Access

Extraction depuis une base de données

Image non disponible

Extraction de données depuis une table d'un SGBD (Oracle, MySql, Postgres, SQLServer, DB2, AS400, SAP, etc.) : 30 SGBD supportés via JDBC et/ou ODBC

Extraction depuis un fichier

Image non disponible

Extraction de données depuis un fichier CSV ou de type « délimité »

Extraction depuis un fichier XML

Image non disponible

Extraction de données depuis un fichier XML

Extraction depuis un annuaire

Image non disponible

Extraction de données depuis un annuaire de type LDAP

Alimentation base de données

Image non disponible

Insertion ou mise à jour d'une table d'un SGBD (insert/update)

Recherche dans base de données

Image non disponible

Recherche des enregistrements dans une base de données selon une liste de valeurs

Recherche dans un flux

Image non disponible

Recherche des enregistrements dans un flux de données selon une liste de valeurs

Normalisation Ligne

Image non disponible

Normalise des informations

Dénormalisation ligne

Image non disponible

Dénormalisation de lignes

Ajout séquence

Image non disponible

Ajoute une séquence (calculée ou récupérée depuis une base de données)

Filtrage de ligne

Image non disponible

Permet de diriger les flux de données vers deux cibles différentes selon un ou plusieurs critères

Agrégation de données

Image non disponible

Permet de réaliser des calculs d'agrégation sur un ensemble de lignes (somme, moyenne, min, max, count, etc.)

Calculs

Image non disponible

Permet de créer des données calculées à partir des données traitées

Stockage des traitements au format XML

Les jobs et transformations sont stockés dans un métalangage, qui peut être soit stocké au format XML, soit dans une base de données.

Image non disponible

IV-C. Comparatif des fonctionnalités

IV-C-1. Accès aux données

Accès aux données relationnelles (SGBD)

Image non disponible

Fichiers plats

Image non disponible

Connecteurs applicatifs

Image non disponible

Autres

Image non disponible

IV-C-2. Déclenchement des processus

Déclenchement par message

Image non disponible

Déclenchement par type de polling

Image non disponible

IV-C-3. Traitement des données

Transformations et calculs par défaut

Image non disponible

Attention : les étapes marquées « NON » ci-dessus sont seulement pour la prise en charge automatique. Les deux outils fournissent, bien sûr, un mécanisme de requêtage directement en SQL qui permet de faire toutes les jointures et les requêtes imbriquées…

Transformations manuelles

Image non disponible

IV-C-4. Traitement des données

Image non disponible

IV-C-5. Développement avancé

Image non disponible

IV-C-6. Déploiement/Mise en production

Image non disponible

IV-C-7. Administration

Image non disponible

IV-C-8. Gestion de la sécurité

Image non disponible

IV-D. Comparatif des temps de traitements

IV-D-1. Méthodologie de réalisation des tests

Les performances des temps de traitements sont un critère important dans le choix d'un ETL.

Les résultats des tests qui sont donnés dans les paragraphes suivants correspondent à des cas simples et ne peuvent en aucun cas préjuger des performances réelles en environnement de production.

Seuls des tests poussés sur des traitements d'intégration réels peuvent permettre de qualifier définitivement l'ETL choisi.

  • L'ensemble des tests ont été effectués sur un PC portable Dell

Les caractéristiques techniques sont les suivantes :

Image non disponible
  • Les versions utilisées des deux ETL sont les suivantes :
  • Pentaho Data Integration v3.0.1 ;
  • Talend Open Studio v2.2.3.
  • Pour chaque test, les résultats présentés sont issus d'une moyenne de trois essais réalisés dans des conditions identiques.
  • Tous les traitements sont lancés en ligne de commande.

Ainsi, aucun essai n'est lancé depuis les interfaces graphiques aussi bien pour Pentaho Data Integration que Talend Open Studio.

  • Enfin, les essais sont réalisés uniquement en code généré en Java pour Talend Open Studio, afin que l'on puisse comparer de façon objective ceux obtenus avec Pentaho Data Integration, dont le moteur est écrit en Java.

IV-D-2. Test n°1

Descriptif

1. Extraction des données d'un fichier CSV

 

2. Chargement des données dans un autre fichier CSV

 

- le séparateur « ; » du fichier initial est remplacé par le séparateur « , ».

Détails

Le fichier d'entrée comporte sept champs typés

 

sequence [integer]; now [datetime]; first [number]; second [string]; third [datetime]; fourth

 

[boolean]; fifth [integer]

 

0000000001;2007/11/0510:44:43.014;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000002;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000003;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000004;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000005;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000006;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000007;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000008;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000009;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

0000000010;2007/11/0510:44:43.029;12.345;undeuxtroisquatrecinq;0304/12/0500:00:00.000;Y;12345

 

etc.

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

Résultats du Test

Image non disponible

(Temps de traitement exprimés en sec.)

 
Image non disponible

IV-D-3. Test n°2

Descriptif

1. Extraction des données d'un fichier CSV

 

2. Chargement des données dans un fichier XML

Détails

Le fichier d'entrée comporte 7 champs typés (même fichier que Test1)

 

Le fichier de sortie est un fichier XML dont la structure est la suivante :

 

Image non disponible

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

Résultats du Test

 

(Temps de traitement exprimés en sec.)

Image non disponible

Image non disponible

IV-D-4. Test n°3

Descriptif

1. Extraction des données d'un fichier CSV

 

2. Chargement des données dans une table Postgresql

Détails

Le fichier d'entrée comporte 7 champs typés (même fichier que Test 1 et 2)

 

La table Postgresql chargée comporte les champs suivants :

 

Image non disponible

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

Résultats du Test

Image non disponible

(Temps de traitement exprimés en sec.)

 
Image non disponible

IV-D-5. Test n°4

Descriptif

1. Extraction des données d' un fichier « commandes » (format) CSV

 

2. Chargement des données dans une table [livraisons] avec calcul du délai de livraison et du montant global de chaque commande. Récupération du nom littéral du produit via un « lookup » sur la table [produits] à partir de son code.

Détails

Le fichier « commandes.csv » possède la structure suivante. Il existe 26 zones de livraisons (A, B, C, D, … , X, Y, Z) :

 

Image non disponible

 

La table [produits] possède la structure suivante. Cette table (générée aléatoirement pour les tests) contient le code et la description de 100 000 produits :

 

Image non disponible

 

La table cible [livraisons] doit contenir les données ci-dessous après traitement :

 

[livraisons].[montant]= {prix_unit} x {qte}

 

[livraisons].[delai]= {date_livr} - {date-cmde}

 

[livraisons].[desc_complete]= Texte comprenant {description produit} et {zone_livraison}

 

Image non disponible

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

 

Le lookup sur la table [produits] permet de ramener la description du produit à partir du code produit présent dans le fichier d'entrée :

 

Image non disponible

 

L'étape « JavaScript » permet la réalisation des calculs :

 

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

 

Le composant tMap, permet à la fois de réaliser le lookup sur la table [produits] et la réalisation des différents calculs :

 

Image non disponible

Résultats du Test

Image non disponible

(Temps de traitement exprimés en sec.)

 
Image non disponible

IV-D-6. Test n°5

Descriptif

Test identique au Test 4, sauf qu'on isole au début du traitement toutes les données provenant venant des zones de livraisons codées W, X, Y et Z

 

Ces lignes isolées sont exportées dans un fichier CSV pour traitement ultérieur.

Détails

Le fichier CSV des lignes rejetées contient ainsi le code produit et la zone de livraison rejetée associée (W, X, Y ou Z)

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

 

Le filtrage des lignes s'effectue de la façon suivante :

 

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

 

Comme dans le test 4, c'est le composant tMap qui permet d'isoler les lignes à rejeter :

 

Image non disponible

Résultats du Test

Image non disponible

(Temps de traitement exprimés en sec.)

 
Image non disponible

IV-D-7. Test n°6

Descriptif

Test identique au Test 5, avec alimentation d'une table d'agrégation [livraisons_stats]

Détails

La table d'agrégation [livraisons_stats] doit contenir les données ci-dessous après les traitements suivants. Le groupement de données est effectué pour chaque zone de livraison.

 

[livraisons_stats].[nb_livraisons]= {nb total de livraisons sur la zone} (count)

 

[livraisons_stats].[montant_max]= {montant maxi d'une commande pour la zone} (max)

 

[livraisons_stats].[montant_min]= {montant mini d'une commande pour la zone} (min)

 

[livraisons_stats].[delai_moyen]= {delai moyen de livraison pour la zone} (avg)

 

Image non disponible

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

 

Pour que les calculs d'agrégation soient corrects, le flux de données doit être trié par zone de livraison. Détail de l'étape « Agrégation de valeurs » :

 

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

 

Pour que les calculs d'agrégation soient corrects, le flux de données doit être trié par zone de livraison. Détail de l'étape « tAggregateRow » :

 

Image non disponible

Résultats du Test

Image non disponible

(Temps de traitement exprimés en sec.)

 
Image non disponible

IV-D-8. Test n°7

Descriptif

Utilisation d'une étape de traitement « Dimension lente » de type 2

 

Pour plus d'infos sur les différents types de « Slow Changing Dimension » consulter la page :

 

http://en.wikipedia.org/wiki/Slowly_changing_dimension

Détails

La table [produits_ref_scd] permet l'historisation des prix d'un catalogue produit.

 

Extrait de la table avant le traitement :

 

Image non disponible

 

Le fichier traité indique le code et le prix de l'article à la date du traitement :

 

100; 746.48

 

101; 528.72

 

Une fois le traitement effectué, la table [produits_ref_scd] stocke l'historique des prix :

 

Image non disponible

 

Pour un code produit donné, dès que le prix est différent de celui présent en base, un nouvel enregistrement est créé avec un nouveau numéro de version. La période de validité est également mise à jour (date_debut, date_fin)

Modélisation dans Pentaho Data Integration (PDI)

Image non disponible

Modélisation dans Talend Open Studio

Image non disponible

Résultats du Test

Image non disponible

(Temps de traitement exprimés en sec.)

 
Image non disponible

précédentsommairesuivant