数据编排的现代时代:从数据碎片化到协作

简介: 数据工程与软件工程长期存在分歧,各自拥有独特的工具和最佳实践。本文探讨了数据编排器的角色及其最新趋势,如何使这两个领域更加紧密地结合。数据编排通过协调数据的提取、转换和服务,解决了多数据源、目标和工具的复杂性。文中介绍了 ELT 流程、不同类型的编排工具(如 Apache Airflow 和 Apache Flink),以及未来可组合数据系统的开放标准,如 Apache Parquet 和 Apache Arrow。这些标准有助于简化数据共享和治理,推动数据系统的未来发展。

数据工程和软件工程长期以来一直存在分歧,各自都有自己独特的工具和最佳实践。一个关键的区别在于,在构建数据产品时需要专用的编排。在本文中,我们将探讨数据编排器所扮演的角色,以及该行业的最新趋势如何使这两个学科比以往任何时候都更紧密地结合在一起。

数据编排的现状

投资数据功能的主要目标之一是统一整个企业的知识和理解。这样做的价值可能是巨大的,但它涉及集成越来越多的系统,这些系统的复杂性通常会增加。数据编排为组合这些系统提供了一种原则性的方法,其复杂性来自:

  • 许多不同的数据源,每个数据源都有自己的语义和限制
  • 数据产品的多个目标、利益相关者和使用案例
  • 创建最终产品所涉及的异构工具和流程

典型数据堆栈中有几个组件可帮助组织这些常见方案。

组件

数据工程的主流行业模式称为提取、加载和转换 (ELT)。数据 (E) 从上游源提取,(L) 直接加载到数据仓库中,然后 (T) 转换为各种特定于域的表示形式。存在变体,例如 ETL,它在加载到仓库之前执行转换。所有方法的共同点是三个高级功能:摄取、转换和服务。需要协调这三个阶段之间,但也需要在每个阶段内进行协调。

摄入

摄取是将数据从源系统(例如数据库)移动到存储系统的过程,以便转换阶段能够更轻松地访问数据。此阶段的编排通常包括将任务安排在需要新数据上游时运行,或者在数据可用时主动侦听来自这些系统的通知。

转型

转换的常见示例包括从原始结构中解压缩和清理数据,以及将其拆分或联接到与业务域更紧密一致的模型中。SQL 和 Python 是表示这些转换的最常用方式,现代数据仓库为它们提供了出色的支持。在此阶段,编排的作用是对转换进行排序,以便有效地生成利益相关者使用的模型。

服务

服务可以指非常广泛的活动。在某些情况下,最终用户可以直接与仓库交互,这可能只涉及数据管理和访问控制。更常见的是,下游应用程序需要访问数据,而这反过来又需要与仓库的模型同步。加载和同步是业务流程协调程序在服务阶段发挥作用的地方。

图 1.从源通过数据仓库到最终用户应用程序的典型数据流

摄取引入数据,在仓库中进行转换,并将数据提供给下游应用程序。


这三个阶段构成了用于分析系统的有用心智模型,但对业务来说重要的是它们支持的功能。数据编排有助于协调从源系统(可能是核心业务的一部分)获取数据并将其转化为数据产品所需的流程。这些流程通常是异构的,不一定是为了协同工作而构建的。这可能会给编排器带来很多责任,使其负责制作副本、转换格式和其他临时活动,以将这些功能整合在一起。

工具

从本质上讲,大多数数据系统都依赖于一些调度功能。当只需要在可预测的基础上管理有限数量的服务时,一种常见的方法是使用简单的计划程序,例如 .以这种方式协调的任务可以非常松散地耦合。在任务依赖关系的情况下,很容易将一个任务安排在另一个任务预计完成之后的某个时间开始,但结果可能对意外延迟和隐藏的依赖关系很敏感。cron

随着流程复杂性的增加,明确它们之间的依赖关系变得很有价值。这就是 Apache Airflow工作流引擎提供的。Airflow 和类似系统通常也被称为 “编排器”,但正如我们将看到的,它们并不是编排的唯一方法。工作流引擎使数据工程师能够指定任务之间的显式排序。它们支持运行计划任务,这与运行计划任务非常相似,并且还可以监视应触发运行的外部事件。除了使管道更加健壮之外,它们提供的依赖项鸟瞰图还可以提高可见性并实现更多治理控制。cron

