一种数据校验方法及装置与流程

文档序号:15851323发布日期:2018-11-07 10:00阅读:150来源:国知局
一种数据校验方法及装置与流程

本说明书实施例涉及互联网应用技术领域,尤其涉及一种数据校验方法及装置。

背景技术

soa(service-orientedarchitecture,面向服务的体系结构)是一种分布式运算的软件设计方法,基于soa体系架构的应用软件,其不同的应用系统一般使用独立的数据源,因此需要就这些独立数据源中的数据是否一致进行校验。

现有技术中常用的方案是离线数据校验,将应用软件运行产生的数据,从各个独立数据源的生产数据库,获取到统一的离线数据库,从而使用离线数据校验各个独立数据源的数据是否一致。但是,由于从生产数据库获取数据需要占用数据库资源,因此若要减小对数据库性能的影响,需要降低获取数据的频率,甚至只能在业务量较小的时间进行,而这又将影响离线数据校验的时效性。



技术实现要素:

针对上述技术问题,本说明书实施例提供一种数据校验方法及装置,技术方案如下:

一种数据校验方法,该方法包括:

确定至少2个待校验数据库;

对于每个所述待校验数据库,获得该数据库的操作日志中未比较的操作记录;

比较所获得的各待校验数据库的对应操作记录的预设特征是否一致;若是,则确定各待校验数据库中对应的数据一致。

一种数据校验装置,该装置包括:

数据库确定模块,用于确定至少2个待校验数据库;

操作记录获取模块,用于对于每个所述待校验数据库,获得该数据库的操作日志中未比较的操作记录;

操作记录比较模块,用于比较所获得的各待校验数据库的对应操作记录的预设特征是否一致;若是,则确定各待校验数据库中对应的数据一致。

本说明书实施例所提供的技术方案,不直接获取生产数据库中的数据,而是获取数据库操作日志中的操作记录,根据操作记录校验不同数据库间的数据是否一致,从而使数据校验的时间、频率不必受到数据库性能的限制,可以在避免影响生产数据库性能的情况下,改善数据校验的时效性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本说明书实施例的数据校验方法的流程示意图;

图2是本说明书实施例的数据校验装置的结构第一种示意图;

图3是本说明书实施例的数据校验装置的结构第二种示意图;

图4是本说明书实施例的数据校验装置的结构第三种示意图;

图5是本说明书实施例的数据校验装置的结构第四种示意图;

图6是本说明书实施例的数据校验装置的结构第五种示意图;

图7是用于配置本说明书实施例装置的一种设备的结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

基于soa体系架构的应用软件,其不同的应用系统一般使用独立的数据源,这些独立的数据源之间的数据,相互独立地存储在不同的数据库中。但是,同一应用软件中,不同应用系统的数据变化通常是相互关联的,从而所使用的这些独立数据源的数据,也将相互关联地变化。

例如,当收款方与付款方通过支付宝等支付机构进行转账交易时,付款方在支付宝的账户将发生扣款,而收款方的账户将发生到款。在这一过程中,至少存在着收款方账户数据与付款方账户数据这2种数据,可能还存在支付宝方的交易数据,可以分别由收款方账户数据库、付款方账户数据库及交易数据库,进行数据存储与管理。

当发生一笔新的转账交易时,交易数据库中将新增一行包括交易金额、时间、交易id等信息的数据,收/付款方账户数据库也将分别新增一行包括到/扣款金额、时间、交易id等信息的数据。为了保障支付机构、收款方及付款方三方的利益,便需要校验交易数据库与收/付款方账户数据库中,就同一笔交易写入的金额数据是否一致。

一种常用的方案是离线数据校验。将需要校验的各个生产数据库中的数据,获取到统一的离线数据库中,然后基于所设计的校验规则,检验各个数据库中的数据的一致性。

显然,将数据由生产数据库获取到离线数据库的过程,将占用生产数据库的资源,影响生产数据库性能,但如果通过降低获取数据的频率、在业务量相对较小的时段(如每天的凌晨1点至5点)获取数据等方式,减小离线数据校验对生产数据库性能的影响,又将影响离线数据校验的时效性,导致不能够及时发现数据不一致的问题。

针对上述问题,本说明书实施例提供一种数据校验方法,参见图1所示,该方法可以包括以下步骤:

s101,确定至少2个待校验数据库;

s102,对于每个所述待校验数据库,获得该数据库的操作日志中未比较的操作记录;

某一数据库在写入新的数据,以及对已有数据进行修改、删除等操作时,该数据库对应的操作日志中,将会生成对应的操作记录。如果某2个数据库进行了相同的一项或多项操作,则分别对应的操作日志中,也将生成相同的一条或多条操作记录。

因此,如果可以确认某2个数据库的原始数据一致,可以通过比较分别对应的操作日志中的各条操作记录是否一致,确定是否对这2个数据库的原始数据,进行了相同的操作,进而确定这2个数据库中操作后的数据是否仍一致。

基于上述原因,本说明书实施例所提供的数据校验方案中,为了避免获取数据过程对数据库性能的影响,并不直接获取不同数据库中的数据,而是获取数据库的操作日志中的各条操作记录,通过比较操作记录是否一致,确定操作后的数据是否仍一致。

大部分类型的数据库均有常用的操作日志格式,如mysql的二进制日志。本说明书实施例中所指的操作日志,可以采用常用的操作日志格式,也可以由本领域技术人员根据实际情况,设置特定格式的日志进行记录,只要保证需要校验的不同数据库的不同操作日志采用统一的格式,本说明书实施例理论上不需要对具体格式进行限定。

此外,与可以插入、修改、删除数据的数据库不同,操作日志一般为串行记录,各条操作记录按照操作的先后顺序记录,并且在记录后将不再变化,因此在每次通过操作日志进行数据校验时,之前已比较过的操作记录,可以不必再次获取并比较,而只需要获取未比较过的操作记录,从而提高数据校验的效率。

s103,比较所获得的各待校验数据库的对应操作记录的预设特征是否一致;若是,则确定各待校验数据库中对应的数据一致。

在不同的数据校验场景中,需要校验的数据的关注点可能不同,因而需要比较的操作记录的特征也将不同,本领域技术人与可以结合具体需求,设定操作记录的预设特征。

例如,在某些场景中,可能只需要关注数据库中写入或删除的数据数目,而并不关注数据的具体信息。

相应地,操作日志可以通过1条操作记录记录1次批量操作,如“写入100行数据”等。这种情况下,操作记录的预设特征可以设置为操作类型及数据数目,即比较对应操作记录是否均具有“写入”和“100”2个特征。

此外,操作日志也可以通过n条操作记录对n行数据的操作进行记录,如对于写入100行数据的操作,记录为100条“写入1行数据”的操作记录。这种情况下,操作记录的预设特征可以仅设置为操作类型。

又例如,在某些场景中,需要关注数据的具体信息,如上述校验交易数据库与收/付款方账户数据库中,就同一笔交易存入的金额数据是否一致的场景中,需要关注交易/到款/扣款金额是否一致。

相应地,操作日志可以具体地记录写入或删除的数据的具体信息,以及修改的数据所变更的具体信息等,而操作记录的预设特征可以设置为所关注的字段(如金额)的值。

对于某一组取自不同操作日志的对应操作记录,如果经比较后预设特征一致,则可以确定对相应数据的操作一致,进而确定数据库中的相应数据一致。并且,本次确认一致的数据,即下次数据校验的原始数据,也可以作为下次通过操作日志校验的基础。

而如果某一组对应操作记录经比较后预设特征不一致,本领域技术人员可以根据具体需求设置相应的对策。例如,可以直接进行报错,提示维护人员进行进一步检查;又如,对于缺少对应操作记录的情况,可以先进行后续操作记录的比较,一定时间间隔后,再次确认相应操作日志中是否确实缺少对应操作记录,等等;此外,还可以对数据库中可能不一致的数据,进行标记或者修正,以便使下次数据校验的原始数据是一致的。

以下对本说明书提供的数据校验方案中,获取操作记录与比较预设特征的具体方式,进行举例说明:

在本说明书提供的一种具体实施方式中,在获取未比较的操作记录时,可以首先确定本次开始数据校验的时刻,将该时刻作为本次数据校验的记录终止时刻;然后确定上次开始数据校验的时刻,将该时刻作为本次数据校验的记录起始时刻;从而获得该数据库的操作日志中,所述记录起始时刻至所述记录终止时刻的操作记录;并比较从各操作日志中获得的对应操作日志的预设特征是否一致。

