一种数据库间的数据一致性比对方法及装置制造方法及图纸

技术编号:37679568 阅读:14 留言:0更新日期:2023-05-26 04:46
本申请提供一种数据库间的数据一致性比对方法及装置,涉及数据库中数据一致性比对领域,包括:基于表数据选一个字段为计算数据块边界的条件列,计算条件列的最大值和最小值;根据最小值计算出数据块边界,将最大值标记为下一次的边界查询最小值,重复计算出整个表的数据块边界;配置启动2n个线程,分别分配n个线程负责处理源表数据和目标表数据,和从条件队列获取数据块边界值;查询源表边界值范围内的所有主键值,根据主键计算相同数据块边界对应的数据中源表与目标表的差异数据。本申请通过算法将数据分解成多个数据块边界,每个数据块边界可以独立进行数据查询比对,多个数据块边界间可以并行比对从而提升性能,提高比对速度,降低比对难度。降低比对难度。降低比对难度。

【技术实现步骤摘要】
一种数据库间的数据一致性比对方法及装置


[0001]本申请涉及数据库中数据一致性比对领域,尤其涉及一种数据库间的数据一致性比对方法。本申请还涉及一种数据库间的数据一致性比对装置。

技术介绍

[0002]随着大数据的发展,很多业务场景中会涉及到数据同步的操作。
[0003]现有技术中,一般需要将主节点数据同步到备节点数据,或者将某一类型数据库表的数据同步到其他类型数据库表中。同步中如果出现数据不一致,通常采用人工方法将差异数据比对出来。
[0004]现有技术中存在的缺陷是,采用人工方法很难将差异数据比对出来,特别是异构数据库间本身不互通,更难于操作。

技术实现思路

[0005]本申请的目的在于克服现有技术中人工方法很难将差异数据比对出来的缺陷,提供一种数据库间的数据一致性比对方法。本申请还涉及一种数据库间的数据一致性比对装置。
[0006]本申请提供的一种数据库间的数据一致性比对方法,包括:
[0007]基于表数据中选取一个字段作为计算数据块边界的条件列,计算出该表所述条件列的最大值和最小值;
[0008]根据所述最小值计算出数据块边界,同时将所述最大值标记为下一次的边界查询最小值,重复并计算出整个表的数据块边界;
[0009]配置启动2n个线程,分别分配n个线程负责处理源表数据和目标表数据,以及从条件队列获取数据块边界值;
[0010]查询所述源表边界值范围内的所有主键值,根据主键计算相同数据块边界对应的数据中源表与目标表的差异数据。
[0011]可选的,所述条件列有索引。
[0012]可选的,所述计算出该表所述条件列的最大值和最小值,包括:
[0013]通过【selectmin(c1),max(c1)fromt】计算出该表所述条件列的最大值和最小值;
[0014]其中,所述c1表示条件列。
[0015]可选的,所述计算出数据块边界,包括:
[0016]通过【selectmax(c1)fromtwherec1>=边界查询最小值orderbyc1limit1000】计算出数据块边界为【max(c1)值