有时,“任务”的概念本身可能具有局限性。任务本质上将对批量数据进行操作,但流式处理世界依赖于连续流动的数据单元。许多现代流式处理框架都是围绕数据流模型构建的,Apache Flink 就是一个常见的示例。这种方法放弃了独立任务的排序,转而支持组合可以对任何大小的块进行操作的细粒度计算。

从编排到组合

这些系统之间的共同点是它们捕获依赖项,无论是隐式的还是显式的,批处理的还是流式的。许多系统需要这些技术的组合,因此一致的数据编排模型应该将它们全部考虑在内。这是由更广泛的组合概念提供的,该概念捕获了数据编排器今天所做的大部分工作,并且还扩展了将来如何构建这些系统的视野。

可组合数据系统

数据编排的未来正在朝着可组合的数据系统发展。编排器一直背负着连接越来越多的系统的沉重负担,这些系统从未被设计为相互交互。组织已经建立了大量的 “胶水” 来将这些流程结合在一起。通过重新思考数据系统如何组合在一起的假设,新方法可以大大简化其设计。

开放标准

数据格式的开放标准是可组合数据移动的核心。Apache Parquet 已成为列式数据的实际文件格式,而 Apache Arrow 是其内存中的对应格式。围绕这些格式的标准化非常重要,因为它减少甚至消除了困扰许多数据管道的昂贵的复制、转换和传输步骤。与原生支持这些格式的系统集成可实现原生 “数据共享” ,而无需所有胶水代码。例如,摄取过程可能会将 Parquet 文件写入对象存储,然后简单地共享这些文件的路径。然后,下游服务可以访问这些文件,而无需创建自己的内部副本。如果工作负载需要与本地进程或远程服务器共享数据,则可以使用 Arrow IPCArrow Flight,开销几乎为零。

标准化正在堆栈的所有级别进行。Apache Iceberg 和其他开放表格格式在 Parquet 成功的基础上,定义了一种用于组织文件的布局,以便它们可以解释为表格。这为文件访问添加了微妙但重要的语义,可以将文件集合转换为原则性数据湖仓一体。结合目录(例如最近孵化的 Apache Polaris),组织可以进行治理控制,以构建权威的事实来源,同时从底层格式实现的零副本共享中受益。这种组合的力量怎么强调都不为过。当业务的事实来源与生态系统的其余部分零副本兼容时,只需共享数据即可实现许多编排,而不是构建繁琐的连接器流程。

图 2.由开放标准组成的数据系统

将数据作为 Parquet 写入对象存储后,无需任何转换即可共享数据。


解构堆栈

数据系统始终需要对文件、内存和表格式做出假设,但在大多数情况下,它们已隐藏在其实现的深处。用于与数据仓库或数据服务供应商交互的狭窄 API 有助于实现简洁的产品设计,但它并不能最大限度地增加最终用户可用的选择。考虑图 1 和图 2,它们描述了旨在支持类似业务功能的数据系统。

封闭系统中,数据仓库在内部维护自己的表结构和查询引擎。这是一种一刀切的方法,可以轻松上手,但可能难以扩展到新的业务需求。锁定可能很难避免,尤其是在涉及治理和访问数据的其他服务等功能时。云提供商在其生态系统中提供无缝和高效的集成,因为他们的内部数据格式是一致的,但这可能会关闭在该环境之外采用更好产品的大门。相反,导出到外部提供商需要维护专为仓库的专有 API 构建的连接器,这可能会导致跨系统的数据蔓延。

一个开放的、解构的系统对其最低级别的细节进行了标准化。这使企业能够为服务挑选最佳供应商,同时获得以前只有在封闭生态系统中才能实现的无缝体验。在实践中,开放数据系统的主要关注点是首先将数据源复制、转换和陆地为开放表格格式。完成此操作后,可以通过将仅写入一次的数据的引用共享到组织的真实来源来实现许多编排。正是这种在各个层面实现数据共享的举措,促使组织重新思考数据的编排方式,并构建未来的数据产品。

结论

