数据对比DataCompare系统设计原理

背景介绍

在日常数据研发工作中,我们会遇到如下常见场景问题,其一为:数据测试人员要对产出多表的一致性进行检测,其二为:数据对账体系,如资金流和订单数据要保持一致,其三为:数据模型迁移过程中,要对迁移前后的数据进行对比,其四为:数据存储在不同库中,例如A存储到ODPS,B存储到ADB,其中AB库中数据必须要保持一致。

如上述4种常见问题,我们需要一套能界面交互(勾选或低代码交互)、离线核对、实时核对、通知告警等全流程闭环的解决方案。

如果没有上述完整的解决方案和平台,我们需要手动写SQL去对比,每个人对于一致性的指标会有所不同,而且也没有评估标准,更为难的是如果存在不同源之间的对比,涉及到代码开发,无疑人力成本会更高。

业务价值

一:提高数据对比的效率,并节省人力成本,验证数据(核对数据),要实现低代码交互(或无代码),特别是不同源数据或实时数据进行比对。

二:统一数据比对的标准,沉淀专家经验,对所核对的出来的指标进行统一度量,并可作为一致性分数提供至质量分建设中。

离线数据核对设计思路

离线数据核对主要是分为两种类型,第一种为量级对比,例如表行数比对,某字段空值量级比对,第二种为全文比对,但是必须要有数据主键(无论是同一个数据源,或是不同的数据源)。目前也有开源代码实现:参考地址

在这里插入图片描述

实时数据核对设计思路

假设有用户系统U和订单系统O,其中用户系统的表为A,订单系统的表为B,并且两张表存在关联关系。

并且可能存在如下情况:

  1. A表数据到达后,B表数据在一段时间内更新为正确的值
  2. A表数据到达后,B表数据在一段时间内更新为错误的值
  3. A表数据到达后,B表数据一直未更新
  4. A表数据到达后,B表数据晚于预计时间到达,延迟更新为正确的值
  5. A表数据到达后,B表数据晚于预计时间到达,延迟更新为错误的值

为了检查出以上2~5种异常数据,我们需要进行实时核对。

核心原理:通过同步数据库到OLAP库中(如ADB For Mysql),不影响线上业务,类似ODPS的跨库JOIN。同时,限定查询数据库的时间范围,提升查询性能以在规定时间内输出结果。

具体方案:因实时核对有时效性要求,并且通常一个表更新后需要一段时间另一个表才会更新,故需要进行定义窗口时间、滑动时间及时延范围。

举例说明:
在这里插入图片描述

其中主表数据为每次取10分钟的窗口数据,滑动也为10分钟,而对比表数据则是在主表的窗口时间10分钟+5分钟(时延范围)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值