一种抽样校验数据方法及设备的制造方法

文档序号:10665761阅读:190来源:国知局
一种抽样校验数据方法及设备的制造方法【专利摘要】本申请公开了一种抽样校验数据方法。在获取当前校验的条件信息后,分别从源端和目的端获取源端侧分片数据和目的侧分片数据,并根据源端侧分片数据与目的侧分片数据的数据一致性依次对完整数据中的各个分片依次进行判断,从而在保证从表中所选取的样本均匀分布的基础上,提高了数据校验的效率。【专利说明】_种抽样校验数据方法及设备
技术领域
[0001]本发明涉及通信
技术领域
,特别涉及一种抽样校验数据方法。本发明同时还涉及一种抽样校验数据设备。【
背景技术
】[0002]随着云计算技术的不断发展,企业的业务数据需要使用云计算的场景也越来越多。对于数据库而言,将其进行云计算处理需要进行数据迀移和数据校验。[0003]数据迀移的实现可以分为3个阶段:数据迀移前的准备、数据迀移的实施和数据迀移后的校验。由于各个用户需求不尽相同,导致数据迀移后,对于数据校验的需求也千差万别。在目前的数据校验领域,已有的校验方法都是全量校验。[0004]在实现本发明的的过程中,发明人发现现有的数据校验方法都是在假设源端和目的端数据库中的表结构一致的基础上,针对表中得数据进行全量校验。在当用户表数据量特别大(比如超过1亿行)时,由于全量校验需要遍历表中所有记录,消耗大量的时间,导致用户无法快速获取校验结果。[0005]由此可见,如何根据源端和目的端数据的实际情况以及用户的需求实现对数据的快速抽量校验,成为本领域普通技术人员亟待解决的技术问题。【
发明内容】[0006]本发明提供了一种抽样校验数据方法,用于提高现有的数据校验效率。该方法包括:[0007]获取当前校验的条件信息,所述条件信息至少包括最小主键以及预设的分片大小;[0008]根据所述条件信息从源端获取源端侧分片数据;[0009]根据所述源端侧分片数据的最大主键以及所述条件信息从目的端获取目的侧分片数据;[0010]对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,并在校验通过后判断当前校验的数据分片是否为完整数据的最后一个分片;[0011]若是,结束校验;[0012]若否,将所述最大主键作为所述最小主键,并重新根据所述最小主键以及所述分片大小从源端获取源端侧分片数据。[0013]相应地,本发明还提出了一种抽样校验数据设备,包括:[0014]信息获取模块,用于获取当前校验的条件信息,所述条件信息至少包括最小主键以及预设的分片大小;[0015]第一数据获取模块,用于根据所述条件信息从源端获取源端侧分片数据;[0016]第二数据获取模块,根据所述源端侧分片数据的最大主键以及所述条件信息从目的端获取目的侧分片数据;[0017]校验模块,用于对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,并在校验通过后判断当前校验的数据分片是否为完整数据的最后一个分片;[0018]若是,所述校验模块结束校验;[0019]若否,所述校验模块将所述最大主键作为所述最小主键,并指示所述信息获取模块重新根据所述最小主键以及所述分片大小从源端获取源端侧分片数据。[0020]由此可见,通过应用本发明的技术方案,在获取当前校验的条件信息后,分别从源端和目的端获取源端侧分片数据和目的侧分片数据,并根据源端侧分片数据与目的侧分片数据的数据一致性依次对完整数据中的各个分片依次进行判断,从而在保证选取的样本均匀分布在表中的基础上,提高了数据校验的效率。【附图说明】[0021]图1为本申请提出的一种抽样校验数据方法的流程示意图;[0022]图2为本申请具体实施例所提出的一种抽样校验的流程示意图;[0023]图3为本申请具体实施例所提出的一种部分数据校验的流程示意图;[0024]图4为本申请提出的一种抽样校验数据设备的结构示意图。【具体实施方式】[0025]有鉴于【
背景技术
】所提出的技术问题,本发明提供了一种抽样校验数据方法,用以对现有的表进行均匀抽样校验,从而避免了校验表中所有记录,在满足用于对于校验的准确率需求的同时,大大提高了校验效率。[0026]如图1所示,该方法包括如下步骤:[0027]S101,获取当前校验的条件信息,所述条件信息至少包括最小主键以及预设的分片大小。[0028]由于现有的全量校验方案无法适用于源端和目的端表结构不一致的场景,特别是在当源端和目的端数据不完全相同时,用户无法对表中的部分数据进行校验(比如特定的行,或者特定的几列数据),对于该种情况,本申请优选实施例提供了一种抽样数据校验的方法,不仅能够对表进行抽样校验,而且能够对不对等数据集合(异构表,或数据量不相同的表)进行校验,并且能定位不一致记录。具体地,该实施例首先分别获取所述源端的源表参与校验列的第一元数据信息,以及所述目的端的目的表参与校验列的第二元数据信息,随后根据所述第一元数据信息以及所述第二元数据信息确定参与校验列数目以及数据类型是否一致,并在结果为一致时继续获取当前校验的条件信息,结果若不一致则结束校验。[0029]S102,根据所述条件信息从源端获取源端侧分片数据。[0030]在本申请优选的实施例中,该步骤根据所述分片大小以及预设的抽样百分比,获取所述当前校验的数据分片的请求起始点以及记录数目;随后向所述源端发送查询请求,以使所述源端根据所述查询请求返回所述源端侧分片数据。[0031]需要说明的是,当采取部分数据进行抽样校验时,由于过滤条件是体现“部分数据校验”的载体,因此查询请求中所携带的内容也视条件信息中包含的内容而不同,具体地,当条件信息中包括有过滤条件时,查询请求携带所述请求起始点、所述记录数目以及所述过滤条件;当条件信息中不包括有过滤条件时,查询请求仅携带请求起始点以及记录数目。[0032]S103,根据所述源端侧分片数据的最大主键以及所述条件信息从目的端获取目的侧分片数据。[0033]S104,对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,并在校验通过后判断当前校验的数据分片是否为完整数据的最后一个分片。[0034]在本申请优选的实施例中,具体的校验方法为逐行遍历源端侧分片数据与目的侧分片数据,判断源端侧分片数据与目的侧分片数据的字段数据是否一致,并依据以下结果确定是否通过:[0035](1)若源端侧分片数据与目的侧分片数据的字段数据一致,确认源端侧分片数据与目的侧分片数据的数据一致性校验通过;[0036](2)若源端侧分片数据与目的侧分片数据的字段数据不一致,记录源端侧分片数据与目的侧分片数据之间不一致的主键信息,并根据主键信息生成用于写入日志文件的订正语句。[0037]S105,若是,结束校验。[0038]S106,若否,将所述最大主键作为所述最小主键,并重新根据所述最小主键以及所述分片大小从源端获取源端侧分片数据。[0039]为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的分别以“抽样校验”和“部分数据校验”两部分技术方案进行说明:[0040]—、抽样校验[0041]该均匀抽样校验的方案关键在于保证选取的样本均匀地分布在表中。用户可以根据样本的大小,灵活设置抽样百分比,从而在校验性能和校验数据量两方面做一个权衡。同时,为了保证样本均匀,该具体实施例按主键分段(每一段数据作为一个分片单位),将表划分为一个个分片,以分片为单位请求数据,将抽样百分比应用在每一个分片中,这样保证了样本来源于表中的所有分片且样本数据均匀分布在表中。[0042]在具体的实施过程中,样本的获取主要利用数据库自身的获取指定偏移的方式来实现,具体可以采用指定大小的结果集SQL语法。例如:假设分片大小为10000,抽样1%,则每个分片中样本大小为100,分片的主键起始点是200030,那么源端查询语句类似于:select*fromtablewherepk>=2000301imit9900offset100;假设源端返回分片最小值为221000,最大值为221150,则目的端查询语句类似于:select*fromtablewherepk>=221000andpk<221150〇[0043]如图2所示,抽样校验流程包括如下各步骤:[0044]S201,获取本次校验的抽样百分比。[0045]S202,根据最小主键和分片大小,生成源端查询语句并执行。[0046]具体地,该步骤首先获取输入的本次校验的最小主键和分片大小,随后根据分片大小和抽样百分比,计算本次分片请求起始点和记录数目,并发送查询请求至源端,从而获取分片数据。[0047]S203,生成目的端查询语句并执行。[0048]与S202类似,本步骤根据本分片的最小主键和最大主键发送查询请求至目的端,从而获取分片数据。[0049]S204,逐行比对源端和目的端的分片数据。[0050]S205,判断字段数据是否一致,若不一致,跳转S206,否则跳转S207。[0051]S206,记录不一致主键信息,并生成订正语句写入日志文件。[0052]S207,判断是否是最后一个分片,若是,跳转S208;否则,以本次校验的最大主键作为下次校验的最小主键,并跳转S202。[0053]S210,校验结束。[0054]二、部分数据校验[0055]在实际应用的过程中,需要进行校验的部分数据可能会分为部分行集合和部分列集合。例如,表A(clint,c2varchar(10),c3int)有3列,分别是cl,c2和c3;需要校验的3条记录分别是(l,’a’,1),(2,’b’,2)和(3,’c’,3),那么A(cl),A(C2),A(cl,C2)等都是表A的部分列集合;{(l,’a’,l)},{(l,’a’,l),(2,’b’,2)}和{(2,’b’,2),(3,’c’,3)}都是表A的部分行集合。对于该情况,本具体实施例中所提供的数据校验方法可以支持对任何部分行、部分列或者部分行与部分列组合所筛选出来的数据进行校验,不再要求参与校验的源和目的端表结构完全一致。[0056]为了实现以上目的,在本申请的具体实施例中,对于部分列的待校验数据通过用户指定列名的方式来实现;而对于部分行的待校验数据则是用户通过指定条件表达式来实现(例如〃cl>landc2=’a’),程序通过在SQL语句中附加where条件的方式来获取数据时。比如,分片大小为10000,校验满足条件〃cl>l〇〇andc2=’a’〃的结果集,对于分片主键起始点为200,源端的查询语句类似于:select*fromtablewherepk>=200andcl>100andc2=’a’limit10000;假设源端返回分片最大值为30000,则目的端查询语句类似于:select*fromtablewherepk>=200andpk〈=30000。这样即可精确的在源端和目的端获取到需要进行校验的部分数据。[0057]具体地,如图3所示,部分数据校验流程包括如下各步骤:[0058]S301,输入校验列信息和行过滤条件表达式。[0059]S302,比较源端和目的端列数据类型是否一致,若不一致,提示出错并跳转S311,若一致则跳转S303。[0060]基于上一步骤中所获取的源表和目的表的参与校验列的元数据信息,该步骤主要比较参与校验列数目和数据类型是否一致。[0061]S303,根据最小主键、分片大小以及条件表达式生成源端查询语句并执行。[0062]对于源端侧的分片数据,该步骤首先获取本次校验的最小主键、分片大小和过滤条件,随后发送查询请求至源端,获取分片数据。[0063]S304,根据源端分片数据获取最小主键和最大主键。[0064]S305,生成目的端查询语句并执行。[0065]对于目的端的分片数据,在经过S304获取到本次分片的最大主键后,该步骤根据本次分片的最大主键、最小主键和过滤条件,发送查询请求至目的端,获取分片数据。[0066]S306,逐行比对源端和目的端的分片数据。[0067]S307,记录数据分片中不一致的记录信息。[0068]该步骤主要在于判断字段数据是否一致,若发现有不一致的字段数据,则记录不一致主键信息,并生成订正语句写入日志文件。[0069]S308,判断是否是最后一个分片,若是,跳转S309;否则,以本次校验的最大主键作为下次校验的最小主键,跳转S303;[0070]S309,校验结束。[0071]为达到以上技术目的,本申请还提出了一种抽样校验数据设备,如图4所示,包括:[0072]信息获取模块410,用于获取当前校验的条件信息,所述条件信息至少包括最小主键以及预设的分片大小;[0073]第一数据获取模块420,用于根据所述条件信息从源端获取源端侧分片数据;[0074]第二数据获取模块430,根据所述源端侧分片数据的最大主键以及所述条件信息从目的端获取目的侧分片数据;[0075]校验模块440,用于对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,并在校验通过后判断当前校验的数据分片是否为完整数据的最后一个分片;[0076]若是,所述校验模块440结束校验;[0077]若否,所述校验模块440将所述最大主键作为所述最小主键,并指示所述信息获取模块重新根据所述最小主键以及所述分片大小从源端获取源端侧分片数据。[0078]在具体的应用场景中,所述校验模块具体用于:[0079]逐行遍历所述源端侧分片数据与所述目的侧分片数据,判断所述源端侧分片数据与所述目的侧分片数据的字段数据是否一致;[0080]若一致,所述校验模块确认所述源端侧分片数据与所述目的侧分片数据的数据一致性校验通过;[0081]若不一致,所述校验模块记录所述源端侧分片数据与所述目的侧分片数据之间不一致的主键信息,并根据所述主键信息生成用于写入日志文件的订正语句。[0082]在具体的应用场景中,还包括:[0083]元数据获取模块,用于分别获取所述源端的源表参与校验列的第一元数据信息,以及所述目的端的目的表参与校验列的第二元数据信息;[0084]判断模块,用于根据所述第一元数据信息以及所述第二元数据信息确定参与校验列数目以及数据类型是否一致;[0085]若一致,所述判断模块指示所述信息获取模块继续获取当前校验的条件信息;[0086]若不一致,所述判断模块结束校验。[0087]在具体的应用场景中,所述第一数据获取模块具体用于:[0088]根据所述分片大小以及预设的抽样百分比,获取所述当前校验的数据分片的请求起始点以及记录数目;[0089]向所述源端发送查询请求,以使所述源端根据所述查询请求返回所述源端侧分片数据;[0090]其中,所述查询请求携带所述请求起始点以及所述记录数目;或,所述查询请求携带所述请求起始点、所述记录数目以及所述过滤条件。[0091]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。[0092]本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。[0093]本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。[0094]上述本发明序号仅仅为了描述,不代表实施场景的优劣。[0095]以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。【主权项】1.一种抽样校验数据方法,其特征在于,包括:获取当前校验的条件信息,所述条件信息至少包括最小主键以及预设的分片大小;根据所述条件信息从源端获取源端侧分片数据;根据所述源端侧分片数据的最大主键以及所述条件信息从目的端获取目的侧分片数据;对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,并在校验通过后判断当前校验的数据分片是否为完整数据的最后一个分片;若是,结束校验;若否,将所述最大主键作为所述最小主键,并重新根据所述最小主键以及所述分片大小从源端获取源端侧分片数据。2.如权利要求1所述的方法,其特征在于,对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,具体为:逐行遍历所述源端侧分片数据与所述目的侧分片数据,判断所述源端侧分片数据与所述目的侧分片数据的字段数据是否一致;若一致,确认所述源端侧分片数据与所述目的侧分片数据的数据一致性校验通过;若不一致,记录所述源端侧分片数据与所述目的侧分片数据之间不一致的主键信息,并根据所述主键信息生成用于写入日志文件的订正语句。3.如权利要求1所述的方法,其特征在于,所述条件信息还包括过滤条件,在获取当前校验的最小主键以及预设的分片大小之前,还包括:分别获取所述源端的源表参与校验列的第一元数据信息,以及所述目的端的目的表参与校验列的第二元数据信息;根据所述第一元数据信息以及所述第二元数据信息确定参与校验列数目以及数据类型是否一致;若一致,继续获取当前校验的条件信息;若不一致,结束校验。4.如权利要求1-3任一项所述的方法,其特征在于,根据所述条件信息从源端获取源端侧分片数据,具体为:根据所述分片大小以及预设的抽样百分比,获取所述当前校验的数据分片的请求起始点以及记录数目;向所述源端发送查询请求,以使所述源端根据所述查询请求返回所述源端侧分片数据;其中,所述查询请求携带所述请求起始点以及所述记录数目;或,所述查询请求携带所述请求起始点、所述记录数目以及所述过滤条件。5.—种抽样校验数据设备,其特征在于,包括:信息获取模块,用于获取当前校验的条件信息,所述条件信息至少包括最小主键以及预设的分片大小;第一数据获取模块,用于根据所述条件信息从源端获取源端侧分片数据;第二数据获取模块,根据所述源端侧分片数据的最大主键以及所述条件信息从目的端获取目的侧分片数据;校验模块,用于对所述源端侧分片数据与所述目的侧分片数据的数据一致性进行校验,并在校验通过后判断当前校验的数据分片是否为完整数据的最后一个分片;若是,所述校验模块结束校验;若否,所述校验模块将所述最大主键作为所述最小主键,并指示所述信息获取模块重新根据所述最小主键以及所述分片大小从源端获取源端侧分片数据。6.如权利要求5所述的设备,其特征在于,所述校验模块具体用于:逐行遍历所述源端侧分片数据与所述目的侧分片数据,判断所述源端侧分片数据与所述目的侧分片数据的字段数据是否一致;若一致,所述校验模块确认所述源端侧分片数据与所述目的侧分片数据的数据一致性校验通过;若不一致,所述校验模块记录所述源端侧分片数据与所述目的侧分片数据之间不一致的主键信息,并根据所述主键信息生成用于写入日志文件的订正语句。7.如权利要求6所述的设备,其特征在于,还包括:元数据获取模块,用于分别获取所述源端的源表参与校验列的第一元数据信息,以及所述目的端的目的表参与校验列的第二元数据信息;判断模块,用于根据所述第一元数据信息以及所述第二元数据信息确定参与校验列数目以及数据类型是否一致;若一致,所述判断模块指示所述信息获取模块继续获取当前校验的条件信息;若不一致,所述判断模块结束校验。8.如权利要求5-7任一项所述的设备,其特征在于,所述第一数据获取模块具体用于:根据所述分片大小以及预设的抽样百分比,获取所述当前校验的数据分片的请求起始点以及记录数目;向所述源端发送查询请求,以使所述源端根据所述查询请求返回所述源端侧分片数据;其中,所述查询请求携带所述请求起始点以及所述记录数目;或,所述查询请求携带所述请求起始点、所述记录数目以及所述过滤条件。【文档编号】G06F11/07GK106033427SQ201510106947【公开日】2016年10月19日【申请日】2015年3月11日【发明人】蔡畅【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1