首页 > 其他分享 >数据对比DataCompare系统设计原理

数据对比DataCompare系统设计原理

时间:2023-04-21 23:01:56浏览次数:31  
标签:DataCompare 到达 更新 核对 实时 原理 数据 对比

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分钟(时延范围)

标签:DataCompare,到达,更新,核对,实时,原理,数据,对比
From: https://blog.51cto.com/u_15130867/6210918

相关文章

  • RabbitMQ、RocketMQ、Kafka性能对比分析
    MQ的作用MQ的作用是解耦、异步、削峰填谷。未使用MQ的情况MySql并发写大部分情况下维持在600-800之间,并发读1200-1500之间,所以消费端在消费消息的时候需控制在并发小于1000,从而达到限流的效果。使用MQ的情况MQ做个缓冲,消息放到磁盘,几个G或上T都可以存储,消息丢失......
  • 从原理聊JVM(一):染色标记和垃圾回收算法
    作者:京东科技 康志兴1JVM运行时内存划分1.1运行时数据区域•方法区属于共享内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。运行时常量池,属于方法区的一部分,用于存放编译期生成的各种字面量和符号引用。JDK1.8之前,Hotspot虚拟机对方法区......
  • YouTube怎么判断影片内含侵权内容? 解析Content ID内容识别系统的原理及功能
    你有没有发现YouTube上有许多没有声音,或是画面翻转的影片?这些主要都是为了逃避YouTube全自动的内容识别系统(ContentID)监测。YouTube为了保护版权影片,发展出这一套强大的武器:ContentID。到底ContentID是什么样的功能?有什么强大的能力呢? YouTubeContentID功能包含了影......
  • @物空必能 证明了杠杆原理
    @物空必能证明了杠杆原理  。 前几天 我在牛顿吧看到 @物空必能 的一个帖子, 点到为止的讨论了杠杆原理,  我一看,  就知道  @物空必能证明了杠杆原理,   他的思路和我一样  。 以前我在反相吧 发过  《请用中学知识解释......
  • 从原理聊JVM(一):染色标记和垃圾回收算法
    作者:京东科技 康志兴1JVM运行时内存划分1.1运行时数据区域•方法区属于共享内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。运行时常量池,属于方法区的一部分,用于存放编译期生成的各种字面量和符号引用。JDK1.8之前,Hotspot虚拟机对......
  • Python程序运行原理
    Python是一种解释型语言(先编译后解释语言),不需要编译成可执行文件,而是在运行时逐行解释执行,故运行效率相比C/C++较低。Python的运行原理可以简单地概括为以下几个步骤:词法分析和语法分析:Python解释器会将源代码进行词法分析,将代码转换为一系列的Token(即词法单元)。然后,Python......
  • iOS:响应链的原理
    iOS中不是所有的对象都能响应的,只有继承UIResponder的对象才能进行响应处理事件,称之为响应者对象。常见的响应者对象有:UIView,UIViewController,UIApplication响应链的流程:1.当产生某一个触摸事件的时候,这个触摸事件回添加到UIApplication管理的事件队列中。2.UIAppli......
  • iOS:字典存储数据的原理
    注:适用于Java等其他语言的技术原理存储的逻辑1.字典底层有一个数组,靠数组来存储数据;2.将key进行hash算法。得到`hash值`;3.将`hash值`与`数组的长度`进行`位与运算`,得到的结果为数据应该存储的位置;4.找到数组对应的位置,然后设置对应的数据(此处使用链表①进行......
  • 对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!
    文|jxyxiangyu编|小轶对比学习是2021年几大研究热点之一了。如果说预训练模型解决了机器学习对大规模标注数据的需求问题,那么,对比学习可以说是将无监督/自监督学习推广到更一般的应用场景,为苦于标注数据不多的炼丹师们又带来了福音。一般来说,对比学习的重点在于:使同类样本的......
  • 【深度思考】聊聊CGLIB动态代理原理
    1.简介CGLIB的全称是:CodeGenerationLibrary。CGLIB是一个强大的、高性能、高质量的代码生成类库,它可以在运行期扩展Java类与实现Java接口,底层使用的是字节码处理框架ASM。Github地址:https://github.com/cglib/cglib。CGLIB的Maven坐标如下所示:<dependency><groupId>......