AXOPEN

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.

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étrés 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.

 
Talend1

Illustration d'un job Talend :

Les connexions sont déclarées au début du job.

Talend2

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

 

 

 

 

 

 

 

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:

 
Talend3

 

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é avec Talend 5.2.1 sur une table de 40 000 enregistrements, base de données Oracle 11g).