并且,上述获取与比较的步骤,可以按照预设的周期执行:

例如,将周期设置为1分钟,假设从当天的0点整开始,每分钟执行一次获取与比较的步骤,如在0点20分整时,开始一次数据校验:确定本次开始数据校验的时刻为0点20分0秒,将其作为本次数据校验的记录终止时刻,确定上次开始数据校验的时刻为0点19分0秒,将该时刻作为本次数据校验的记录起始时刻,获得该数据库的操作日志中,0点19分0秒至0点20分0秒的操作记录,进行预设特征比较;而在0点21分整开始的数据校验中,则是获得该数据库的操作日志中,0点20分0秒至0点21分0秒的操作记录,进行预设特征比较;等等,依次类推,从而可以保证各个周期间隔内,各数据库内操作过的数据,均能够被校验是否一致。

在本说明书提供的另一种具体实施方式中,可以在完成本次数据校验后,进一步地将本次数据校验中所获得的最后一条操作记录的操作时间,记录为下次数据校验的起始时间;而在获取未比较的操作记录时,可以确定上次数据校验后所记录的本次数据校验的起始时间;获得该数据库的操作日志中,所确定的起始时间之后的操作记录,进行预设特征比较。

并且类似地,上述获取与比较的步骤,可以按照预设的周期执行,并将第n次数据校验中,所获得的最后一条操作记录的操作时间,记录为第n+1次数据校验的起始时间(n为自然数):

仍以将周期设置为1分钟,从当天的0点整开始,每分钟执行一次获取与比较的步骤为例,如在0点20分整时,开始一次数据校验:假设上次数据校验中,所获得的最后一条操作记录的操作时间为0点19分30秒,则可以确定上次数据校验后所记录的本次数据校验的起始时间为0点19分30秒,获取数据库的操作日志中,0点19分30秒之后的所有操作记录,进行预设特征比较,并将本次获得的最后一条操作记录的操作时间,如0点20分11秒,记录为下次数据校验的起始时间;而在0点21分整开始的数据校验中,则可以确定上次数据校验后所记录的本次数据校验的起始时间为0点20分11秒,并获取数据库的操作日志中,0点20分11秒之后的所有操作记录,进行预设特征比较;等等,依次类推,从而可以保证各数据库内在各个时间内操作过的数据,均能够被校验是否一致。

在本说明书提供的又一种具体实施方式中,可以在对任一组对应操作记录完成比较后,进一步地将该组对应操作记录的各条操作记录,标记为已比较状态;并在获取操作记录时,获取该数据库的操作日志中,未被标记为已比较状态的操作记录。

并且与上述2种具体实施例类似地,上述获取与比较的步骤,可以按照预设的周期执行,这里不再赘述。

此外,还可以逐条获取与比较操作记录,即在对任一组对应操作记录完成比较后,发出获得下一组对应操作记录的通知;而获取操作记录时,在接收到获得下一组对应操作记录的通知的情况下,再获得该数据库的操作日志中,时间最早的一条未被标记为已比较状态的操作记录。

通过逐条获取与比较的方式,可以直接在校验服务器等设备的内存中,进行数据校验,而不必准备专用的数据库,从而节约了数据库资源,并提高了校验效率。

当然,本说明书提供的数据校验方案中,获取与比较操作记录的具体实施方式,可以不局限于以上3种,并且以上3种方式可以不局限于单独使用。

此外,可以理解的是,一般情况下,在预设周期间隔内,可以完成对本次获得的操作记录的比较,如在1分钟内可以完成对前1分钟的数据校验。而在业务量较大,对数据操作较频繁的情况下,如果未在周期间隔内完成本次数据校验,下次数据校验可以等待本次完成后,在开始校验;也可以与本次并行执行;还可以由维护人员根据实际情况,对忙时的校验周期进行调整,以满足校验需求;等等,本说明书对此不做限定。

下面结合一个更为具体的实例,对本说明书提供的数据校验方法进行说明。

收款方与付款方通过支付宝进行转账交易时,由付款方发起交易并支付,支付宝将存储交易结果和支付结果。因此,为了避免交易与支付情况统一,需要校验交易数据库及支付数据库中存入的结果是否一致。

