如何构建一个5层数据堆栈
构建5层数据堆栈的方法
快速启动数据平台并不复杂。以下是驱动数据产品规模化采用的五个必备层级。
就像豆泥和食人魔一样,层级是现代数据堆栈的构建模块。
它强大的工具组件的选择相结合,创建了一个单一的同步和可扩展的数据平台,其中每个层级都扮演着数据流程的独特功能。
然而,与食人魔不同,云数据平台并非神话故事。为了增强和提升它,几乎每天都会创建新的工具和集成。
因此,随着集成的无限扩展和为数据运动的每个功能和功能添加新层级的机会,问题出现了——你该从哪里开始?或者换句话说,如何提供一个为利益相关者提供真正价值的数据平台,而不是构建一个过于复杂难以管理或过于昂贵难以证明其合理性的平台?
- 用Python的NetworkX库绘制Billy Corgan的网络图:分析和映射社交关系 – 第4部分
- 神经网络模型背后的艺术家:人工智能对创作者经济的影响
- 如何通过提示工程改善ChatGPT生成的代码
对于首次构建云原生平台的小型数据团队和首次从本地转移到云端的团队来说,倾向于那些会对业务结果产生最直接影响的层级至关重要。
在本文中,我们将为您介绍五层数据堆栈——一个平台开发模型,由五个关键工具组成,不仅能够最大限度地产生影响,还能让您随着组织需求的增长而发展。这些工具包括:
- 云存储和计算
- 数据转换
- 商业智能
- 数据可观察性
- 以及编排
我们不会再提到食人魔或豆泥。
让我们深入了解它。(内容,而不是豆泥。好吧,这真的是最后一次)。
云存储和计算
无论您是堆叠数据工具还是煎饼,您总是从下而上构建。像任何良好的堆栈一样,适当的基础对于确保数据平台的结构和功能完整性至关重要。
在为利益相关者建模数据之前,您需要一个收集和存储数据的地方。您的堆栈的第一层通常属于以下三个类别之一:像Snowflake这样处理主要结构化数据的数据仓库解决方案;专注于较大量的非结构化数据的数据湖;以及像Databricks的Lakehouse这样结合了两者元素的混合解决方案。
然而,这不仅仅是您存储数据的地方,它还具有激活数据的能力。在云数据堆栈中,您的存储解决方案是平台其他层级的计算能力的主要来源。(请阅读我的同事Shane关于何时合并或分离存储和计算的更多信息)。
现在,我可以讨论仓库、湖泊、湖屋和它们之间的所有优点,但那并不是真正重要的。重要的是选择一个满足当前和未来平台需求的解决方案,同时资源成本对财务团队来说是可以接受的。它还将决定您将来能够连接哪些工具和解决方案,以调整您的数据堆栈以适应新的用例。
您需要哪种特定的存储和计算解决方案完全取决于您的业务需求和用例,但我们的建议是选择一些常见的解决方案,如Snowflake、Databricks、BigQuery等,它们得到了良好的支持、良好的集成和易于扩展。
开源始终是一个诱人的解决方案,但除非您已经达到实际需要它的规模水平,否则它可能会在存储和计算层面上带来一些重大挑战。相信我们的话,从一开始选择一个受管理的存储和计算解决方案将为您节省很多麻烦,而且很可能避免进行痛苦的迁移。
数据转换
好吧,您的数据需要存储在云中。很合理。您的数据平台还需要什么?让我们来看看五层数据堆栈的第二层——转换。
当数据首次被摄取时,它以各种有趣的形状和大小出现。不同的格式,不同的结构,不同的值。简单来说,数据转换指的是将所有这些数据从各种不同的格式转换为一致且有用于建模的形式的过程。
传统上,转换是一个手动的过程,需要数据工程师在命令行界面中手动编写每个管道。
然而,最近云转换工具开始使数据建模过程更加民主化。为了使数据管道对从业人员更加易于访问,自动化数据管道工具如dbt Labs、Preql和Dataform允许用户在不编写任何代码的情况下创建有效的模型。
像dbt这样的工具依赖于所谓的“模块化SQL”来构建由常见的、预先编写的和优化的SQL代码块组成的管道。
当你开始你的云数据之旅时,你会很快发现模型数据和为数据消费者提供价值的新方法。你将从财务和市场部门获得新的仪表板请求。你会发现需要将新的数据源引入到现有模型中。机会将迅速而猛烈地到来。
像数据堆栈的许多层一样,编写自己的转换在小规模上是可行的。然而,随着规模的扩大,手动编写转换将很快成为数据平台成功的瓶颈。投资于现成的操作工具往往是保持竞争力并继续在各个领域提供新价值的必要手段。
但是,不仅编写转换变得繁琐。即使你能编写足够的转换来覆盖你的扩展用例,如果这些转换出现问题会怎么样呢?修复一个损坏的模型可能没什么大不了的,但是修复100个就是一个梦想(显然是打趣)。
提高扩展组织的投资回报率
像dbt这样的转换工具使得为扩大的工程和从业团队创建和管理复杂模型变得更快速和可靠。与一般仅限于数据工程师的手动SQL编码不同,dbt的模块化SQL使任何熟悉SQL的人都能够创建自己的数据管道。这意味着对于繁忙团队来说更快的投资回报时间,减少工程资源消耗,并在某些情况下减少对推动平台发展所需的专业知识的需求。
灵活性以尝试转换顺序
自动化的云转换层还允许在管道的不同阶段进行数据转换,为平台的演进提供ETL、ELT等各种实验的灵活性。
启用自助服务能力
最后,一个操作化的转换工具将为未来完全自助服务的架构铺平道路——如果您选择这样做的话。
商业智能(BI)
如果转换是第二层,那么商业智能必须是第三层。
在数据平台工具的背景下,商业智能指的是我们向最终用户呈现的分析能力,以满足特定的用例。虽然我们的数据可能为某些外部产品提供数据,但商业智能功能是大多数团队的主要数据产品。
虽然像Looker、Tableau和各种开源工具这样的商业智能工具在复杂性、易用性和功能集方面可能差异很大,但这些工具共同的特点是能够通过可视化帮助数据消费者发现洞察力。
这个很好理解,因为在你的堆栈中,其他一切都是手段,而商业智能通常是最终目标。
商业智能通常是数据堆栈的可消费产品,对于任何云数据平台来说,它都是一个重要的价值驱动因素。随着公司对创建和使用数据的需求增长,快速和轻松地访问数据的需求也会随之增长。
商业智能工具是使利益相关者从数据平台中提取价值的方式。如果没有一种激活和使用数据的方法,就不需要云数据平台——无论它有多少层。
数据可观察性
平均而言,数据工程团队每周大约花费两天的时间处理糟糕的数据。事实上,根据Gartner最近的一项调查,糟糕的数据每年给组织带来平均1290万美元的损失。为了减轻所有这些财务风险并保护您平台的完整性,您需要第四层:数据可观察性。
在数据可观性出现之前,发现数据质量问题最常见的方式之一是通过手动的SQL测试。开源的数据测试工具如Great Expectations和dbt使得数据工程师能够验证他们对数据的假设,并编写逻辑以防止问题传播到下游。
数据可观性平台使用机器学习而不是手动编码,自动生成关于产线上所有生产表的新鲜度、容量、模式和空值率等质量检查。除了全面的质量覆盖,一个好的数据可观性解决方案还将生成表级和列级血缘关系,帮助团队快速确定断点位置和根据上下游依赖关系受到的影响。
您的数据平台的价值——以及由此衍生的产品——与提供给其的数据质量密切相关。垃圾进,垃圾出。(如果您的数据摄取作业有问题,那就什么都出不来了。)要拥有可靠、可操作和有用的数据产品,底层数据必须是可信的。如果您不能信任数据,就不能信任数据产品。
不幸的是,随着数据的增长,您的数据质量问题也会随之增长。平台越复杂,摄取的数据源越多,支持的团队越多,您可能遇到的质量事件就越多。随着团队日益利用数据来驱动AI模型和ML用例,确保数据的信任和可靠性的需求也呈指数级增长。
虽然数据测试可以提供一定的质量覆盖,但其功能仅限于已知的问题和特定的表格。并且由于每个手动测试需要手工编码,可扩展性只取决于您可用的工程资源。另一方面,数据可观性提供了自动的即插即用覆盖,可以在每个表格上自动触发警报,以便在影响下游消费者之前通知任何数据质量事件 —— 无论其是否为已知事件。随着您的平台和数据的扩展,您的质量覆盖范围也会相应扩展。
此外,数据可观性还提供了端到端的血缘关系,追溯到BI层,这使得实际上可以找到质量事件的根本原因并解决它们。这可以为您的数据团队节省数小时的时间。虽然手动测试可能能够发现一部分质量事件,但对于帮助您解决这些事件来说是无用的。当您意识到数据团队的解决时间每年几乎翻倍增加时,这更加令人担忧。
与其它测试数据的反应性不同,数据可观性通过提供对已知和未知问题的实时记录以及管道血缘关系的主动可见性,为您的数据平台发展奠定基础,而无需牺牲团队的时间或资源。
数据编排
在进行分析时,数据的操作顺序很重要。正如我们已经看到的,您的数据不仅存在于数据堆栈的存储层中。它从一个来源进行摄取,存储在另一个地方,然后被传送到其他地方进行转换和可视化。
广义上说,数据编排是将多个任务(其中一些可以自动化)配置为一个端到端的过程。它在适当的时间、适当的顺序和适当的速度上触发关键作业的激活,以确保数据在您的平台上以可预测的方式流动,以保持生产标准。(有点像您的数据产品的传送带。)
与存储或转换不同,管道不需要编排才能被视为可用的 —— 至少在基本层面上不需要。然而,一旦数据平台超出一定点,通过内部标准来管理作业将会很快变得难以应付。
当您只提取和处理少量数据时,调度作业只需要很少的努力。但是当您从多个来源和无数用例中提取和处理非常大量的数据时,调度这些作业将需要非常大量的努力 —— 是一种超出人类能力的努力。
数据编排之所以成为5层数据堆栈的功能必需品(即使不是字面上的),是因为手工编码的管道固有地缺乏可扩展性。就像转换和数据质量一样,工程资源成为调度和管理管道的限制原则。
现代数据堆栈的很多优点之一就是它可以使用能够消除工程瓶颈的工具和集成,从而使工程师能够为组织提供新的价值。这些就是自证其值的工具。这也正是编排所做的。
当你的组织不断发展,数据之间自然会形成孤立,因此建立一个协调层将使您的数据团队能够控制数据源并在不同领域提供价值。
一些最受欢迎的数据协调解决方案包括Apache Airflow、Dagster和相对较新的Prefect。
最重要的部分是什么?为影响和规模建设
当然,五不是一个魔法数字。一个很好的数据堆栈可能有六层、七层甚至57层。许多潜在的层次,如治理、合同甚至一些额外的测试,根据组织的阶段和平台的不同,可能非常有用。
然而,当你刚刚开始时,你没有资源、时间,甚至不具备必要的用例来利用现代数据堆栈中可用的各种平台工具。此外,每一层新的引入都会引入新的复杂性、新的挑战和新的成本,需要进行合理的证明。相反,专注于实现数据的潜力和推动公司在短期内的增长。
上述每个层次——存储、转换、商业智能、数据可观测性和协调——都提供了任何完全运行的现代数据堆栈的基本功能,最大限度地发挥影响力,并提供您在未来快速扩展平台、用例和团队所需的即时可扩展性。
如果您是一位刚刚开始数据之旅的数据领导者,并且希望提供一个在不牺牲功能的情况下限制成本的精简数据平台,那么5层数据堆栈就是要打败的。
不同意吗?请通过LinkedIn联系Barr,提出任何意见、问题或豆蘸配方。