编排是现代数据系统的支柱。在许多企业中,它是解开复杂且相互关联的流程的核心技术,但开放标准的新趋势为如何协调这些依赖关系提供了新的视角。系统不是将更高的复杂性推向编排层,而是从头开始构建系统以协作共享数据。云提供商一直在增加与这些标准的兼容性,这有助于为未来的最佳解决方案铺平道路。通过采用可组合性,组织可以将自己定位为简化治理,并从我们行业发生的最大进步中受益。

目录
相关文章
|
8天前
|
监控 数据可视化 测试技术
如何通过看板工具简化ASIC设计中的沟通与决策流程,提高团队效率?
本文介绍了如何利用看板工具,特别是板栗看板(Banli Kanban),优化ASIC设计流程。从需求分析、设计开发、验证测试到制造交付及项目回顾,板栗看板通过任务可视化、实时信息同步和精准任务指派,有效提升了项目管理的精准性与灵活性,减少了沟通成本,增强了团队协作,促进了流程优化。
如何通过看板工具简化ASIC设计中的沟通与决策流程,提高团队效率?
|
19天前
|
敏捷开发 数据可视化 数据挖掘
从需求到交付:五种管理方法让研发流程更高效
产品研发团队面临需求多变、任务紧迫等挑战,需要高效的管理方法来提升协作和执行力。本文推荐五种方法:看板管理、MVP最小可行产品、用户故事地图、双钻模型及Scrum框架,帮助团队实现“巧干”。
47 1
从需求到交付:五种管理方法让研发流程更高效
|
22天前
|
存储 数据可视化 数据挖掘
设计团队高效运作的核心:任务可视化管理
团队协作低效?试试看板管理,让信息同步和流程更清晰,高效提升团队协作!
34 0
设计团队高效运作的核心:任务可视化管理
|
8天前
|
监控 数据可视化 数据挖掘
构建知识共享文化:提升团队整体能力
在数字化时代,企业管理面临新挑战。板栗看板通过可视化管理、数据驱动决策和强化团队协作,帮助企业高效管理资源、优化流程、提升团队合作,成为企业管理者的重要工具。本文探讨其核心价值及应用方法。
|
2月前
|
存储 监控 安全
构建高效的个人知识管理系统:技术与实践
【10月更文挑战第5天】在信息爆炸的时代,个人知识管理变得至关重要。本文将介绍如何利用现代技术手段,尤其是开源工具和云服务,构建一个高效的个人知识管理系统。我们将探索不同的知识组织方法,自动化信息的收集与整理流程,以及确保信息安全的策略。通过实际案例和代码示例,本文旨在为读者提供一套可行的解决方案,帮助他们更好地管理个人知识库,提升学习和工作效率。
|
4月前
|
测试技术 持续交付 UED
|
4月前
|
运维 数据可视化 持续交付
业务需求协作管理
业务需求协作管理
34 1
|
4月前
|
对象存储
就软件研发问题之创建和管理数据流动及其任务的问题如何解决
就软件研发问题之创建和管理数据流动及其任务的问题如何解决
|
6月前
|
人工智能 数据可视化 大数据
项目管理软件:从单一工具到全面解决方案的演进
【6月更文挑战第24天】从单一工具到全面解决方案,项目管理软件伴随企业复杂性增长而进化。初期专注任务分配和进度,现整合云、大数据、AI,提供集成、灵活、可视化及智能的全面解决方案。技术革新如云计算增强实时访问和数据分析,大数据支持决策,AI助力预测和自动化。未来,软件将进一步智能化、集成化,优化项目管理效率和满意度。
|
6月前
|
存储 程序员 Shell
云存储已经成为远程工作协作中不可或缺的一部分
【6月更文挑战第5天】云存储助力远程工作,打破地理限制,提供统一存储平台,实现高效协作。通过创建共享文件夹,团队成员可随时随地访问最新文件,避免版本混乱。例如,使用Google Drive命令行工具上传、管理文件,提高协作效率。此外,云存储还具备版本控制、权限管理等高级功能,确保数据安全。它是远程协作不可或缺的工具,推动更专注、灵活的工作方式。尝试使用云存储,提升你的远程工作效率!
73 1