一种检测无主键数据表一致性的系统及方法技术方案

技术编号:15617193 阅读:64 留言:0更新日期:2017-06-14 03:39
本发明专利技术公开了一种检测无主键数据表一致性的系统及方法,其系统包括用于获取对比数据集、计算MD5跳表、三路快速排序、管理MD5跳表的始端数据代理AGENT、终端数据代理AGENT及用于对比数据并生成对比报告的数据校验VERI;还包括被检测的数据库同步系统、源数据库、目的数据库。本发明专利技术利用MD5跳表检测无主键数据表一致性,减少需要比对的数据量,并避免数据表必须存在主键的限制条件;利用MD5跳表管理比对数据,避免在无主键基表可能存在大量相同数据记录情况下比对算法性能退化的情形。

【技术实现步骤摘要】
一种检测无主键数据表一致性的系统及方法
本专利技术属于无主键数据表的一致性检测领域,更具体地说,涉及一种检测无主键数据表一致性的系统及方法。
技术介绍
随着信息化建设的高速发展,信息系统已经成为企业维持业务运转的关键,企业迫切需要提高信息系统的可用性,保证业务的连续性,最大限度地减少因灾难或故障所带来的损失。另一方面,多样化的业务类型导致数据访问需求的日趋复杂化,数据量的急剧攀升也导致数据库服务器不堪重负,企业同样迫切需要提高信息系统的运行效率。数据库实时同步系统基于成熟的关系数据模型和标准接口,能以极少的系统开支实现秒级数据实时同步,可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、多业务中心等业务领域。目前存在的一些数据复制系统,例如Oracle的GoldenGate,它的数据比对系统,只能进行存在主键的基表的一致性检测,这就限制了数据复制中一致性检测的适用范围。为了满足要求,需要人工给进行比较的基表增加主键,这对于源数据库的业务系统可能造成性能和功能上的影响。由此可见,为了尽可能减少对于业务系统的影响,需要设计一种检测无主键数据表一致性的系统及方法,适用于数据复制系统。
技术实现思路
为克服现有技术存在的缺陷,本专利技术提供一种检测无主键数据表一致性的系统及方法。本专利技术解决其技术问题所采用的技术方案是:设计一种检测无主键数据表一致性的系统,包括始端数据代理AGENT、终端数据代理AGENT及数据校验VERI,所述始端数据代理AGENT、终端数据代理AGENT用于获取对比数据集、计算MD5跳表、三路快速排序、管理MD5跳表,所述数据校验VERI用于对比数据并生成对比报告;还包括被检测的数据库同步系统、源数据库、目的数据库;所述始端数据代理AGENT和终端数据代理AGENT分别从源数据库和目的数据库获取待检测的最新版本表数据并计算出MD5摘要值,所述数据校验VERI接收始端数据代理AGENT和终端数据代理AGENT发送的数据包并进行分块、排序、与MD5跳表比对以检测源数据库和目的数据库的一致性。在上述方案中,所述始端数据代理AGENT、终端数据代理AGENT为服务程序。在上述方案中,所述数据包包含ROWID和MD5摘要值。本专利技术还提供一种检测无主键数据表一致性的方法,包括以下步骤:步骤S010,始端数据代理AGENT和终端数据代理AGENT分别从源数据库和目的数据库获取待检测的最新版本表数据后计算出MD5摘要值;步骤S020,数据校验VERI接收始端数据代理AGENT和终端数据代理AGENT发送的数据包;步骤S030,数据校验VERI对数据包进行分块、排序,并与MD5跳表比对。在上述步骤S010中,包括以下步骤:步骤S010-1,始端数据代理AGENT和终端数据代理AGENT分别在源数据库和目的数据库上执行数据查询;步骤S010-2,始端数据代理AGENT和终端数据代理AGENT分别计算MD5摘要值;步骤S010-3,始端数据代理AGENT和终端数据代理AGENT分别将ROWID、MD5摘要值填充在数据包中发送给数据校验VERI,其中始端数据代理AGENT发送的数据包放置于左列表,终端数据代理AGENT发送的数据包放置于右列表。在上述步骤S030中,设置两个变量left_over和right_over管理左列表和右列表,left_over初始化为FALSE,right_over初始化为FALSE,数据校验VERI对数据包的排序包括以下步骤:步骤S031-1,若left_over为TRUE,转至步骤S031-4,否则从左列表取出一个数据包,放到左排序内存中;步骤S031-2,重复步骤S031-1直到左排序内存无法放入完整数据包,或者已经到达左列表最后一个数据包;步骤S031-3,将左排序内存的数据包进行排序,排序结果写入文件中,文件名由系统自动生成,如果取到最后一个数据包,标记left_over为TRUE,转至步骤S031-1继续处理左列表;步骤S031-4,若right_over为TRUE,转至步骤S031-7,否则从右列表取出一个数据包,放到右排序内存中;步骤S031-5,重复步骤S031-4直到右排序内存无法放入完整数据包,或者已经到达右列表最后一个数据包;步骤S031-6,将右排序内存的数据包进行排序,排序结果写入文件,文件名系统自动生成,如果取到最后一个排序结果包,标记right_over=TRUE,转至步骤S031-4继续处理右列表;步骤S031-7,若left_over为TRUE且right_over为TRUE,排序结束,否则转至步骤S031-1。在上述步骤S030中,数据校验VERI对数据包的比对包括以下步骤:步骤S032-1,左排序内存生成的排序文件由左skiplist管理,右排序内存生成的排序文件由右skiplist管理,从每个排序文件中取出固定数量的记录初始化左skiplist和右skiplist,代表每个排序文件中初始化的MD5值数据;步骤S032-2,从左skiplist取出最小元素L,从右skiplist取出最小元素R;步骤S032-3,根据MD5值,比较L和R;步骤S032-4,如果L>R或者L为空、R非空,则R的ROWID放置到DELETE文件中,从R所在的排序文件中取下一个记录放入右skiplist,从右skiplist取出最小元素存放到R,转至步骤S032-3;步骤S032-5,如果L=R并且L与R非空,从L所在的排序文件中取下一个记录放入左skiplist,从R所在的排序文件中取下一个记录放入右skiplist,直至已经取完排序文件的记录,转至步骤S032-2;步骤S032-6,如果L<R或者L非空、R为空,则将L的ROWID放置到结果文件夹的INSERT文件中,从L所在的排序文件中取下一个记录放入左skiplist,从左skiplist取出最小元素存放到L,转至步骤S032-3;步骤S032-7,如果L与R均为空,算法结束;如果INSERT文件和DELETE文件均为空,则源数据库和目的数据库一致,否则将INSERT文件中的数据插入到目的数据库,然后从目的数据库删除DELETE文件中的数据。实施本专利技术检测无主键数据表一致性的系统及方法,具有以下有益效果:本专利技术利用MD5跳表检测无主键数据表一致性,减少需要比对的数据量,并避免数据表必须存在主键的限制条件;利用MD5跳表管理比对数据,避免在无主键基表可能存在大量相同数据记录情况下比对算法性能退化的情形。附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1为检测无主键数据表一致性的系统的结构示意图;图2为始端数据代理AGENT、终端数据代理AGENT的工作流程示意图;图3为检测无主键数据表一致性的方法的工作流程示意图。具体实施方式为了对本专利技术的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本专利技术的具体实施方式。如图1所示,本专利技术检测无主键数据表一致性的系统,包括始端数据代理AGENT、终端数据代理AGENT及数据校验VERI,始端数据代理AGENT、终端数据代理AGENT用于获取对比数据集、计算MD5跳表、三路快速排序、管理MD5跳表,数据校验VERI用于对比数据并生成对本文档来自技高网...
一种检测无主键数据表一致性的系统及方法

