什么是 ETL?

ETL 是提取、转换和加载的缩写。简单地说,它只是在两个位置之间复制数据。[1]

  • 提取:从不同类型的源(包括数据库)读取数据的过程。
  • 转换:将提取的数据转换为特定格式。转换还涉及使用系统中的其他数据来丰富数据。
  • 加载:将数据写入目标数据库、数据仓库或其他系统的过程。

ETL 可分为两类,与基础结构有关。

传统 ETL

回到今天,数据通常位于我们称为操作数据库、文件和数据仓库的热门位置。数据每天在这些位置之间移动几次。ETL 工具和脚本以临时方式插入,以在源和目标到达时连接它们。

Traditional ETL workflow

传统的 ETL 工作流

这种特定的体系结构是难以管理且相当复杂的。以下是传统ETL体系结构的一些缺点:

  • 数据库、文件和数据仓库之间的处理以批处理方式完成。
  • 目前,大多数公司倾向于对实时数据进行分析和操作。但是,传统工具的设计并不用于处理日志、传感器数据、指标数据等。
  • 非常大的域的数据建模需要全局架构。
  • 传统的 ETL 过程速度缓慢、耗时且耗费资源。
  • 传统架构当时只关注技术。因此,引入了新技术,应用程序和工具必须从头开始编写才能连接。

随着时间的推移,大数据改变了流程的顺序。数据被提取并加载到存储库,并保留在原格式。数据分析人员或其他系统需要时,都会转换数据。这称为ELT。但是,在处理仓库中的数据时,这最有利。系统,例如

您可能还喜欢:
实时流处理与阿帕奇卡夫卡第一部分

ETL 的当前状态

与十年前相比,现代世界数据及其使用发生了巨大变化。在处理现代数据时,传统的 ETL 流程存在差距。以下是造成这种情况的一些主要原因:

  • 现代数据流程通常包括实时流数据,组织需要实时洞察流程。
  • 系统需要在数据流上执行 ETL,而无需使用批处理,并且应该通过扩展系统来处理高数据速率。
  • 某些单服务器数据库现在被分布式数据平台(例如卡桑德拉、蒙哥DB、弹性搜索、SAAS 应用程序)、消息代理(例如卡夫卡、ActiveMQ 等)和几种其他类型的终结点所取代。
    • 系统应能够插入其他源或接收器,以便以可管理的方式随时随地连接。
    • 必须消除由于临时体系结构而导致的重复数据处理。
    • 必须集成与传统 ETL 一起使用的更改数据捕获技术,以支持传统操作。
  • 异构数据源可用,应根据新的要求查看维护。
    • 源和目标终结点应与业务逻辑分离。数据映射层应允许以不影响转换的方式无缝插入新源和端点。

      Data mapping layer

      数据映射层
      • 接收的数据应在转换(或执行业务规则)之前进行标准化。
      • 数据应在转换后和发布到终结点之前转换为特定格式。
    • 数据清理并不是现代世界转型中定义的唯一过程。组织需要满足许多业务需求

Data processing workflow

数据处理工作流

将 ETL 流式传输到救援

由于对数据的新需求,数据是驱动组织的燃料。大多数传统系统在大多数组织中仍然运行,并且使用数据库和文件系统。同样的组织现在正在努力走向新的系统和新技术。 这些技术能够处理大数据的增长和高数据速率,例如每秒数以万计的记录,如 Kafka、ActiveMQ 等。

使用流式处理 ETL 集成体系结构,组织无需规划、设计和实施复杂的体系结构来填补传统系统和当前系统之间的差距。流式处理 ETL 架构是可扩展和可管理的,同时可满足大量实时数据,具有高多样性,包括不断发展的架构。

源汇模型是通过分离解压缩转换加载引入的,transformation也使系统向前发展兼容新技术和功能。此功能可以通过多个系统来实现,例如Apache Kafka(KSQL)、塔伦德黑兹尔卡斯特斯特里姆WSO2 流集成商(与Siddhi IO)。

现代ETL功能

如上所述,旧系统通常会将所有数据转储到数据库和可供分批处理的文件系统。此方案说明传统事件源(如文件和更改数据捕获 (CDC) 如何与新的流集成器平台集成。

让我们考虑一个生产工厂中具有以下功能的实际方案。

传统的制度,

  • 将所有生产数据转储到具有各种不同架构的文件系统和数据库
  • 处理从CDC收到的事件。
  • 处理新系统(通过HTTP)接收的以事件为中心的数据
  • 将处理的事件发送到多个目标。
  • 监视当前库存,并在需要新库存时发送通知。
  • 使用库存编号查看分析。
  • 在传统的ETL工具中:

    • ETL 处理逻辑复制如下:
      • 对于具有不同架构的每个文件和数据库。
      • 当目标或源终结点的数量增加时。
    • 重复的业务逻辑很难管理和扩展。
    • 检索数据进行分析和监视时,重复计算过程。

    流媒体平台架构如何解决现代 ETL 问题Modern streaming platform workflow

    现代流媒体平台工作流
    • 源(例如文件、CDC、HTTP)和目标终结点(例如卡夫卡、弹性搜索、电子邮件)与处理分离:
      • 接收器、源和存储 API 连接大量数据源。
      • 尽管源和接收器中有不同的数据架构,但数据映射(例如数据映射器)层和流式处理 SQL(例如Query1)将通过多个源接收的事件转换为公共流定义 (Stream1),以便进一步处理。
    • 流式平台体系结构连接传统类型的源,如文件和 CDC,以及广泛使用的现代源(如 HTTP)。
      • 从旧系统和现代系统生成的事件以单个流接收和分析。
    • 聚合(例如,聚合1)按分钟、小时等计算必要的属性。
      • 数据是动态汇总的,无需在需要时处理和汇总整个数据集。应用程序以及可视化和监视工具可以通过提供的 API 访问汇总数据。
    • 可以无缝添加和更改业务逻辑的一个或多个语句(例如,BusinessRule1)。
      • 无需对现有组件进行任何更改,即可添加任何逻辑

    通过上述架构,我们可以看到流式处理平台如何将传统系统(如文件和 CDC)与使用 Kafka 和 HTTP 进行 ETL 处理的现代系统集成。

    有关 WSO2 流式处理集成器如何为复杂的 ETL 方案提供解决方案的 WSO2 流式处理器,您可以参考此流式处理 ETL。

    1. https://medium.com/sciforce/what-is-etl-1df5305bb341. . . .

    进一步阅读

    Comments are closed.