一文追溯 ETL 的发展历程

百家 作者:CSDN 2020-03-30 09:52:44

在这篇文章里,我们将追溯传统的ETL架构,然后看看现代ETL发展过程中的重大事件。

作者 | Ramindu De Silva
译者 | 弯月,责编 | 郭芮
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)

以下为译文:

ETL是什么?
ETL是Extract(提取)、Transformation(转换)和Load(加载)的首字母缩写。简而言之,ETL就是在两个位置之间拷贝数据。
  • Extract(提取):从不同类型的数据源(包括数据库)读取数据。

  • Transform(转换):将提取的数据转换成特定的格式。转换还包括使用系统中其他数据来丰富数据内容。

  • Load(加载):将数据写入到目标数据库、数据仓库或者另一个系统中。

根据基础设施的不同,ETL可以划分为两大类。


传统ETL

以前,数据通常都保存在操作系统、文件和数据仓库中。每天,数据都要在这些位置之间移动多次。ETL工具和脚本都是现写现用。

传统ETL的工作流

这个架构非常难以管理,而且非常复杂。下面是传统ETL架构的一些缺点:
  • 数据库、文件和数据仓库之间的处理以批次进行。

  • 目前,大多数公司都需要分析并操作实时数据。但是,传统的工具不适合分析日志、传感器数据、测量数据等。

  • 非常大的领域数据模型需要全局的结构。

  • 传统ETL处理非常慢、非常耗时,而且需要大量资源。

  • 传统架构仅关注已有的技术。因此,每次引入新的技术,应用程序和工具都要重新编写。

随着时间一天天过去,大数据改变了处理的顺序。数据先提取并加载到一个仓库中,并以原始格式保存。每当数据分析师或其他系统需要数据时再进行转换。这个过程叫做ELT。不过这个过程最适合在数据仓库中进行处理。如Oracle Data Integration Platform Cloud等系统提供了该功能。


ETL的现状

与十年前相比,当今世界的数据和处理状况已经发生了巨大的变化。使用传统ETL过程处理现代数据已经力不从心。部分原因如下:
  • 现代数据处理通常包括实时数据的处理,而且组织也需要对处理过程的实时洞察。

  • 系统需要在数据流上执行ETL,不能使用批处理,而且应该能够自动伸缩以处理更高的数据流量。

  • 一些单服务器的数据库已经被分布式数据平台(如Cassandra、MongoDB、Elasticsearch、SAAS应用程序等)、消息传递机制(Kafka、ActiveMQ等)和几种其他类型的端点代替。

  • 系统应该能够以可管理的方式加入额外的数据源或目的地。
  • 应当避免由于“现写现用”的架构导致的重复数据处理。

  • 改变数据捕获技术的方式,从要求传统ETL与之集成,变成支持传统操作。

  • 数据源多样化,而且需要考虑新需求的可维护性。
  • 源和目标端点应该与业务逻辑解耦合。使用数据映射层,将新的源和端点无缝地衔接,而且不影响数据转换过程。

数据映射层

  • 接收到的数据应当在转换(或执行业务规则)之前进行标准化。

  • 数据应该在转换之后、发布到端点之前转换成特定的格式。

  • 数据清理并不是现代世界中唯一的数据转换过程。数据转换还需要满足组织的许多业务需求。

  • 目前的数据处理通常包含过滤、连接、聚合、序列、模式和丰富化,以执行复杂的业务逻辑。

数据处理过程


拯救世界的流式ETL

新的数据需求是驱动组织前进的动力。许多组织中的绝大多数传统系统依然能够运行,这些系统使用的都是数据库和文件系统。这些组织也在尝试新的系统和新技术。这些技术能够处理大数据和增长和更快的数据速率(如每秒上万条记录),如Kafka、ActiveMQ等。
使用流式ETL继承架构,组织不需要计划、设计并实现一个复杂的架构,就能填补传统系统和现代系统之间的空白。流式ETL架构师可伸缩的、可管理的,还能处理大容量、结构多样的实时数据。
将数据提取和加载从数据转换中解耦合,就构成了源-目的地模型,该模型可以让系统与未来的新技术向前兼容。这个功能可以通过许多系统实现,如Apache Kafka(配合KSQL)、Talend、Hazelcast、Striim和WS02 Streaming Integrator(配合Siddhi IO)。

现代ETL功能

如上所述,传统系统通常将所有数据都放到数据库和文件系统中,以便进行批处理。这个场景说明了为何传统的事件源(如文件、改变数据捕获(Change Data Capture,简称CDC))要与新的流式集成平台集成。
我们来考虑一个工厂中的实际应用场景,它有以下功能。
传统系统:
  • 将所有生产数据放到文件系统和数据库中,数据的格式各异。

  • 每小时或每天对数据进行处理。

  • 处理来自CDC的事件。

  • 处理新系统通过HTTP收到的以事件为中心的数据。

  • 将处理过的事件发送到多个目的地。

  • 监视当前的库存,在需要新库存的时候发送通知。

  • 使用库存数量查看分析结果。

传统的ETL工具:

  • 下述处理的ETL逻辑是重复的:

  • 对于每个结构不同的文件和数据库。

  • 当目标或源端点的数量增加时。

  • 重复的业务逻辑很难管理和伸缩。

  • 分析和监视所需的数据计算是重复的。

流式平台架构如何解决现代ETL问题:

现代流式平台的工作流

  • 源(例如文件、CDC、HTTP)和目标端点(如Kafka、Elasticsearch、Email)从处理过程中解耦合:

  • 目标、源和存储API连接到多个数据源。

  • 即使源和目标中的数据结构不同,数据映射(如data mapper)层和流SQL(如Query1)也会把从多个源接收到的事件转换成通用的源定义(如Stream1),以便以后进行处理。

  • 流平台架构可以连接传统类型的数据源(如文件和CDC),和广泛应用的现代数据源(如HTTP)。

  • 传统系统和现代系统生成的事件都用同一个工作流进行接收和分析。

  • 聚合(如Aggregation1)按照每分钟、每小时等频率针对需要的属性进行计算。

  • 数据随时按需进行汇总,不需要对整个数据集进行处理和汇总。应用程序和可视化、监视工具可以通过提供的API访问汇总后的数据。

  • 可以无缝地添加并改变一个或多个业务逻辑(如BusinessRule1)。

  • 可以添加任何逻辑,而无需改变已有组件。如上例中,根据BusinessRule1,当紧急程度升高时,就会触发一条Email消息。

通过上述架构,我们可以看到为了ETL数据处理,流式平台与传统系统集成,如文件、CDC与使用Kafka和HTTP的现代系统的结合。

原文:https://dzone.com/articles/etl-and-how-it-changed-over-time
本文为CSDN翻译文章,转载请注明出处。
【End】

推荐阅读 
又要头秃?2020 年七大 AI 编程语言大盘点
软件欺诈的骗局揭露:“替罪羊”究竟是如何构建的?
2020,国产AI开源框架“亮剑”TensorFlow、PyTorch

1 分钟抗住 10 亿请求!某些 App 怎么做到的? | 原力计划

另一种声音:容器是不是未来?

探索比特币独特时间链、挖矿费用及场外交易的概念

你点的每一个在看,我认真当成了喜欢

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接