本发明专利技术公开了一种数据库表的差异比较方法及装置,该方法包括如下步骤:步骤S1,接收加密后的源端及备端的数据库表数据,进行数据行比较,根据比较结果对未进行匹配以及匹配失败的源端和备端数据库表的数据缓存于缓存集合,并记录各自未匹配的数据行数;步骤S2,当某一批数据比较之后,根据记录的数据行数判断是否进行数据缓存操作,于需进行数据缓存操作时,从缓存集合中获取需要缓存的数据;步骤S3,创建存储差异数据的文件,将获取的数据写入相应的文件,并删除记录的相应行数以及缓存集合中的数据;步骤S4,在源端和备端数据都发送结束之后,读取存储差异数据的文件,执行普通的表比较操作。比较操作。比较操作。
【技术实现步骤摘要】
一种数据库表的差异比较方法及装置
[0001]本专利技术涉及计算机数据备份容灾
,特别是涉及一种大数据量的数据库表的差异比较方法和装置。
技术介绍
[0002]目前,在计算机数据容灾备份过程中,经常需要进行数据库表的比较,例如,在进行数据备份之前需要查询备份源端和备份目的端当前的数据库表差异以决定是否备份,此时需要进行数据库表比较,而在数据备份之后确认数据是否完整、准确,也需要对备份源端和备份目的端进行数据库表比较,因此,数据库表的差异比较在计算机数据容灾备份过程中至关重要。
[0003]目前,计算机数据容灾备份中的数据库表比较过程通常采用如下过程:数据库表比较时需要对源端数据库中每行数据和备份端数据库中每行数据都进行 MD5加密,然后使用md5数据进行比较,如果相同就代表行数据相同。
[0004]具体地,对数据行进行MD5加密之前需要对每行的数据进行处理,处理时将每行数据的每一列转换(即将行的每列数据存到连续的字节空间,然后对这个连续的空间执行MD5加密),然后所有列的转换结果汇总,对汇总之后再进行 MD5加密操作,源端的数据在源端已经进行处理,发送到备份端则已经是MD5 数据了,当源端的数据行发送到备份端后,备份端读取备端的数据库数据,然后对数据行进行MD5加密,与源端发送来的数据进行比较,此时如果差异数据量特别大,或者不确定哪一端的数据读取特别慢,则会导制比较进程比较缓慢,从而积压大量未进行比较的数据,由于内存中积存大量数据,很可能导制内存撑爆,进程崩溃。
技术实现思路
[0005]为克服上述现有技术存在的不足,本专利技术之目的在于提供一种数据库表的差异比较方法和装置,以通过在数据库表比较进行中积存数据量过大时,将一部分数据暂时保存文件,并在差异数据过大停止表比较返回当前结果,从而避免将内存撑爆的问题。
[0006]为达上述目的,本专利技术提出一种数据库表的差异比较方法,包括如下步骤:
[0007]步骤S1,接收加密后的源端及备端的数据库表数据,进行数据行比较,根据比较结果对未进行匹配以及匹配失败的源端和备端数据库表的数据缓存于缓存集合,并记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数;
[0008]步骤S2,当某一批数据比较之后,根据记录的源端和备端未进行匹配以及匹配失败的源端和备端的数据行数判断是否进行数据缓存操作,于需进行数据缓存操作时,从缓存集合中获取需要缓存的数据以将其保存于存储差异数据的文件;
[0009]步骤S3,将获取的需要缓存的数据进行文件存储操作,创建存储差异数据的文件,并将数据写入相应的文件,并删除记录的相应行数以及缓存集合中的相应数据;
[0010]步骤S4,在源端数据和备端数据都发送结束之后,读取存储差异数据的文件,执行
普通的表比较操作。
[0011]优选地,于步骤S1中,利用数据行数数组记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数,所述数据行数数组为二维整型数组。
[0012]优选地,于步骤S1中,利用一个二维哈希数组的缓存集合对未进行匹配以及匹配失败的源端和备端数据库表的数据进行缓存。
[0013]优选地,所述用于缓存未进行匹配以及匹配失败的源端和备端数据库表的数据的二维哈希数组为:
[0014]m_hash[当前数据源端还是备端][key值][0015]其中,key值为使用预设的key函数对相应的行数据代表的MD5加密获得。
[0016]优选地,于步骤S2中,将记录的源端和备端未进行匹配以及匹配失败的源端和备端的数据行数相加,如果相加结果大于预设的阈值,则确定需进行缓存操作。
[0017]优选地,在保存缓存数据之前将记录的源端数据行数和备端的数据行数进行比较,确定哪端的数据行数更大,从而确定存储行数更大的一端。
[0018]优选地,于步骤S2中,当进行数据缓存操作时,确定一个key,根据key 从缓存集合中每次遍历增加256的方法获取存储数据存储于同一文件下。
[0019]优选地,于步骤S3中,以确定的key与当前表的objn为文件名创建文件,将获取的数据存储写入相应的文件,并将缓存是否进行了存储的标志设置为 true。
[0020]优选地,于步骤S4中,在进行读取文件前,先将缓存集合中剩余的从源备端发过来比较之后未匹配的数据存储到相应文件,之后读取文件,每次读取一个文件对其中的数据执行普通的表比较操作。
[0021]为达到上述目的,本专利技术还提供一种数据库表的差异比较装置,包括:
[0022]数据行比较处理单元,用于接收加密后的源端及备端的数据库表数据,进行数据行比较,根据比较结果对未进行匹配以及匹配失败的源端和备端数据库表的数据缓存于缓存集合,并记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数;
[0023]数据缓存单元,用于当某一批数据比较之后,根据记录的源端和备端未进行匹配以及匹配失败的源端和备端的数据行数判断是否进行数据缓存操作,于需进行数据缓存操作时,从缓存集合中获取需要缓存的数据以将其保存于文件;
[0024]文件存储单元,用于将获取的需要缓存的数据进行文件存储操作,创建存储差异数据的文件,并将数据写入相应的文件,并删除记录的相应行数以及缓存集合中的相应数据;
[0025]文件读取比较单元,用于在源端数据和备端数据都发送结束之后,读取存储差异数据的文件,执行普通的表比较操作。
[0026]与现有技术相比,本专利技术一种数据库表的差异比较方法和装置通过在数据库表比较进行中积存数据量过大时,将一部分数据暂时保存文件,并在差异数据过大停止表比较返回当前结果,从而实现了避免将内存撑爆的目的。
附图说明
[0027]图1为本专利技术一种数据库表的差异比较方法的步骤流程图;
[0028]图2为本专利技术一种数据库表的差异比较装置的系统架构图;
具体实施方式
[0029]以下通过特定的具体实例并结合附图说明本专利技术的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本专利技术的其它优点与功效。本专利技术亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本专利技术的精神下进行各种修饰与变更。
[0030]图1为本专利技术一种数据库表的差异比较方法的步骤流程图。如图1所示,本专利技术一种数据库表的差异比较方法,包括如下步骤:
[0031]步骤S1,接收加密后的源端及备端的数据库表数据,进行数据行比较,根据比较结果对未进行匹配以及匹配失败的源端和备端数据库表的数据缓存于缓存集合,并记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数。
[0032]在本专利技术中,表进行的操作是在备端进行,首先初始化一个数据行数数组,用来记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数,在本专利技术具体实施例中,所述数据行数数组为二维整型数组,对应源端和备端,如果源端的数据不匹配,那么数组对应源端的值加1,如果备端的数据不匹配,则本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种数据库表的差异比较方法,包括如下步骤:步骤S1,接收加密后的源端及备端的数据库表数据,进行数据行比较,根据比较结果对未进行匹配以及匹配失败的源端和备端数据库表的数据缓存于缓存集合,并记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数;步骤S2,当某一批数据比较之后,根据记录的源端和备端未进行匹配以及匹配失败的源端和备端的数据行数判断是否进行数据缓存操作,于需进行数据缓存操作时,从缓存集合中获取需要缓存的数据以将其保存于存储差异数据的文件;步骤S3,将获取的需要缓存的数据进行文件存储操作,创建存储差异数据的文件,并将数据写入相应的文件,并删除记录的相应行数以及缓存集合中的相应数据;步骤S4,在源端数据和备端数据都发送结束之后,读取存储差异数据的文件,执行普通的表比较操作。2.如权利要求1所述的一种数据库表的差异比较方法,其特征在于,于步骤S1中,利用数据行数数组记录未进行匹配以及匹配失败的源端和备端数据库表的数据行数,所述数据行数数组为二维整型数组。3.如权利要求2所述的一种数据库表的差异比较方法,其特征在于,于步骤S1中,利用一个二维哈希数组的缓存集合对未进行匹配以及匹配失败的源端和备端数据库表的数据进行缓存。4.如权利要求3所述的一种数据库表的差异比较方法,其特征在于,所述用于缓存未进行匹配以及匹配失败的源端和备端数据库表的数据的二维哈希数组为:m_hash[当前数据源端还是备端][key值]其中,key值为使用预设的key函数对相应的行数据代表的MD5加密获得。5.如权利要求4所述的一种数据库表的差异比较方法,其特征在于,于步骤S2中,将记录的源端和备端未进行匹配以及匹配失败的源端和备端的数据行数相加,如果相加结果大于预设的阈值,则确定需进行缓存操作。6.如权利要求5所述的...
【专利技术属性】
技术研发人员:王岚,高志会,陈勇铨,胡军擎,
申请(专利权)人:上海英方软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。