|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Étudiant Inscription : juillet 2011 Messages : 20 ![]() |
Bonjour,
Actuellement sur un projet de transition d'ODI à Talend, je dois réécrire tous les jobs. La même table peut être utilisée dans plusieurs jobs. Dans un souci d'optimisation, je me demandais si on devait toujours recharger toutes les données de la table ou s'il était possible de : - sauvegarder ces données après le premier chargement - les réutiliser pour les jobs suivants Certaines tables contiennent 5 millions d'enregistrements et je trouve dommage de les recharger 2 à 3 fois d'affilée. Débutant en Talend, je n'ai pas trouvé beaucoup de sujets sur ce problème. Je vous remercierai beaucoup si vous pouviez m'éclairer. |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Nicolas Inscription : janvier 2011 Messages : 378 ![]() |
Partager les données d'un table dans plusieurs job à moins qu'ils s'exécutent dans un temps très proche je ne vois pas l'interet, il y a un risque d'utiliser des données fausses.
Sinon c'est peut-être que ces jobs peuvent être regrouper dans un job en tant que sous job et prendre en entrée le même flux de données (en le démultipliant dans un tMap) et réaliser les traitements en parallèles. |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Étudiant Inscription : juillet 2011 Messages : 20 ![]() |
L'idée de démultiplier avec un tMap est intéressante mais ces jobs ne peuvent pas s'éxécuter de manière parallèle.
Je mets un exemple tout bête pour illuster mon propos : JobA --On SubJobOK--> JobB Et la même table est utilisée dans JobA et JobB. Donc actuellement elle est chargée dans JobA et JobB, je trouve cela un peu dommage et peu efficace sachant que çà se répète 5 à 6 fois. |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Nicolas Inscription : janvier 2011 Messages : 378 ![]() |
Je pense que tBufferOutput et tBufferInput devraient être la solution à ton problème.
|
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Étudiant Inscription : juillet 2011 Messages : 20 ![]() |
Je vais regarder de ce côté , merci.
Je ne sais pas encore bien comment on les utilise donc je vais essayer différentes choses. |
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Étudiant Inscription : juillet 2011 Messages : 20 ![]() |
En fait, après quelques essais, je me suis rendu compte qu'on ne pouvait utiliser qu'un tBufferOutput par job.
Si j'en utilise plusieurs, c'est en fait le même buffer qui est rempli et donc je ne peux pas en utiliser qu'un par table. De plus, on ne peut utiliser le tBufferInput que dans un sous-job du tBufferOutput, on ne peut pas l'utiliser dans un job autre. Cela ne résoud donc pas mon problème car les données que je charge sont dans des jobs différents. La méthode que je vois maintenant mais qui n'est pas très propre serait de sauvegarder les données que je réutilise plusieurs fois dans des fichiers. les entrées-sorties dans des fichiers sont sensés être plus rapides que celles avec Oracle non ? |
|
|
00
|
|
|
#7 | |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
Bonjour,
Citation:
Après, il faut voir si c'est vraiment intéressant de se passer de la possibilité de faire des requêtes sur la base source, qui permettraient d'optimiser les traitements via des filtres ou des jointures avec d'autres tables. De manière très théorique, si tu as besoin de lire plusieurs fois les mêmes informations d'une table, c'est peut-être qu'il faut revoir la stratégie d'alimentation. Nicolas |
|
|
|
00
|
|
|
#8 | |
|
Membre à l'essai
![]() Étudiant Inscription : juillet 2011 Messages : 20 ![]() |
Citation:
Etant débutant en décisionnel et n'ayant pas un grand champ d'action (je ne dois que faire la transition d'ODI à Talend), j'ai du mal à trouver une solution permettant d'optimiser sans "casser" le travail déjà fait. Merci pour ta réponse avisée en tout cas |
|
|
|
00
|
|
|
#9 |
|
Membre expérimenté
![]() Nicolas Inscription : janvier 2011 Messages : 378 ![]() |
tBufferInput est utilisé dans des sous job pour justement permettre d'utiliser les données lues dans le Job principale.
Dans ton cas je ne vois pas le problème, soit JobA et JobB peuvent être sous job d'un principal qui mets les données des le buffer. Si ce sont des job a parts entière qui peuvent s'exécuter indépendamment et bien il n'y a pas vraiment de raison qu'ils utilisent les même données car ces données peuvent avoir changé entre les exécutions des job. Pour info le tBufferOutput utilise un fichier. |
|
|
00
|
|
|
#10 | ||
|
Membre à l'essai
![]() Étudiant Inscription : juillet 2011 Messages : 20 ![]() |
Citation:
Citation:
J'avoue être un peu perdu là à essayer différentes choses, je ne dois peut-être pas bien expliquer mon problème. Je reposterai si des fois je sors du trou. Merci en tout cas |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com