talend tMap 逻辑与 SQL 逻辑 - 性能

talend tMap logic vs SQL logic - performance

我的场景是这样的:我在 table 中有两个字段 (ref1, ref2),我可以根据另一个字段 (factor_column) 的值获取我需要的值。这可以通过两种方式实现,但我不确定哪种方式效率更高?

1) 当 factor_column = Y 然后 ref1...

使用 SELECT 情况

2) 正常 SELECT ref1、ref2 等。并在 talend 组件 tMap 中使用表达式:(factor_column.equals("Y")?ref1: ref2)

我的 talend 工作流程是这样的: tOracleInput -> tMap - tOutput

将逻辑放在 tOracleInput 的 SELECT 子句上还是放在 tMap 上更好?

  • 如果您使用 SELECT 并在数据库中进行处理,将在 ETL/ELT 作业之外处理大量数据集,这非常有帮助
  • 如果您使用表达式,整个数据集将加载到 Talend 中并进行处理。根据数据集,您可能没有足够的 RAM 或堆来完成您的请求(还要考虑随着时间的推移增加数据集)

所以这取决于你的数据大小。

  • tOracleInput 中:逻辑将在整个查询中执行,在 DBMS 中通过 JDBC 连接

  • In the tMap : 逻辑将在JVM中执行。

一般来说,使用 DBMS 比使用 ETL 更快,作业设计也会更简单。