译者 | 朱先忠
审校 | 孙淑娟
当前,数据领域的挑战不再是海量数据的处理能力。现代流媒体平台的高性能以及新一代数据存储允许将计算与存储层分离,使得我们可以通过非常低的操作工作量来提高系统的可伸缩性。
如果我们还记得著名的大数据“五V”(容量、价值、多样性、速度和准确性,即“Volume, Value, Variety, Velocity, and Veracity”)的话,那么,我们今天应该更清醒地认识到,准确性和价值对于今天的大多数公司来说仍然是一个挑战。
数据管道是解决这一挑战的基础。大规模设计和构建数据管道不仅可以提高系统的开发速度,而且可以让整个团队都可以参与维护和理解。
几年前,大数据领域面临的技术挑战主要表现在以下领域:
IT团队在开始开发第一条数据管道之前,往往耗费数年时间构建支持这些功能的数据平台。之后,所有的努力都集中于在短时间内接收大量的数据。但这一切都发生在没有关注真实商业价值的情况下。此外,操作这些数据平台往往需要付出巨大的努力。
现在,随着云技术方案的应用——开源社区、最新一代云软件和新的数据架构模式的出现等,实现上述这些功能不再成为一种挑战。
当前,已经存在多种方法可以提供高性能数据存储库,以便以低操作工作量实时管理大量数据。
n 数据仓库:新一代数据仓库将存储层与计算层分离,并提供基于不同技术的新的可扩展功能,如NoSQL、数据湖或具有AI功能的关系数据仓库。
在这种情况下,成功的关键是为企业的应用场景选择最佳方案的问题。
当前计算层能够提供以下功能,以支持执行大量并发管道:
开源社区与新的云软件供应商一起,提供了各种数据适配器来快速提取和加载数据。这简化了不同软件组件(如数据存储库、ERP和许多其他组件)之间的集成。
大数据公司当前面临的关键挑战是如何以更全面和可靠的方式提供数据。数据处理是复杂性的主要因素之一。作为数据或业务分析师,除了在正确的时间获得信息外,我们还需要了解所分析数据的元数据,以便做出决策。
在大型企业中,存在很多数据,但也有很多部门有时使用相似但不同的数据。例如,零售公司有两种类型的库存:
通常,由于递送延迟或其他人为错误等多方面的原因,这两种数值并不匹配。但是,库存数据是计算例如销售、销售预测或库存补充等指标的主要依据。根据理论库存购买新货物的决定可能会给公司造成数千美元的损失,并导致一种不可持续的状况。但事实情况是,我们只能想象这些决定对其他部门(例如库存健康度)的影响。
当分析师做出决策时,他们需要知道他们正在使用哪些数据来评估风险并做出有意识的选择。接下来,我们讨论的是如何将数据转换为业务价值的问题。
当我们坐在办公室想象数据(或者阅读高级文章)时,我们常常想到的只是一个其中包含几个数据域的非常简单的世界:

但现实情况往往远比上面的情形更为复杂:

在大数据场景中,有数千条不同级别的数据管道在数据域或数据存储库之间不断摄取和整合数据。数据管道是提供成功数据平台的最重要组成部分之一;但是,即使在今天,我们在大规模构建数据管道方面也面临着与多年前相同的挑战,这体现在:

数据管道的目标主要集中在以下四个领域:
规则变化很快,公司必须快速适应。数据和信息比以往任何时候都更加重要。

为了快速提供价值,我们需要一个由数据科学家、数据工程师、分析师和公司股东组成的异构团队共同工作。他们需要使用一种类似的语言才能变得更为敏捷。当我们所有的数据管道都使用Spark或Kafka Streams等技术构建时,技术人员和非技术人员之间的敏捷通信就太复杂了。
从数据到信息的旅程始于数据管道。
元数据对于将数据转换为业务信息非常重要。它提供了每个人都可以访问的摘要沿袭,提高了数据的可见性、理解力和信心。我们必须动态提供这些信息,而不是通过永不改变的静态文档或永久持续的复杂检查过程。
数据管道的可观测性是一个重大挑战。通常,可观察性面向技术团队,但我们需要提高所有利益相关者(业务分析师、数据分析师、数据科学家等)的可视性。
我们需要改进我们处理数据的方式,并开始应用传统软件开发的最佳实践。从数据到作为代码的数据,我们可以借助版本控制、持续集成或测试等方法实现。
当我们研究新的数据技术趋势时,我们可以观察到存在于开源社区或商业软件初创公司(如Airbyte、Meltano、dbt labs、DataHub或OpenLineage)中的一些积极举措。
上面这些应用案例显示了数据处理领域如何演变为:

上述功能是使我们能够大规模构建数据管道并提供业务价值的关键。
理解是将数据转化为信息的第一步。转换层在这个过程中起着关键作用。通常,转换层是瓶颈,因为数据工程师和业务分析师的语言不同,所以协作很复杂。然而,诸如dbt之类的新工具正试图改进这一点。
dbt(数据构建工具,即“Data Build Tool”)是一种用于转换层的开源CLI工具,它支持业务数据分析师和工程师在数据生命周期中使用通用语言以及软件开发最佳实践(如版本控制、连续集成/部署和连续测试)进行协作。

SQL是公司的通用语言,允许所有利益相关者在整个数据生命周期中参与讨论。SQL使数据和业务分析师能够使用版本控制工具通过SQL语句协作编写或修改转换。
数据世界发生了很大变化。目前,大多数数据存储库都具有良好的性能和可扩展性。而且,新的场景改变了转换过程的规则。在许多情况下,数据存储库比外部流程更适合工作。dbt执行ELT过程的转换,利用新数据存储库的功能并在数据仓库中运行数据转换查询。
dbt允许在Git存储库中以代码的形式管理数据转换,并应用持续集成最佳实践。它提供了测试功能,包括基于SQL查询的单元测试模块,或使用宏对其进行扩展,以增加更复杂场景中的覆盖率。
dbt允许我们在每次运行数据转换时动态生成数据沿袭和元数据。如今存在许多成熟的平台(例如阿里云的DataHub或Datakin的OpenLineage)能够与企业的业务进行集成,而且这些平台都提供了丰富的企业可见性支持。

近年来,很多大数据公司在提高数据处理性能和摄取能力方面都投入了大量精力,但质量和理解仍然是导致决策艰难的问题领域。如果我们不理解大量数据,或者数据质量很差,那么我们很快就会收到大量无关的数据。然而,为了提供增加业务价值的信息,必须有一层可扩展、可维护和可理解的数据管道。
请牢记:不做决定比根据不准确的数据做决定更好——尤其是当你没有意识到数据是错误的时候。
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。早期专注各种微软技术(编著成ASP.NET AJX、Cocos 2d-X相关三本技术图书),近十多年投身于开源世界(熟悉流行全栈Web开发技术),了解基于OneNet/AliOS+Arduino/ESP32/树莓派等物联网开发技术与Scala+Hadoop+Spark+Flink等大数据开发技术。
原文标题:Challenges to Designing Data Pipelines at Scale,作者:Miguel Garcia
