一种基于数据库B树快速对比数据的方法和装置制造方法及图纸

技术编号:29459094 阅读:55 留言:0更新日期:2021-07-27 17:27
本发明专利技术公开了一种基于数据库B树快速对比数据的方法和装置,方法包括:启动对比数据库,在对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建表T;对比数据库抽取和遍历第一表结构和第二表结构中每一条数据,在遍历数据时计算每一条数据的数值;对比数据库将最先完成的第一条数据结果直接插入表T中,后期每条计算完成的数据结果通过预设的对比方法与表T中的数据进行对比后,对比数据库操作表T底层B树上对应的叶子节点,依照对比规则对表T进行数据插入、数据删除或数据更新操作;查询表T,得到数据来源数据库中数据对比的结果。

A method and device for quickly comparing data based on database B tree

【技术实现步骤摘要】
一种基于数据库B树快速对比数据的方法和装置
本专利技术属于数据处理
,更具体地,涉及一种基于数据库B树快速对比数据的方法和装置。
技术介绍
随着数据库技术的发展,越来越多的数据库被应用在各行各业,应用会同时使用多个数据库,这些数据库可能是同构的,也可能是异构的,很多情况下应用需要对这些不同数据库上的表数据进行对比,需要一种高效快速的数据库数据对比解决方案。现在传统的对比工具在对比第一表结构和第二表结构带主键的数据时,需要分别对第一表结构和第二表结构数据先排序再查询,对查询出的每条数据做处理,先对主键列进行MD5值计算,然后对剩余非主键列进行MD5值计算,计算完成后,按照主键列MD5值为key,非主键列MD5值为value的形式存储在内存中缓冲区中,第一表结构和第二表结构计算后的数据分开存放,对比时先把缓冲区数据按照key值大小排序,排序完毕后从不同的缓冲区中遍历取数据进行一对一的对比。这种方式在获取第一表结构和第二表结构对比数据时,需要排序查询,按主键的顺序来搜取两个表的数据进行逐一的对比,如果两边数据抽取的速度不一致,还需要考虑速度同步或是数据缓存的机制,整个过程会非常和复杂和低效,可靠性不高。对数据库的性能影响比较大,对比数据量越大查询效率越低,内存中key_value形式的缓冲数据也越多,内存消耗就越大,性能越低。而且内存中不同来源的key_value形式的数据在对比时需要遍历各自数据对比,是一对一对比,不能并发对比,对比速率不高。若采用内存结构来组织MAP映射的对比方式,在构造MAP时会有先后的顺序,需要先提取一边的数据来先构造MAP,完成以后再提取另一边的数据映射对比,这种机制效率低,整个还需要消耗大量的内存,无法适应表中存在大量数据的对比需求。鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于数据库B树快速对比数据的方法和装置,其目的在于通过在对比工具中内置关系数据库,使用数据库底层中的B树解决数据对比问题,从而提高数据库的查询效率,降低内存消耗,由此解决传统对比工具的查询效率低,内存消耗大的技术问题。为实现目的,按照本专利技术的一个方面,提供了一种基于数据库B树对比数据库数据的方法,所述方法包括:启动对比数据库,在所述对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建一张带有聚集主键的表T,所述表T结构根据第一表结构和第二表结构中是否带有主键区分成第一表T和第二表T;对比数据库抽取和遍历第一表结构和第二表结构中每一条数据,在遍历数据时计算每一条数据的数值,计算完成后将数据结果封装成消息发送至对比数据库;对比数据库解析所述封装消息并还原数据结果,将最先完成的第一条数据结果直接插入表T中,后期每条计算完成的数据结果通过预设的对比方法与表T中的数据进行对比后,对比数据库操作表T底层B树上对应的叶子节点,依照对比规则对表T进行数据插入、数据删除或数据更新操作;查询对比数据库中的表T,得到数据来源数据库中第一表结构和第二表结构数据对比的结果。优选地,所述启动对比数据库,在所述对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建一张带有聚集主键的第一表T,若第一表结构和第二表结构均带有主键,所述第一表T的结构为:TABLET(PK_MD5_VALUEchar,L_NONPK_MD5_VALUEchar,R_NONPK_MD5_VALUEchar,L_ROWIDchar,R_ROWIDchar,CLUSTERPRIMARYKEY(PK_MD5_VALUE));其中:PK_MD5_VALUE是用来存放第一表结构或者第二表结构主键列MD5值;L_NONPK_MD5_VALUE是用来存放第一表结构非主键列MD5值;R_NONPK_MD5_VALUE是用来存放第二表结构非主键列MD5值;L_ROWID是用来存放第一表结构数据的ROWID;R_ROWID是用来存放第二表结构数据的ROWID;ROWID是标识对比数据库中记录数据结果物理位置的一个ID。优选地,所述对比数据库抽取和遍历第一表结构和第二表结构中每一条数据,在遍历数据时计算每一条数据的数值,计算完成后将数据结果封装成消息发送至对比数据库,其中,具体计算数据包括:第一表结构和第二表结构每一条数据的主键列MD5值;第一表结构和第二表结构每一条数据的非主键列MD5值;第一表结构和第二表结构每一条数据对应的ROWID值。优选地,所述对比数据库解析所述封装消息并还原数据结果,将最先完成的第一条数据结果直接插入第一表T中,后期每条计算完成的数据结果通过预设的对比方法与第一表T中的数据进行对比后,对比数据库操作第一表T底层B树上对应的叶子节点,依照对比规则对第一表T进行数据插入、数据删除或数据更新操作,其中,具体对比方法包括:若当前数据结果中的主键列MD5值与第一表T中已存在的主键列MD5值不相同,对比数据库把当前数据结果插入至第一表T底层B树中;若当前数据结果中的主键列MD5值与第一表T中已存在的主键列MD5值相同,查询第一表T中已存在的主键列MD5值对应的非主键列MD5值,判断当前数据结果中非主键列MD5值和第一表T中已存在的主键列MD5值对应的非主键列MD5值是否相同,依据预设的判断方法,对比数据库把当前数据结果更新至第一表T底层B树中或从第一表T底层B树中删除当前数据结果。优选地,所述判断当前数据结果中非主键列MD5值和第一表T中已存在的主键列MD5值对应的非主键列MD5值是否相同,依据预设的判断方法,对比数据库把当前数据结果更新至第一表T底层B树中或从第一表T底层B树中删除当前数据结果,其中,具体判断方法包括:若当前数据结果中非主键列MD5值和第一表T中已存在的主键列MD5值对应的非主键列MD5值相同,对比数据库从第一表T底层B树中删除当前数据结果;若当前数据结果中非主键列MD5值和第一表T中已存在的主键列MD5值对应的非主键列MD5值不相同,对比数据库把当前数据结果更新至第一表T底层B树中,同时,在第一表T底层B树中已存在的主键列MD5值对应的叶子节点中插入当前数据结果中非主键列MD5值和ROWID值。优选地,所述启动对比数据库,在所述对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建一张带有聚集主键的第二表T,若第一表结构和第二表结构均不带有主键,所述第二表T的结构为:TABLET(MD5_VALUEchar,L_ROWIDchar,R_ROWIDchar,CLUSTERPRIMARYKEY(MD5_VALUE,L_ROWID,R_ROWID));其中:MD5_VA本文档来自技高网
...