维护人员预先设定:待校验数据库为,交易数据库及支付数据库;校验周期为1分钟;操作日志为二进制日志;操作记录的特征为“结果”字段的值。

校验服务器开始校验后,将每分钟进行1次校验,从交易数据库的二进制日志及支付数据库的二进制日志中,分别将1条未被标记为已比较状态的操作记录,获取至校验服务器内存中,比较2条操作记录中“结果”字段的值,是否为相同的字符串,若相同,则确定数据库中存入了一致的结果;若不同,则进行报错,提示维护人员进一步检查。无论是否一致,均将这2条操作记录,标记为已比较状态,并再次分别获取下一条操作记录至内存中比较。

可见,应用上述方案,可以设定较短周期进行数据校验,而不会占用数据库资源,即可以在不影响数据库性能的情况下,改善数据校验的时效性。并且可以直接在校验服务器内存中校验,而不必准备专用数据库存放离线数据,节约数据库资源,且校验效率高。

相应于上述方法实施例,本说明书实施例还提供一种数据校验装置,参见图2所示,该装置可以包括:

数据库确定模块110,用于确定至少2个待校验数据库;

操作记录获取模块120,用于对于每个所述待校验数据库,获得该数据库的操作日志中未比较的操作记录;

操作记录比较模块130,用于比较所获得的各待校验数据库的对应操作记录的预设特征是否一致;若是,则确定各待校验数据库中对应的数据一致。

在本说明书提供的一种具体实施方式中,所述操作记录获取模块120,可以包括:

时间范围确定单元,用于确定本次开始数据校验的时刻,将该时刻作为本次数据校验的记录终止时刻;确定上次开始数据校验的时刻,将该时刻作为本次数据校验的记录起始时刻;

第一操作记录获取单元,用于获得该数据库的操作日志中,所述记录起始时刻至所述记录终止时刻的操作记录。

在本说明书提供的一种具体实施方式中,参见图3所示,所述装置可以进一步包括:起始时间记录模块140,用于在完成本次数据校验后,将本次数据校验中所获得的最后一条操作记录的操作时间,记录为下次数据校验的起始时间;

所述操作记录获取模块120,可以包括:

起始时间确定单元,用于确定上次数据校验后所记录的本次数据校验的起始时间;

第二操作记录获取单元,用于获得该数据库的操作日志中,所确定的起始时间之后的操作记录。

在本说明书提供的一种具体实施方式中,参见图4所示,所述装置可以进一步包括:状态标记模块150,用于在对任一组对应操作记录完成比较后,将该组对应操作记录的各条操作记录,标记为已比较状态;

所述操作记录获取模块120,包括:第三操作记录获取单元,用于获得该数据库的操作日志中,未被标记为已比较状态的操作记录。

在本说明书提供的一种具体实施方式中,参见图5所示,所述装置可以进一步包括:获取通知模块160,用于在对任一组对应操作记录完成比较后,发出获得下一组对应操作记录的通知;

所述第三操作记录获取单元,具体可以用于:在接收到获得下一组对应操作记录的通知的情况下,获得该数据库的操作日志中,时间最早的一条未被标记为已比较状态的操作记录。

可以理解的是,起始时间记录模块140与状态标记模块150、获取通知模块160作为两种功能独立的模块,既可以如图6所示同时配置在装置中,也可以分别如图3、图4、图5所示单独配置在装置中,因此图3至图6所示的任一结构不应理解为对本说明书实施例方案的限定。

在本说明书提供的一种具体实施方式中,所述数据库的操作日志,可以包括:

数据库的二进制日志。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的数据校验方法。该方法至少包括:

一种数据校验方法,该方法包括:

确定至少2个待校验数据库;

对于每个所述待校验数据库,获得该数据库的操作日志中未比较的操作记录;

比较所获得的各待校验数据库的对应操作记录的预设特征是否一致;若是,则确定各待校验数据库中对应的数据一致。

图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的数据校验方法。该方法至少包括:

一种数据校验方法,其特征在于,该方法包括:

确定至少2个待校验数据库;

对于每个所述待校验数据库,获得该数据库的操作日志中未比较的操作记录;

比较所获得的各待校验数据库的对应操作记录的预设特征是否一致;若是,则确定各待校验数据库中对应的数据一致。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1