首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >talend插入/更新的一种替代设计

talend插入/更新的一种替代设计
EN

Stack Overflow用户
提问于 2017-07-11 22:17:12
回答 2查看 1.2K关注 0票数 0

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

我在tmap和tmysqloutput中设计了“插入或更新”。然而,这项工作被证明是超级慢的。

作为上述解决方案的替代方案,我正在尝试设计insert和update separately.In顺序来实现这一点,我想散列源行,因为行数通常会更少。

所以,我的问题是我将散列输入行,但是当我将它们与tmap中的目标行连接时,我是否也应该散列目标行?或者我应该按原样使用目标行,然后连接它们?

对这里的工作设计有什么建议吗?

谢谢Rathi

EN

回答 2

Stack Overflow用户

发布于 2017-07-12 14:29:50

如果您使用的是同一数据库,则不应使用ETL加载技术,而应使用ELT加载,以便所有处理都将在数据库中进行。Talend提供了一些ELT组件,这些组件使用起来有点不同,但对这种情况很有帮助。仅使用这些组件,我就可以将速度提高数倍。

在源和目标中都使用带索引的散列字段仍然是一个好主意,这与在Data Vault 2.0模型中加载卫星时采用的方法相同。

或者,如果您可以直接访问源表数据库,则可以考虑为C(R)UD场景添加触发器。这样,源数据库上的每个操作都可以立即反映到您的数据库中。但请记住,您可能需要考虑一个缓冲表(“暂存”),您可以在其中存储您的更改,以便您能够快速摄取,稍后处理。在此表中,只有已更改的行和更改类型(create、update、delete)可供您处理。这解耦了加载和处理,如果稍后加载或处理会出现问题,这会很有帮助。

票数 4
EN

Stack Overflow用户

发布于 2017-07-12 03:27:29

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45037111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档