与传统商业合同一样,数据合同包含管理一方向另一方交付内容的条款和条件。在数据合同中,这可能包括数据质量规则、架构定义、服务级别协议、数据生产者信息和服务器信息等组成部分。
然而,数据合同的真正不同之处在于,它们是用代码编写的,因此,这些协议可通过自动化而非手动流程来执行。
业内将数据合同对数据工程的影响类比为应用程序编程接口 (API) 对软件开发的影响。API 定义的规则使软件应用程序能够相互通信,而数据合同定义的规则则使数据消费者能够成功整合和使用各类来源的数据。
正如 API 有效提升了生产力并加快软件开发的创新步伐,成功推行数据合同也能为企业和数据用户带来诸多益处。
其中最关键的作用是防范数据管道故障。如果没有数据合同,上游数据生产环节发生变更,可能会给下游用户带来灾难性后果。数据合同可以确保此类重大变更在影响数据消费者之前,就被及时发现并处理。
数据合同的其他优势包括优化数据质量、完善数据治理并提升可扩展性。数据合同还为数据产品和数据网格架构提供基础支撑,助力业务用户在整个组织内挖掘数据并释放数据价值。
目前有多种工具和平台可协助企业制定并执行数据合同,包括数据质量工具和数据治理平台。
脆弱易损的数据管道是许多数据工程师面临的一大难题。一项研究发现,超过半数的工程师每月至少会遇到一次甚至多次数据系统管道故障。1
正如一位数据架构师所言,很多数据管道都只是靠临时方式勉强维系。一旦出现故障,就会严重影响决策工作与人工智能 (AI) 相关项目的推进。
数据合同可以直击管道故障的常见诱因,也就是数据生产者和数据消费者之间的数据不一致,以此规避上述问题。当数据生产者提供的新数据无法满足消费者预期时,就会出现数据不一致的问题。消费者往往需要依靠特定数据类型、架构及其他约束来匹配自身用例。
IBM 终身冠军 Jean-Georges Perrin 表示,下游使用者难免会“对所获取数据的稳定性心存疑虑”。“想要建立信任,数据生产者或数据所有者必须作出承诺并予以兑现。”Perrin 写道。
无论是针对数据质量、数据校验、访问权限还是数据架构的相关承诺,都可通过推行数据合同来落地保障。当数据生产者和数据消费者就数据要求达成共识并明确界定规则后,就能在数据质量问题影响下游工作流之前提前规避。
数据合同在 AI 工作流中发挥着愈发重要的作用,因为保障模型训练与数据分析所用数据的合规性,是实现精准预测的关键。
“系统中的数据质量得到提升,也就不会出现劣币循环的问题。”Perrin 说道。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
由于数据生产者与消费者之间的数据不一致是催生数据合同的主要原因,因此深入了解这两类群体及其在数据生态系统中的职责十分有必要。
数据消费者需要依靠数据生产者提供数据,支撑下游业务开展。但这种依存关系,本身并不能让双方建立稳固的协作关系。这是因为数据生产者通常会按照适配自身应用程序的格式存储数据,并不会主动考虑下游使用者的数据管理需求。
因此,软件工程师在更新应用程序和代码时,往往不会考量这些变更会对最终交付给数据消费者的数据造成何种影响。
当这类变更毫无预兆时,即使是从 1,000 列的数据表中删除一列这类微小调整,也会给数据消费者带来混乱。这类所谓的重大变更会中断数据流,影响数据集的兼容性。
最终会出现脚本运行异常、仪表板数据失效或失真等问题,工作人员与 AI 智能体也无法获取支撑核心决策和业务运转的可靠数据。
通过在数据生产者与数据消费者之间订立明确协议,数据合同能够打破双方之间的信息孤岛,规避数据不一致问题,保障数据管道稳定运行。
正如业内从业者所言,数据合同将隐性约定转化为显性保障,详细界定了数据生产者需要向数据消费者交付的数据内容,以及对应的交付标准。数据合同的关键要素包括:
基础信息部分(也称作背景信息)涵盖合同的各项基本内容。具体包含唯一标识符、合同版本(例如 1.0 或 2.0)、合同状态(例如“有效”或“已停用”)、数据使用目标以及数据使用相关法律约束。
模式定义详细说明了数据的组织形式。它针对各类数据类型,明确对象(表、文档等数据结构)、对象属性(如表中的列)以及时间戳、字符串长度限制等元数据。模式注册表是用于统一管理各类模式的集中存储库,可为数据合同的落地提供支撑。
数据合约定义了相关规则与参数,以保障数据质量。合同可针对多项数据质量指标作出规范,包括准确性、完整性、有效性以及空值数量。此外,自定义规则可配合数据质量工具完成质量检测工作。
数据合同可以为在数据合同方面需要帮助的数据消费者列出支持来源,例如 Slack 频道、Teams 频道、Discord 聊天、电子邮件分发列表和网站。
数据合同的定价部分列出了数据消费者使用数据产品所需支付的费用。它可以包括所使用的货币以及可用于计算成本的计量单位(如兆字节或吉字节)。
在一些较早的数据合同模板中,团队部分被称为“利益相关者”,数据合同的团队部分包含了拥有数据的团队成员及其与数据合同的关系信息。
数据合同的角色部分列出了为数据消费者提供不同类型的数据集访问权限(例如读取或写入权限)的角色。
数据合同包括服务级别协议的描述,该协议定义了提供商应达到的性能水平。例如,SLA 章节可能会列出数据可用时间与保留时长的相关保证。
除了核心数据合同价值外,利益相关者还可以为数据合同添加自定义属性以满足其具体需求。热门数据合同模板的最新版本还能记录属性之间的关系、引用外部合同以及访问预定义数据质量规则库以进行一致的质量检查。
数据合同与其他合同的显着区别在于,它们并非以通俗易懂的语言编写。相反,它们通常用 YAML 或 JSON 编写,这些语言是人类和机器可读的数据序列化语言。(对于不熟悉编码序列化语言的用户,可以在 Excel 中编写数据合同,并通过开源工具 Data Contract CLI 转换为 YAML 文件。)
使用序列化语言编写数据合同的优势在于,它可以用自动化取代繁琐的手动流程。机器可读的数据合同可以整合到数据平台和执行工具中。组织可以部署这些解决方案来测试数据集是否遵守数据合同规则,以便在问题导致管道故障之前解决问题。
许多数据合同基于开放数据合同标准版 (ODCS)。顾名思义,ODCS 是一个用于标准化数据合同的开源框架。该标准由采用 Apache 2.0 许可的 Linux Foundation AI & Data 沙盒项目 Bitol 定义,并可在 GitHub 上获取。
该倡议的支持者表示,它有助于促进创新,因为它允许组织实施支持其数据架构的数据合同,而无需承担供应商锁定的风险。
数据合同可以解决数据管道中的多个痛点,为组织解锁数据资产的价值。数据合同的优势包括:
数据合同可描绘互连任务之间的关系或依赖关系。通过澄清此类依赖关系,数据生产者可以避免进行重大更改。
数据合同受版本控制,这意味着创建合同的新版本以反映重要变更。这可以帮助生产者以“安全”的方式引入修改,例如架构变更,让消费者有时间适应这些变化,从而降低管道突然中断的风险。
数据合同的签订过程有利于数据生产者和消费者之间的沟通与达成共识。合同一旦制定完成,即可作为继续合作的基础,因为版本控制可以适应不断变化的数据和需求。
数据合同描述了利益相关者与数据之间的关系,包括谁拥有数据、哪些角色可以访问数据以及用户如何获得支持。合同有助于明确谁负责什么,以进一步落实问责制。
通过支持数据治理和协作,数据合同可以帮助组织和业务部门成功共享数据,即使数据量以前所未有的速度增长。
在围绕数据产品和数据网格的讨论中,经常会提到数据合同。这是有充分理由的,数据合同在支持这两种技术中发挥着关键作用。
我们先从数据产品开始。一个数据产品是一个可重复使用的独立包,它将数据、元数据、语义和模板结合在一起,以支持不同的业务用例。数据合同可以作为数据产品的“质量控制”,确保其中的数据一致、可靠且格式正确。
Perrin 用家族式术语描述数据产品和数据合同之间的关系:“数据合同和数据产品就像密不可分的表兄弟,始终协同工作,始终保持一致,始终确保顺利运行。”
数据合同对数据产品的重要意义,也使得它们对数据网格的功能至关重要。数据网格是一种去中心化的数据架构,按业务领域组织数据,例如市场营销、销售或客户服务。
在数据网格架构中,域数据生产者使用数据产品,使业务用户能够从组织的不同部分查找并使用数据。因此,当数据合同保障了数据产品的性能时,它们就支持了整个数据网格的成功。
在《数据合同》一书中,数据专家 Chad Sanderson、Mark Freeman 和 B.E. Schmidt 描述了以下数据合同的运作流程。3
通过简化的用户体验,将原始数据转化为 AI 就绪数据,支持整合任意类型的数据。
利用 IBM 数据集成解决方案,创建弹性、高性能和成本优化的数据管道,以满足您的生成式 AI 计划、实时分析、仓库现代化和运营需求。
通过制定适当的战略、数据、安全和治理措施,成功实现 AI 的规模化应用。
1 Modern infrastructure helps data engineers deliver maximum value,Fivetran,2021 年 3 月 11 日。
2,3 Data Contracts: Developing Production-Grade Pipelines at Scale,O’Reilly Media,2025 年 11 月。