)数据架构是组织核心数据访问层的方式化。它蕴含流和表,为操作用例和剖析用例提供分歧的数据访问。流提供了低提前的配置,以允许对事情的及时照应,而表提供了更高提前但十分高效的批量查问配置。用户只要选用与其需求最关系的处置头,并将其拔出数据中即可。
构建无头数据架构须要识别在数据剖析平 外部深处曾经展开的上班,并将其向左移动 曾经在下游启动的上班( 数据清算、结构化和形式化)向抢先推送到源系统中。数据消费者可以依赖经过流和表提供的一组规范化数据来允许他们的操作、剖析和一切两边环节。
经过左移方法创立无头数据架构。上方的图表强调了总体思绪。经过将上班左移,清楚降落了下游老本。
与传统的多跳方法相比,左移方法为创立、访问和经常使用数据提供了一种更繁难、更具老本效益的方法。
假设你像绝大少数组织一样,那么或许建设了一些提取-转换-加载(ETL)数据管道、数据湖、数据仓库和/或数据湖。 的数据剖析师须要不同于操作平 软件开发人员所经常使用的专门工具。 这种通用的“左移数据”结构通常被称为多跳数据架构。
奖章架构或许是多跳架构中最盛行的方式。它有三个级别的数据品质,驳回奥运奖牌的色彩(铜、银和金)来示意。铜层作为着陆区,银层作为清算和定义明白的数据层(第二阶段),金层作为业务级聚合数据集(第三阶段)。
进入第一阶段的数据通常是原始的非结构化数据。而后对其启动清算、图式化和规范化,而后写入第二阶段。从这里开局,它可以进一步聚合、分组、非规范化和处置,以在第三阶段中创立特定于业务的数据集,这些数据集将继续为仪表板、报告提供能源,并为人工智能和机器学习模型提供训练数据。
首先,多跳架构的速度很慢, 由于它们通常是经过周期性触发的批处置进程成功的。在下一跳开局之前,数据必定从源传输到铜层。
例如,假设每隔15分钟将数据拉入铜层,那么随后的 也只能每隔15分钟启动一次性,由于数据只能以最慢局部的速度从一个阶段移动到另一个阶段。即使 跳的距离期间缩短到1分钟 中依然须要至少3分钟才干取得这些数据(不包括处置期间)。
其次,多跳架构开支很大,由于每一跳都是数据的另一个正本,这须要处置才干来加载、处置数据,并将其写入下一 阶段。这很快就会累积起来。
第三,多跳架构往往很软弱,由于上班流的不同阶段、源数据库和最终用例通常由不同的人担任。为了防止终止,须要十分强的协调。但在通常中,这往往很难扩
第四,经过让数据剖析师有责任失掉他们自己的数据,最终或许会失掉相似但又不同的数据管道。每个团队都可以构建自己的自定义管道,以防止散布式一切权疑问,但这或许造成相似但不同的管道的蔓延。公司的规模越大,相似但又不同的管道和数据集就越经常出现。找到一切可用的数据集或许会变得很有应战性。
第五个疑问,即相似但不同的数据集。为什么会有多个数据集?应该经常使用哪一个?这个数据集能否还在保养中,或许它是一个僵尸数据集,虽然还在活期更新,但 没有人监视?当依赖本应相反但实践上并不相反的数据集启动关键计算,而这些计算结果又相互矛盾时,疑问就出现了。向客户提供相互矛盾的报告、仪表板或目的会造成信任丢失,在最坏的状况下,还会造成业务损失甚至法律诉讼。
即使处置了一切这些疑问—缩小提前、降落老本、删除重复的管道和数据集以及消弭缺点修停上班,依然没有提供任何操作可以经常使用的程序。它们依然是独立的,在ETL的抢先,由于一切的清算、结构、重构和散发上班只对数据剖析畛域的人真正有用。
左移以成功无头数据架构
构建无头数据架构须要从新思索如何在组织中循环、共享和治理数据——这是一种向左的转变。从下游提取ETL->铜牌层->银牌层,并将其放在数据产品的抢先,更凑近数据源。
“流优先”的方法为数据产品提供了亚秒级的数据新颖度,这与ETL生成的周期性数据集构成了显明对比,这些数据集最多只要几分钟的历史并且过期 。经过左移,可以让公司各部门的数据访问老本更低、更方便、更极速。
经常使用数据产品构建无头数据架构
在无头数据架构中,数据的逻辑顶层是数据产品,你或许曾经经过数据网格方法对它有所了解。 在无头数据架构中,数据产品由流(由Apache Kafka提供允许)和关系表(由Apache Iceberg提供允许)组成。写入流的数据也会智能附加到表中,这样你就可以作为Kafka主题或Iceberg访问数据。
下图显示了从源系统创立的流/表数据产品。首先将数据写入流。而后,可以选用转换流中的数据,最终将其详细化到Iceberg表中。
可以经常使用流(Kafka主题)来允许低提前的业务操作, 订单治理、车辆调度和金融买卖。 同时,也可以将批量查问头拔出到Iceberg表中,以计算更高提前的上班负载, 日常报告、客户剖析和活期
数据产品是一种值得信任的数据集,专门用于与其余团队和服务共享和重用。它是职责、技术和流程的 ,以简化失掉你和你的服务所需的数据。你或许还据说过将数据产品称为可重用数据资产,虽然其实质是相反的——可共享、可重用、规范化和可信任的数据。
数据产品创立逻辑在很大水平上依赖于源系统。例如:
流优先数据产品的优雅之处在于,你只要将其写入流即可。你不用治理散布式事务来同时向流和表写入数据(这很难正确成功,而且速度相对较慢)。相反,你可以经过Kafka Connect或专有的SaaS流到表处置打算(例如Confluent的Tableflow)从流创立一个只能 表。容错和只写一次性可以协助审核数据完整性,无论从流还是从表中读取,都可以失掉相反的结果。
不是非此即彼的。理想上,它是十分模块化和渐进的。你可以有选用地选择哪些负载须要左移,哪些坚持不变。你可以设置一个并行的左移处置打算,对其启动验证,一旦满意,就可以将现有的作业切换到该处置打算上。这个环节大抵如下:
(1)在剖析平台当选用一个罕用的数据集。越罕用的数据集,越适宜左移。简直没有容错余地的业务关键数据(如账单信息)也是左移的理想选用。
(3)创立一个与现有ETL管道并行的源到流上班流。你或许须要经常使用Kafka衔接器(例如CDC)来将数据库数据转换为事情流。或许,你可以选用间接向流生成事情;只要确保编写了完整的数据集,使其与源数据库坚持分歧。
(4)从流中创立一个表。你可以经常使用Kafka Connect来生成 表,或许你可以依托智能化的第三方专有服务来为你提供 表。齐全披露:经常使用Kafka Connect会造成数据的正本被写入 表。在不久的未来,估量希冀看到第三方服务提供扫描Kafka主题作为 表的才干,而无需制造数据的第二份正本。
(5)将表拔出到现有的数据湖中,与银层中的数据放在一同。如今可以验证新的Iceberg
表能否与现有数据集中的数据分歧。一旦满意,就可以将数据剖析作业从旧的批量创立的表中迁徙进来,弃用它, 而后在繁难的时刻将其删除。
其余的无头数据架构留意事项
你可以将Iceberg表拔出任何兼容的剖析端点,而无需复制数据。关于数据流来说,状况也是如此。在这两种状况下,只要选用处置头,并依据须要将其拔出表或流中。
左移还解锁了典型的复制粘贴、多跳和奖章架构所没有的一些弱小配置。你可以从单个逻辑点一同治理流和表的演烃,验证流演变不会破坏
由于上班已从数据剖析空间中转移进去,你可以将数据验证和测试集成到源运行程序部署管道中。这可以协助防止在代码进入消费环境之前出现的破坏,而不是在下游很久之后才检测到它。
最后,由于表是从流派生进去的,因此只要要在一个中央修复它,无论你向流写入什么内容,都会流传到表中。流媒体运行程序将智能接纳纠正的数据,并启动自我纠正。然而,须要识别并从新运转经常使用该表的活期批处置作业。但无论如何,这与在传统的多跳架构中须要做的事情是相反的。
无头数据架构可以在整个组织中解锁史无前例的数据访问,但它从左移开局。
原文题目: How to implement a headless>