插入/更新talend的替代设计

时间:2017-07-11 14:17:12

标签: talend

我在Talend中有一个要求,我必须在源表中更新/插入行到目标表。源表和目标表是相同的。源会被业务流程刷新,需要在目标表中更新/插入这些结果。

我为tmap和tmysqloutput中的'insert或update'设计过。然而,这项工作结果非常缓慢

作为上述解决方案的替代方案,我试图单独设计插入和更新。为了做到这一点,我想要散列源行,因为行数通常会更少。

所以,我的问题是我会对输入行进行哈希处理,但是当我将它们与tmap中的目标行连接起来时,我是否应该对目标行进行哈希处理?或者我应该按原样使用目标行,然后加入它们吗?

有关工作设计的任何建议吗?

hash design

tmap configuration

由于 瑞斯

2 个答案:

答案 0 :(得分:4)

如果您使用的是同一个数据库,则不应使用ETL加载技术,而应使用ELT加载,以便在数据库中进行所有处理。 Talend提供了一些与使用有点不同的ELT组件,但对这种情况非常有帮助。我只使用那些组件就可以加快多个速度。

在源和目标中使用索引哈希字段仍然是一个好主意,这在加载Data Vault 2.0模型中的卫星时的方式相同。

或者,如果您可以直接访问源表数据库,则可以考虑为C(R)UD方案添加触发器。这样做,源数据库上的每个操作都可以立即反映在您的数据库中。请记住,您可能需要考虑一个缓冲表(“staging”),您可以在其中存储更改,以便您能够快速摄取,稍后进行处理。在此表中,仅存在已更改的行和更改类型(创建,更新,删除)以供您处理。如果在以后加载或处理时出现问题,这将解耦加载和处理。

答案 1 :(得分:0)

是的,我相信您也应该为目标表使用哈希组件。 因为你的处理(查找)会非常快,因为它在内存中发生

如果不是查找加载可能需要更多时间。