Optimisez vos jobs Talend pour la copie de table à table

L’ETL Talend permet de paramétrer facilement la copie d’une table vers une autre ayant la même structure.
Christophe DUPONTMis à jour le 23 Mai 2013

L’ETL TalendTalend est un logiciel ETL permettant de faire de l'Extract, de la Transformation et du chargement (Load) de données. permet de paramétrer facilement la copie d’une table vers une autre ayant la même structure.

Nous parlerons dans cet article de la copie vers une table vide, où le job ne fera que des INSERT (et pas d’INSERT OR UPDATE, plus consommateur).

Une des bonnes pratiques invite à déclarer dans les jobs une première connexion vers la base source et une seconde vers la base cible, les composants étant ensuite paramètres pour utiliser ces connexions. Cela permet d’ouvrir une unique session vers chacune des bases, évitant ainsi d’ouvrir plusieurs sessions pour un même client. 

talend-11.jpg

Illustration d’un job Talend : Les connexions sont déclarées au début du job. 

talend-2.jpg

Les composants sont configurés pour utiliser ces connexions.

Néanmoins, si cette solution facilite la maintenance de l’application, elle peut poser des problèmes de performance. En effet lorsqu’un composant d’insertion utilise ce type de connexion, Talend lui interdit l’utilisation de buffer. En conséquence de quoi les performances s’écroulent.

La solution consiste alors à ne pas utiliser une connexion commune mais de la paramétrer sur chacun des composants de type output, comme le montre le paramétrage d’un composant tOracleOutput ci-dessous: 

Talend3.jpg

De plus si vous souhaitez encore accellérer le traitement, il est recommandé; d’utiliser un curseur sur la table source, comme on peut le voir sur l’image suivante: 

Talend31.jpg

Ainsi en utilisant cette méthode, les insertions sont beaucoup plus rapide, avec un rapport allant jusqu’à; 100 (4000 lignes/seconde contre 40l/s) par rapport à l’utilisation d’une connexion partagée (test réalisée; avec Talend 5.2.1 sur une table de 40 000 enregistrements, base de données Oracle 11g)