该sql的查询条件列的值】;
[0017]其中,所述c1表示条件列。
[0018]可选的,所述查询所述源表边界值范围内的所有主键值形式如下:
[0019]select主键列1,...,主键列nfromtwhere比较列>=边界最小值and比较
列 <= 边界最大值 order by 比较列 desc。
[0020]可选的,还包括:查询源表该边界的所有主键值,记录到源表块数据容器中。
[0021]可选的,所述记录到源表块数据容器中,包括:
[0022]通过配置控制块数据容器的使用大小。
[0023]可选的,所述计算相同数据块边界对应的数据中源表与目标表的差异数据:包括:
[0024]将相同数据块边界的源表数据块与目标表数据块标记为同一组;
[0025]读取标记为同一组的数据进行双向比较,计算出差异主键数据后落地成文件。
[0026]可选的,所述落地成文件,包括:
[0027]源表存在的主键,如果目标表不存在,将该主键数据记录到文件1中;
[0028]目标表存在的主键,如果源表不存在,将该主键数据记录到文件2中。
[0029]本申请还提供一种数据库间的数据一致性比对装置,包括:
[0030]第一计算模块,基于表数据中选取一个字段作为计算数据块边界的条件列,计算出该表所述条件列的最大值和最小值;
[0031]第二计算模块,根据所述最小值计算出数据块边界,同时将所述最大值标记为下一次的边界查询最小值,重复并计算出整个表的数据块边界;
[0032]配置查询模块,配置启动2n个线程,分别分配n个线程负责处理源表数据和目标表数据,以及从条件队列获取数据块边界值;
[0033]比对模块,查询所述源表边界值范围内的所有主键值,根据主键计算相同数据块边界对应的数据中源表与目标表的差异数据。
[0034]本申请的优点和有益效果:
[0035]本申请提供的一种数据库间的数据一致性比对方法,包括:基于表数据中选取一个字段作为计算数据块边界的条件列,计算出该表所述条件列的最大值和最小值;根据所述最小值计算出数据块边界,同时将所述最大值标记为下一次的边界查询最小值,重复并计算出整个表的数据块边界;配置启动2n个线程,分别分配n个线程负责处理源表数据和目标表数据,以及从条件队列获取数据块边界值;查询所述源表边界值范围内的所有主键值,根据主键计算相同数据块边界对应的数据中源表与目标表的差异数据。本申请通过算法快速将数据分解成多个数据块边界,每个数据块边界可以独立进行数据查询比对,多个数据块边界间可以并行比对从而提升性能,提高比对速度,降低比对难度。
附图说明
[0036]图1是本申请中数据库间的数据一致性比对流程示意图。
[0037]图2是本申请中数据库间的数据一致性比对逻辑示意图。
[0038]图3是本申请中数据库间的数据一致性比对装置示意图。
具体实施方式
[0039]下面结合附图和具体实施例对本申请作进一步说明,以使本领域的技术人员可以更好地理解本申请并能予以实施。
[0040]以下内容均是为了详细说明本申请要保护的技术方案所提供的具体实施过程的示例,但是本申请还可以采用不同于此的描述的其他方式实施,本领域技术人员可以在本
申请构思的指引下,采用不同的技术手段实现本申请,因此本申请不受下面具体实施例的限制。
[0041]本申请提供的一种数据库间的数据一致性比对方法,包括:基于表数据中选取一个字段作为计算数据块边界的条件列,计算出该表所述条件列的最大值和最小值;根据所述最小值计算出数据块边界,同时将所述最大值标记为下一次的边界查询最小值,重复并计算出整个表的数据块边界;配置启动2n个线程,分别分配n个线程负责处理源表数据和目标表数据,以及从条件队列获取数据块边界值;查询所述源表边界值范围内的所有主键值,根据主键计算相同数据块边界对应的数据中源表与目标表的差异数据。本申请通过算法快速将数据分解成多个数据块边界,每个数据块边界可以独立进行数据查询比对,多个数据块边界间可以并行比对从而提升性能,提高比对速度,降低比对难度。
[0042]请参照图1所示,本申请目的是解决传统数据比对方式慢的问题。通过算法快速将数据分解成多个数据块边界,每个数据块(chunk)边界可以独立进行数据查询比对,多个数据块边界间可以并行比对从而提升性能。比对过程中仅进行主键比对,且进行双向比对。
[0043]对于源表存在的主键,如果目标表不存在,将该主键数据记录到文件1中。
[0044]对于目标表存在的主键,如果源表不存在,将该主键数据记录到文件2中。
[0045]本申请涉及的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库间的数据一致性比对方法,其特征在于,包括:基于表数据中选取一个字段作为计算数据块边界的条件列,计算出该表所述条件列的最大值和最小值;根据所述最小值计算出数据块边界,同时将所述最大值标记为下一次的边界查询最小值,重复并计算出整个表的数据块边界;配置启动2n个线程,分别分配n个线程负责处理源表数据和目标表数据,以及从条件队列获取数据块边界值;查询所述源表边界值范围内的所有主键值,根据主键计算相同数据块边界对应的数据中源表与目标表的差异数据。2.根据权利要求1所述数据库间的数据一致性比对方法,其特征在于,所述条件列有索引。3.根据权利要求1所述数据库间的数据一致性比对方法,其特征在于,所述计算出该表所述条件列的最大值和最小值,包括:通过【selectmin(c1),max(c1)fromt】计算出该表所述条件列的最大值和最小值;其中,所述c1表示条件列,所述min(c1)记为初始化的边界查询最小值,max(c1)为下一次的边界查询最小值。4.根据权利要求3所述数据库间的数据一致性比对方法,其特征在于,所述计算出数据块边界,包括:通过【selectmax(c1)fromtwherec1>=边界查询最小值orderbyc1limit1000】计算出数据块边界为【max(c1)值

sql的查询条件列的值】,max(c1)为下一次的边界查询最小值;其中,所述c1表示条件列。5.根据权利要求1所述数据库间的数据一致性比对方法,其特征在于,所述查询所述源表边界值范围内的所有主键值形式如下:select主键列1,...,主键列n...

【专利技术属性】
技术研发人员:卜洪涛刘金鑫
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1