【技术保护点】
1.一种基于数据库B树快速对比数据的方法,其特征在于,所述方法包括:/n启动对比数据库,在所述对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建一张带有聚集主键的表T,所述表T结构根据第一表结构和第二表结构中是否带有主键区分成第一表T和第二表T;/n对比数据库抽取和遍历第一表结构和第二表结构中每一条数据,在遍历数据时计算每一条数据的数值,计算完成后将数据结果封装成消息发送至对比数据库;/n对比数据库解析所述封装消息并还原数据结果,将最先完成的第一条数据结果直接插入表T中,后期每条计算完成的数据结果通过预设的对比方法与表T中的数据进行对比后,对比数据库操作表T底层B树上对应的叶子节点,依照对比规则对表T进行数据插入、数据删除或数据更新操作;/n查询对比数据库中的表T,得到数据来源数据库中第一表结构和第二表结构数据对比的结果。/n

【技术特征摘要】
1.一种基于数据库B树快速对比数据的方法,其特征在于,所述方法包括:
启动对比数据库,在所述对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建一张带有聚集主键的表T,所述表T结构根据第一表结构和第二表结构中是否带有主键区分成第一表T和第二表T;
对比数据库抽取和遍历第一表结构和第二表结构中每一条数据,在遍历数据时计算每一条数据的数值,计算完成后将数据结果封装成消息发送至对比数据库;
对比数据库解析所述封装消息并还原数据结果,将最先完成的第一条数据结果直接插入表T中,后期每条计算完成的数据结果通过预设的对比方法与表T中的数据进行对比后,对比数据库操作表T底层B树上对应的叶子节点,依照对比规则对表T进行数据插入、数据删除或数据更新操作;
查询对比数据库中的表T,得到数据来源数据库中第一表结构和第二表结构数据对比的结果。


