一张图解释数据合同如何实施
数据管道中的数据合约是什么?如何实施?
最简单的数据合同是数据生产者和数据消费者之间就所生产的数据应是什么样子、应满足什么 SLA 以及其语义达成的协议。
数据合约是一种含有以下元数据结构:
- 生产数据的模式(schema数据结构)。
- 模式schema版本:数据源在不断发展,生产者必须确保能够检测到模式变化并做出反应。消费者应能使用旧模式处理数据。
- SLA 元数据 - 质量:是否用于生产?数据可延迟多久到达?在给定的时间段内,某些字段可能会有多少缺失值?
- 语义 : 特定数据点代表什么实体。语义与模式类似,可随时间演变。
- Lineage : 数据所有者、目标消费者等数据上下文。
数据合同实施的示例实现,如下图:
注意图中1、2、3 ...符号编号,对应符号的解释如下
- 模式(schema、数据结构、数据模式)更改在 git 仓库中实施,一旦获得批准,就会推送到生成数据的应用程序和中央模式注册中心。
- 应用程序将生成的数据推送到 Kafka 主题。用于 CDC 数据流和直接排放的独立原始数据主题。
- Flink 应用程序从原始数据流中获取数据,并根据模式注册表中的模式对其进行验证。
- 不符合合约的数据被推送到死信主题。
- 符合合约的数据被推送到验证数据主题。
- 需要实时数据的应用程序直接从已验证数据主题或其衍生物中获取数据。
- 已验证数据主题中的数据会被推送到对象存储中进行额外验证。
- 按照计划,对象存储中的数据将根据额外的 SLA 进行验证,并被推送到数据仓库进行转换和建模,以用于分析目的。
- 任何违反 SLA 的行为都会向消费者和生产者发出警报。
- 实时失效的数据由 Flink 应用程序消耗,该应用程序会对失效模式发出警报。Flink 应用程序可提供恢复功能,其中包含如何修复失效数据的逻辑。