1背景介绍
在日常数据研发工作中,我们会遇到如下常见场景问题,其一为:数据测试人员要对产出多表的一致性进行检测,其二为:数据对账体系,如资金流和订单数据要保持一致,其三为:数据模型迁移过程中,要对迁移前后的数据进行对比,其四为:数据存储在不同库中,例如A存储到ODPS,B存储到ADB,其中AB库中数据必须要保持一致。
如上述4种常见问题,我们需要一套能界面交互(勾选或低代码交互)、离线核对、实时核对、通知告警等全流程闭环的解决方案。
如果没有上述完整的解决方案和平台,我们需要手动写SQL去对比,每个人对于一致性的指标会有所不同,而且也没有评估标准,更为难的是如果存在不同源之间的对比,涉及到代码开发,无疑人力成本会更高。
1.1业务价值
一:提高数据对比的效率,并节省人力成本,验证数据(核对数据),要实现低代码交互(或无代码),特别是不同源数据或实时数据进行比对。
二:统一数据比对的标准,沉淀专家经验,对所核对的出来的指标进行统一度量,并可作为一致性分数提供至质量分建设中。
2离线数据核对设计思路
离线数据核对主要是分为两种类型,第一种为量级对比,例如表行数比对,某字段空值量级比对,第二种为全文比对,但是必须要有数据主键(无论是同一个数据源,或是不同的数据源)。目前也有开源代码实现:参考地址
3实时数据核对设计思路
假设有用户系统U和订单系统O,其中用户系统的表为A,订单系统的表为B,并且两张表存在关联关系。
并且可能存在如下情况:
- A表数据到达后,B表数据在一段时间内更新为正确的值;
- A表数据到达后,B表数据在一段时间内更新为错误的值;
- A表数据到达后,B表数据一直未更新;
- A表数据到达后,B表数据晚于预计时间到达,延迟更新为正确的值;
- A表数据到达后,B表数据晚于预计时间到达,延迟更新为错误的值;
- 为了检查出以上2~5种异常数据,我们需要进行实时核对。
3.1核心原理
通过同步数据库到OLAP库中(如ADB For Mysql),不影响线上业务,类似ODPS的跨库JOIN。同时,限定查询数据库的时间范围,提升查询性能以在规定时间内输出结果。
3.2具体方案
因实时核对有时效性要求,并且通常一个表更新后需要一段时间另一个表才会更新,故需要进行定义窗口时间、滑动时间及时延范围。
3.3举例说明
其中主表数据为每次取10分钟的窗口数据,滑动也为10分钟,而对比表数据则是在主表的窗口时间10分钟+5分钟(时延范围)
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net