有什么理由支持使用ELT流程而不是ETL?


19

我意识到我的公司使用ELT(提取-加载-转换)流程,而不是ETL(提取-转换-加载)流程。
两种方法有什么区别?在哪种情况下,一种方法比另一种方法“更好”?如果您可以提供一些示例,那就太好了。

Answers:


13

关于ETL和ELT的大量讨论。

VS ELT ETL之间的主要区别是在处理发生 数据的ETL处理在ETL工具发生(通常记录在-A-时间和内存中)数据的ELT处理在数据库引擎发生

数据相同,两种方法都可以达到数据的最终结果。

这在很大程度上取决于您和您的环境如果您拥有强大的数据库引擎和良好的硬件,并且可以对其进行繁重的处理,则ELT对您有利;如果您拥有繁忙的数据仓库引擎,则需要将其从处理中解放出来。用于ETL。

请注意,拥有ETL工具可为您提供两种选择,例如ETL(T),您可以在ETL工具中进行转换,也可以在数据库引擎中进行转换。

但是ELT您只能在数据库引擎中进行转换,但是您应该知道数据库比基于一次记录的ETL工具在基于集合的操作上更好。

SO上提出了类似的问题,但支持ETL,并且有一篇不错的文章比较了ETL和ELT,但赞成ELT


10

这几乎是语义问题。关于这一点的讨论中释放了很多热议,但我真的不相信两者之间的区别有任何真正的哲学深度。

在某种程度上,您可以将ETL视为在最终加载之前在客户端工具中转换数据的方式,ELT表示将数据传输到某种暂存区,而格式的更改相对较少。之后发生“转变”。

这些定义非常松散,可以应用于多种技术体系结构,并且有许多可能的设计可以用这两个术语来描述。

我非常支持这样一种体系结构,在该体系结构中,所有转换和业务逻辑都可以构建为或多或少的同类代码库,并且我已经完成了许多转换逻辑非常复杂的系统。这往往只是使用ETL工具来放置数据,然后所有的转换都在存储过程中完成。可以将其描述为ETL或ELT,区别仅在于语义之一。

但是,某些工具是以数据库为中心的(例如,Oracle Data Integrator通常被称为ELT工具)。如果您订阅此视图,则在将数据转换到暂存区中然后由SQL或PL / SQL代码处理(可能由工具或手写)。我与之交谈的几个人似乎认为ODI的主要优点在于它不是OWB。

如果使用客户端工具(例如Informatica Powercentre或MS SQL Server Integration Services),则该工具可以对数据客户端进行大量转换。一些ETL工具(例如Ascential Datastage和Ab Initio)旨在处理平面文件和内存中数据结构以提高速度。在这种架构中,转换已在加载之前完成。尽管我已经看到许多以工具为中心的项目,其中所有实际工作都是由一堆存储过程代码完成的,但也许可以将这种类型的体系结构明确地归类为“ ETL”。

各种工具和体系结构方法都有其优点,但是人们不能一概而论地说明“ ETL”与“ ELT”方法的优缺点,因为术语如此广泛,以至于差异几乎毫无意义。一些工具和体系结构可能具有特定的优势-例如,Ab Initio对平面文件的大量使用使其在大数据量上具有显着的性能优势。

实际上,在不深入讨论系统要求,平台和技术体系结构的情况下,区分“ ETL”和“ ELT”是没有意义的。


1

这也是金钱的问题。正如您所指出的那样,在数据量很高的地方,基于平面文件的解决方案(例如Ab Initio和DataStage Parallel Extender)的确确实更快,但可能是中位数到六位数的命题。IRI CoSort以ETL为中心(根据他们的ELT比较),这是我见过的唯一负担得起的方法,除了复杂的Hadoop实现之外,它还以文件系统速度解决转换量。我还认为,通常将硬件扔给这个问题(ELT设备和内存DB也会这样做),在成本方面也不是很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.