数据合约在数据管道中的作用
数据合约作用于数据管道
什么是数据契约?
数据契约是定义系统内数据应如何结构化和处理的协议或一组规则。它作为组织内部不同部分或不同软件组件之间的重要沟通工具。它涉及不同组织之间或有时是单个公司内部的管理和预期数据使用。
数据契约的主要目的是确保数据在系统的不同版本或组件之间保持一致和兼容。数据契约包括以下内容:
- 服务条款:描述数据可用于开发、测试或部署的方式。
- 服务级别协议(SLA):SLA描述数据传递的质量,可能包括正常运行时间、错误率、可用性等。
类似于商业合同规定供应商与产品消费者之间的责任,数据契约建立并确保数据产品的质量、可用性和可靠性。
数据契约中应包含哪些元数据?
- 模式:模式提供有关数据处理和分析的有用信息。它是对数据集的列施加的规则和约束。数据源会发生变化,生产者必须确保能够检测和响应模式的变化。消费者应能够使用旧模式处理数据。
- 语义:语义捕捉每个业务领域的规则。它们包括业务在其生命周期内如何转换到不同阶段、彼此之间的关系等方面。与模式类似,语义也可以随时间而演变。
- 服务级别协议(SLA):SLA指定数据产品中数据的可用性和新鲜度。它们帮助数据从业者有效设计数据消费流程。SLA包括诸如最大预期延迟、新数据预计何时进入数据产品以及故障之间的平均时间和恢复时间等承诺。
数据契约的重要性是什么?
数据契约的主要优点在于确保不同数据模式的各个版本之间的兼容性和一致性。具体而言,数据契约提供了以下几个优势:
- 兼容性保证:当建立数据契约来定义数据结构和规则时,它保证了不同组件或系统版本生产和消费的数据保持兼容。这种主动的方法在模式演变过程中最小化了数据处理复杂性。
- 一致性强制执行:数据契约作为数据表示中的一致性执行者。它们迫使所有生产者和消费者遵守相同的模式,促进数据的正确性和系统的可靠性。
- 版本控制:数据契约可以进行版本控制和跟踪。这种能力可以有序地管理数据模式的变化,对于无缝导航模式演变非常宝贵。
- 有效沟通:数据契约是不同组织团队或组件之间的有效沟通工具。它们建立了对数据结构和格式的共同理解,促进协作。
- 错误预防:明确定义的数据契约可以防止错误,特别是在模式不匹配或意外变化的情况下。它有助于早期发现与模式相关的问题。
实施数据契约的实用方法
在此数据处理流程中,模式更改在Git存储库中进行管理,并应用于产生数据的应用程序,以确保数据结构的一致性。这些应用程序将其数据发送到Kafka主题,将原始数据与变更数据捕获(CDC)流分隔开。Flink应用程序使用模式注册表模式对原始数据流中的数据进行验证。任何不准确的数据都将被发送到Dead Letter主题,而有效的数据将被发送到验证过的数据主题。实时应用程序可以直接从这些验证过的主题访问数据。
此外,验证过的数据主题的数据会进行额外的检查,包括验证与特定服务级别协议(SLA)的一致性。随后,这些数据将被发送到数据仓库进行深入分析。如果违反任何SLA,消费者和生产者将收到警报。最后,无效的Flink应用程序会审查实时数据,以确定潜在的修复方法,并使用恢复Flink应用程序进行修复。这个全面的流程确保了整个过程中数据的一致性、验证和可靠性,促进了高效的数据分析和监控。
参考资料
- https://towardsdatascience.com/data-contracts-ensure-robustness-in-your-data-mesh-architecture-69a3c38f07db
- https://www.montecarlodata.com/blog-data-contracts-explained/
- https://atlan.com/data-contracts/#what-is-inside-a-data-contract
- https://youtu.be/ZIJB8cs-cJU?si=zzMnf-aE-rO4Wcx7
- https://twitter.com/Aurimas_Gr/status/1693908146677330288