1背景介绍

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

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

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

1.1业务价值

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

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

2离线数据核对设计思路

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

数据对比DataCompare系统设计原理_离线

数据对比DataCompare系统设计原理_离线_02

3实时数据核对设计思路

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

并且可能存在如下情况:

  1. A表数据到达后,B表数据在一段时间内更新为正确的值;
  2. A表数据到达后,B表数据在一段时间内更新为错误的值;
  3. A表数据到达后,B表数据一直未更新;
  4. A表数据到达后,B表数据晚于预计时间到达,延迟更新为正确的值;
  5. A表数据到达后,B表数据晚于预计时间到达,延迟更新为错误的值;
  6. 为了检查出以上2~5种异常数据,我们需要进行实时核对。

3.1核心原理

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

3.2具体方案

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

3.3举例说明

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6