【技术保护点】
一种检测无主键数据表一致性的系统,其特征在于,包括始端数据代理AGENT、终端数据代理AGENT及数据校验VERI,所述始端数据代理AGENT、终端数据代理AGENT用于获取对比数据集、计算MD5跳表、三路快速排序、管理MD5跳表,所述数据校验VERI用于对比数据并生成对比报告;还包括被检测的数据库同步系统、源数据库、目的数据库;所述始端数据代理AGENT和终端数据代理AGENT分别从源数据库和目的数据库获取待检测的最新版本表数据并计算出MD5摘要值,所述数据校验VERI接收始端数据代理AGENT和终端数据代理AGENT发送的数据包并进行分块、排序、与MD5跳表比对以检测源数据库和目的数据库的一致性。

【技术特征摘要】
1.一种检测无主键数据表一致性的系统,其特征在于,包括始端数据代理AGENT、终端数据代理AGENT及数据校验VERI,所述始端数据代理AGENT、终端数据代理AGENT用于获取对比数据集、计算MD5跳表、三路快速排序、管理MD5跳表,所述数据校验VERI用于对比数据并生成对比报告;还包括被检测的数据库同步系统、源数据库、目的数据库;所述始端数据代理AGENT和终端数据代理AGENT分别从源数据库和目的数据库获取待检测的最新版本表数据并计算出MD5摘要值,所述数据校验VERI接收始端数据代理AGENT和终端数据代理AGENT发送的数据包并进行分块、排序、与MD5跳表比对以检测源数据库和目的数据库的一致性。2.根据权利要求1所述的检测无主键数据表一致性的系统,其特征在于,所述始端数据代理AGENT、终端数据代理AGENT为服务程序。3.根据权利要求1所述的检测无主键数据表一致性的系统,其特征在于,所述数据包包含ROWID和MD5摘要值。4.一种检测无主键数据表一致性的方法,其特征在于,包括以下步骤:步骤S010,始端数据代理AGENT和终端数据代理AGENT分别从源数据库和目的数据库获取待检测的最新版本表数据后计算出MD5摘要值;步骤S020,数据校验VERI接收始端数据代理AGENT和终端数据代理AGENT发送的数据包;步骤S030,数据校验VERI对数据包进行分块、排序,并与MD5跳表比对。5.根据权利要求4所述的检测无主键数据表一致性的方法,其特征在于,在步骤S010中,包括以下步骤:步骤S010-1,始端数据代理AGENT和终端数据代理AGENT分别在源数据库和目的数据库上执行数据查询;步骤S010-2,始端数据代理AGENT和终端数据代理AGENT分别计算MD5摘要值;步骤S010-3,始端数据代理AGENT和终端数据代理AGENT分别将ROWID、MD5摘要值填充在数据包中发送给数据校验VERI,其中始端数据代理AGENT发送的数据包放置于左列表,终端数据代理AGENT发送的数据包放置于右列表。6.根据权利要求5所述的检测无主键数据表一致性的方法,其特征在于,在步骤S030中,设置两个变量left_over和right_over管理左列表和右列表,left_over初始化为FALSE,right_over初始化为FALSE,数据校验VERI对数据包的排序包括以下步骤:步骤S031-1,若left_over为TRUE,转至步骤S031-4,否则从左列表取出一个数据包,放到左排序内存中;步骤S031-2,重复步骤S...

【专利技术属性】
技术研发人员:彭明田付铨陈琦王尧孙峰周英飚
申请(专利权)人:中国民航信息网络股份有限公司武汉达梦数据库有限公司
类型:发明
国别省市:北京,11

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

1