我想我在混淆事情。
在ETL中,数据转换从A数据库开始,到B数据库结束,都是关系型数据库。也许我有一个20岁的系统。我使用 ETL 来获取两个数据库之间的数据。我不知道ETL还有什么用。
在 ELT 中,除了数据库A 中的数据永远不会在数据库 B 中结束之外,是否相同?相反,原始数据位于数据库 A 的服务器B上的表或其他数据结构中,但需要类似 Hadoop 的东西将数据转换为专门设计用于使用 Hadoop 的应用程序?
编辑:我又做了一次。Hadoop!= ELT。我只关注 Hadoop,并认为它是 ELT 或它的表现形式。编辑:那个 ELT 意味着你需要一个独特的非 RDBMS 文件数据结构而不是 RDBMS,你完全抛弃了 RDBMS。
我认为举个例子会更容易:
数据库A有表C。数据库B有表D。C和D非常相似但不完全相同,数据在加载到D之前需要清理。
ETL
ETL 程序(SSIS、Pentaho 等)从表 C 中提取数据。然后对数据进行一些更改以清理数据并将其放入所需的格式中。然后,ETL 过程将该数据移动/复制到数据库 B 上的表 D。
外语教学法
从表 C 中提取数据。它作为表 C上传到数据库B。数据库 B 现在有两个表,C 和 D。数据库进程(SQL、作业等)现在对表 C 中的数据进行一些更改,并将其置于所需的格式中。然后,同一进程将现在干净的数据复制到表 D。数据库 B 中不再需要临时表 C,可以将其删除或截断。
在这两种情况下,数据现在都加载到数据库 B、表 D 中。前端应用程序继续使用表 D。
在 ETL 和 ELT 中,来自 A 的数据最终都在 B 中。不,ELT 不需要 Hadoop。实际上,在两个数据库之间使用 Hadoop 更像是 ETL。
也许图表会有所帮助:
TLDR; 你想多了。ETL只是一个概念,将任何数据从一个地方移动到另一个地方。无论是 Extract 然后 Load,然后 Transform,还是 Extract、Transform 或 Load,都是一样的。
ETL 代表提取、转换和加载,这是一个用于从各种来源收集数据、根据业务规则/需求转换数据并将数据加载到目标数据库的过程。使用 ETL 的需要源于这样一个事实,即在现代计算中,业务数据驻留在多个位置并以许多不兼容的格式存在。例如,业务数据可能以各种格式(Word 文档、PDF、电子表格、纯文本等)存储在文件系统中,或者可以存储为电子邮件文件,或者可以保存在各种数据库服务器中,如 MS SQL Server,例如 Oracle 和 MySQL。有效地处理所有这些业务信息是一个巨大的挑战,而 ETL 在解决这个问题中扮演着重要的角色。
提取、转换和加载
ETL过程有3个主要步骤,分别是Extract、Transform和Load。
提取——ETL 过程的第一步是从各种来源提取数据。每个源系统都可能以与其他系统完全不同的格式存储其数据。源通常是平面文件或 RDBMS,但几乎任何数据存储都可以用作 ETL 过程的源。
转换——一旦数据被提取并转换为预期的格式,就可以进行 ETL 过程的下一步,即根据一组业务规则转换数据。数据转换可以包括各种操作,包括但不限于过滤、排序、聚合、连接数据、清理数据、基于现有值生成计算数据、验证数据等。
加载——最后的 ETL 步骤涉及将转换后的数据加载到目标中,目标可能是数据库或数据仓库。
来源http://www.sql-tutorial.net/ETL.asp
ELT,“提取、加载、转换”实际上并不存在,可以完全忽略。维基百科文章没有引用,仅在“smartdatacollective.com”网站上提及。这可能是营销手淫或聪明的巨魔。
但是让我们娱乐一下,它会是什么样子……
整个想法是这样的,即在将输入放入商店或“湖”之前,您不会对其进行转换。这不是一个新的范例或值得一个新的术语。我们有执行此操作的数据库,即文件系统。而且我们不调用
cp
ELT 脚本。你会故意这样做的整个想法也很尴尬。这只是试图美化不良做法。给定一个数据库
inode, xmlblob_Lake
,我认为每个已建立的数据库管理员都会畏缩不前,而不是认为“哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇”我可以通过多种方式想到拥有 ELT 系统并将 Hadoop 视为 ELT 设计。
Hadoop 实现通常从许多数据源获取数据。使用 Pig 或 Hive 等数据提取层执行转换与 ELT 设计非常相似。
至于 ETL 和 ELT 之间的区别,它基于设计范围。