2.如权利要求1所述的基于数据库B树快速对比数据的方法,其特征在于,所述启动对比数据库,在所述对比数据库中配置对比数据各来源表之间的对比关系,按照数据来源,将对比表分为第一表结构和第二表结构,在对比数据库中创建一张带有聚集主键的第一表T,若第一表结构和第二表结构均带有主键,所述第一表T的结构为:
TABLET(PK_MD5_VALUEchar,L_NONPK_MD5_VALUEchar,R_NONPK_MD5_VALUEchar,L_ROWIDchar,R_ROWIDchar,CLUSTERPRIMARYKEY(PK_MD5_VALUE));
其中:
PK_MD5_VALUE是用来存放第一表结构或者第二表结构主键列MD5值;
L_NONPK_MD5_VALUE是用来存放第一表结构非主键列MD5值;
R_NONPK_MD5_VALUE是用来存放第二表结构非主键列MD5值;
L_ROWID是用来存放第一表结构数据的ROWID;
R_ROWID是用来存放第二表结构数据的ROWID;
ROWID是标识对比数据库中记录数据结果物理位置的一个ID。


3.如权利要求2所述的基于数据库B树快速对比数据的方法,其特征在于,所述对比数据库抽取和遍历第一表结构和第二表结构中每一条数据,在遍历数据时计算每一条数据的数值,计算完成后将数据结果封装成消息发送至对比数据库,其中,具体计算数据包括:
第一表结构和第二表结构每一条数据的主键列MD5值;
第一表结构和第二表结构每一条数据的非主键列MD5值;
第一表结构和第二表结构每一条数据对应的ROWID值。


4.如权利要求3所述的基于数据库B树快速对比数据的方法,其特征在于,所述对比数据库解析所述封装消息并还原数据结果,将最先完成的第一条数据结果直接插入第一表T中,后期每条计算完成的数据结果通过预设的对比方法与第一表T中的数据进行对比后,对比数据库操作第一表T底层B树上对应的叶子节点,依照对比规则对第一表T进行数据插入、数据删除或数据更新操作,其中,具体对比方法包括:
若当前数据结果中的主键列MD5值与第一表T中已存在的主键列MD5值不相同,对比数据库把当前数据结果插入至第一表T底层B树中;
若当前数据结果中的主键列MD5值与第一表T中已存在的主键列MD5值相同,查询第一表T中已存在的主键列MD5值对应的非主键列MD5值,判断当前数据结果中非主键列MD5值和第一表T中已存在的主键列MD5值对应的非主键列MD5值是否相同,依据预设的判断方法,对比数据库把当前数据结果更新至第一表T底层B树中或从第一表T底层B树中删除当前数据结果。


5.如权利要求4所述的基于数据库B树快速对比数据的方法,其特征在于,所述判断当前数据结果中非主键列MD5值和第一表T中已存在的主键列MD5值对应的非主键列MD5值是否相同,依据预设的判断方法,对比数...

【专利技术属性】
技术研发人员:孙峰谭建强彭青松刘启春余院兰
申请(专利权)人:武汉达梦数据库股份有限公司
类型:发明
国别省市:湖北;42

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

1