掌桥专利:专业的专利平台
掌桥专利
首页

数据一致性的校验方法、装置、设备、介质及程序产品

文献发布时间:2023-06-19 12:22:51


数据一致性的校验方法、装置、设备、介质及程序产品

技术领域

本申请涉及数据处理技术领域,尤其涉及一种数据一致性的校验方法、装置、设备、介质及程序产品。

背景技术

数据库是一种按照数据结构来存储和管理数据的计算机软件系统,分为关系型数据库以及非关系型数据库等多种不同的种类,数据表在不同种类的数据库间迁移是非常常见的。然而,如果迁移过程中对数据表处理不当,很有可能会出现漏迁、误迁以及网络传输丢失数据等错误,导致迁移后的数据表与迁移前的数据表不一致,因此对迁移前后的数据表的一致性进行校验是非常有必要的。

目前,对迁移前后的数据表的一致性进行校验主要是对迁移前以及迁移后的数据表中的数据分别进行分组处理,利用消息摘要算法(Message Digest Algorithm,MD5)获取迁移前的多组加密字符串和迁移后的多组加密字符串,并对两者进行对比。若迁移前和迁移后的加密字符串一样,则代表迁移前和迁移后的该组数据一致;若迁移前和迁移后的加密字符串不一样,则代表迁移前和迁移后的该组数据不一致。

然而,在数据量较大时,需要确定每组迁移后的数据对应的迁移前的数据所在的组,并对两组进行对比校验,耗费时间较长,校验效率较低。

发明内容

本申请提供一种数据一致性的校验方法、装置、设备、介质及程序产品,以解决在数据量较大时,需要确定每组迁移后的数据对应的迁移前的数据所在的组,并对二组进行对比校验,耗费时间较长,校验效率较低的问题。

第一方面,本申请实施例提供一种数据一致性的校验方法,包括:

从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段,所述迁移前的数据表存储在第一数据库,所述迁移后的数据表存储在第二数据库;

针对所述迁移前的数据表,将所述每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理,得到多个迁移前字符串,将所述多个迁移前字符串按照预设参数的顺序存储至第一数据文件;

针对所述迁移后的数据表,将所述每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理,得到多个迁移后字符串,将所述多个迁移后字符串按照所述预设参数的顺序存储至第二数据文件;

对所述第一数据文件和所述第二数据文件按存储顺序进行校验,获取第一校验结果,所述第一校验结果用于指示所述迁移前的数据表与所述迁移后的数据表是否一致;

其中,所述预设参数包括数据表的主键或者索引。

在第一方面的一种可能设计中,所述方法还包括:

将所述迁移前的数据表中的数值型字段进行求和,得到迁移前数值;

将所述迁移后的数据表中的数值型字段进行求和,得到迁移后数值;

将所述迁移前数值与所述迁移后数值进行对比校验,获取第二校验结果,所述第二校验结果用于指示所述迁移前的数据表与所述迁移后的数据表是否一致。

在第一方面的另一种可能设计中,在对多个迁移前字段拼接的字符串进行加密之前,所述方法还包括:

将多个迁移前字段拼接的字符串进行转换成预设格式;

相应的,在对多个迁移后字段拼接的字符串进行加密之前,所述方法还包括:

将多个迁移后字段拼接的字符串进行转换成所述预设格式。

在第一方面的再一种可能设计中,所述针对所述迁移前的数据表,将所述每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理之前,所述方法还包括:

若迁移前字段中的非数值型字段超过预设长度,则对所述迁移前字段中的非数值型字段按照所述预设长度进行截取处理;

相应的,所述针对所述迁移后的数据表,将所述每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理之前,所述方法还包括:

若迁移后字段中的非数值型字段超过所述预设长度,则对所述迁移后字段中的非数值型字段按照所述预设长度进行截取处理。

在第一方面的又一种可能设计中,所述针对所述迁移前的数据表,将所述每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理之前,所述方法还包括:

若迁移前字段中的非数值型字段为空值,则将所述迁移前字段中的非数值型字段转换为空格;

相应的,所述针对所述迁移后的数据表,将所述每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理之前,所述方法还包括:

若迁移后字段中的非数值型字段为空值,则将所述迁移后字段中的非数值型字段转换为空格。

在第一方面的又一种可能设计中,所述从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段之前,所述方法还包括:

获取所述第一数据库中的迁移前的数据表和所述第二数据库中的迁移后的数据表。

第二方面,本申请实施例提供一种数据一致性的校验装置,包括:

获取模块,用于从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段,所述迁移前的数据表存储在第一数据库,所述迁移后的数据表存储在第二数据库;

处理模块,用于针对所述迁移前的数据表,将所述每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理,得到多个迁移前字符串,将所述多个迁移前字符串按照预设参数的顺序存储至第一数据文件;

所述处理模块,还用于针对所述迁移后的数据表,将所述每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理,得到多个迁移后字符串,将所述多个迁移后字符串按照所述预设参数的顺序存储至第二数据文件;

所述处理模块,还用于对所述第一数据文件和所述第二数据文件按存储顺序进行校验,获取第一校验结果,所述第一校验结果用于指示所述迁移前的数据表与所述迁移后的数据表是否一致;

其中,所述预设参数包括数据表的主键或者索引。

在第二方面的一种可能设计中,所述处理模块,还用于:

将所述迁移前的数据表中的数值型字段进行求和,得到迁移前数值;

将所述迁移后的数据表中的数值型字段进行求和,得到迁移后数值;

将所述迁移前数值与所述迁移后数值进行对比校验,获取第二校验结果,所述第二校验结果用于指示所述迁移前的数据表与所述迁移后的数据表是否一致。

在第二方面的另一种可能设计中,所述处理模块,还用于:

将多个迁移前字段拼接的字符串进行转换成预设格式;

相应的,所述处理模块,还用于:

将多个迁移后字段拼接的字符串进行转换成所述预设格式。

在第二方面的再一种可能设计中,所述处理模块,还用于:

若迁移前字段中的非数值型字段超过预设长度,则对所述迁移前字段中的非数值型字段按照所述预设长度进行截取处理;

相应的,所述处理模块,还用于:

若迁移后字段中的非数值型字段超过所述预设长度,则对所述迁移后字段中的非数值型字段按照所述预设长度进行截取处理。

在第二方面的又一种可能设计中,所述处理模块,还用于:

若迁移前字段中的非数值型字段为空值,则将所述迁移前字段中的非数值型字段转换为空格;

相应的,所述处理模块,还用于:

若迁移后字段中的非数值型字段为空值,则将所述迁移后字段中的非数值型字段转换为空格。

在第二方面的又一种可能设计中,所述获取模块,还用于:

获取所述第一数据库中的迁移前的数据表和所述第二数据库中的迁移后的数据表。

第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序指令,所述处理器执行所述计算机程序指令时用于实现第一方面以及各可能设计提供的方法。

第四方面,本申请实施例可提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面以及各可能设计提供的方法。

第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面以及各可能设计提供的方法。

本申请实施例提供的数据一致性的校验方法、装置、设备、介质及程序产品,该方法包括:电子设备从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段,之后针对迁移前的数据表,将每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理,得到多个迁移前字符串,将多个迁移前字符串按照预设参数的顺序存储至第一数据文件,紧接着针对迁移后的数据表,将每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理,得到多个迁移后字符串,将多个迁移后字符串按照预设参数的顺序存储至第二数据文件,最后对第一数据文件和第二数据文件按存储顺序进行校验,获取第一校验结果。电子设备通过对迁移前字符串和迁移后字符串进行排序,并将排序好的迁移前字符串和排序好的迁移后字符串分别存储至第一数据文件和第二数据文件中,对第一数据文件和第二数据文件按存储顺序进行校验,利用了数据库本身的索引、主键等技术,更高效的对迁移前字符串和迁移后字符串进行排序,从而在校验的过程中能够快速定位出不一致的迁移前字符串和迁移后字符串,有效的减少了校验时间,提高了校验效率。

附图说明

图1为本申请实施例提供的数据一致性的校验方法的一种应用场景示意图;

图2为本申请实施例提供的数据一致性的校验方法实施例一的流程示意图;

图3为本申请实施例提供的数据一致性的校验方法实施例二的流程示意图;

图4为本申请实施例提供的数据一致性的校验装置的结构示意图;

图5为本申请实施例提供的电子设备的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在介绍本申请的实施例之前,首先对本申请实施例的应用场景进行解释:

数据库中以数据表为组织单位存储数据,每个数据表中有至少一行数据,每行数据中有至少一个字段,每个字段有对应的数据类型,如数值型字段,日期型字段,时间型字段等。数据库可以接收其他电子设备发送的数据信息,并根据数据信息的数据类型存储到相应的数据表中。不同的数据库之间为了传输数据,需要在不同的数据库间迁移数据表,以便于不同的数据库可以共享数据表中的数据信息。然而,如果迁移过程中对数据表处理不当,很有可能会出现漏迁、误迁以及网络传输丢失数据等错误,使得迁移后的数据表与迁移前的数据表不一致。若迁移后的数据表与迁移前的数据表不一致,会导致不同数据库间从同一数据表中获取的数据信息不同,从而使得对数据信息进行处理时得到的处理结果不一致,处理结果的准确度较差,因此对迁移前后的数据表的一致性进行校验是非常有必要的。

目前,对迁移前后的数据表的一致性进行校验主要是设定一个由不同大小的分组因子组成的分组因子集,将迁移前的数据表按照分组因子集分成不同的组,并将每个组的迁移前数据分割成定长和剩余部分,将每个组打标签。之后对每组的迁移前数据进行MD5加密,获取迁移前的加密字符串,并将迁移前的加密字符串保存到迁移前日志文件。

其中,MD5是一种信息摘要算法,它可以从一个字符串或一个文件中按照一定规则生成一个特殊的字符串,并且由于一个文件的MD5摘要是固定的,因此经常被用于验证数据有没被篡改。

之后,将迁移后的数据表按照分组因子集分成不同的组,并将每个组的迁移后数据分割成定长和剩余部分,将每个组打标签。之后对每组的迁移后数据进行MD5加密,获取迁移后的加密字符串,并将迁移后的加密字符串保存到迁移后日志文件。

最后,对比迁移前日志文件和迁移后日志文件,若迁移前和迁移后的加密字符串一样,则代表迁移前和迁移后的该组数据一致;若迁移前和迁移后的加密字符串不一样,则代表迁移前和迁移后的该组数据不一致,从而得到对比结果报告。根据对比结果报告为失败(英文:False)的组的定长部分及标签,定位到迁移后表格中的相应位置,从而对相应位置的数据进行数据修正或重传。

然而,在数据量较大时,需要确定每组迁移后的数据对应的迁移前的数据所在的组,并对两组进行对比校验,耗费时间较长,校验效率较低。

针对上述问题,本申请的发明构思如下:目前,需要根据迁移前每个组的标签确定对应的迁移后的组的标签,从而将对应的迁移前的加密字符串和迁移后的加密字符串进行对比校验,耗费时间较长。基于此,发明人发现,如果能按照一定顺序对迁移前的加密字符串进行排序,并按照相同的顺序对迁移后的加密字符串进行排序,就可以直接将排好序的迁移前的加密字符串和迁移后的加密字符串进行逐个对比校验,就能解决现有技术中校验时间较长的问题,从而提高校验的效率。

示例性的,本申请实施例提供的数据一致性的校验方法可以应用于图1所示的一种应用场景示意图中。图1为本申请实施例提供的数据一致性的校验方法的一种应用场景示意图,用以解决上述技术问题。如图1所示,该应用场景可以包括:终端设备、第一数据库和第二数据库。

示例性的,在图1所示的应用场景中,终端设备可以从第一数据库中获取迁移前的数据表,还可以从第二数据库中获取迁移后的数据表,以便于后续对迁移前的数据表和迁移后的数据表进行一致性分析。

在本实施例中,终端设备可以基于获取的迁移前的数据表和迁移后的数据表,执行数据一致性的校验方法的程序代码,确定出表示迁移前的数据表与迁移后的数据表是否一致的第一校验结果,还可以确定出表示迁移前的数据表与迁移后的数据表是否一致的第二校验结果。

需要说明的是,附图1仅是本申请实施例提供的一种应用场景的示意图,本申请实施例不对图1中包括的设备进行限定,也不对图1中设备之间的位置关系进行限定,例如,在图1中,第一数据库和第二数据库相对终端设备可以是外部存储器,在其它情况下,也可以将第一数据库和/或第二数据库置于终端设备中。

在实际应用中,由于服务器也是具有数据处理能力的处理设备,因而,上述图1所示应用场景中的终端设备也可以服务器实现。在本申请的实施例中,可以将终端设备和用于数据处理的服务器统称为电子设备。

下面,通过具体实施例对本申请的技术方案进行详细说明。

需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图2为本申请实施例提供的数据一致性的校验方法实施例一的流程示意图。如图2所示,该数据一致性的校验方法可以包括如下步骤:

S101:从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段。

在本步骤中,当数据表由第一数据库迁移到第二数据库时,此时第一数据库中的数据表为迁移前的数据表,第二数据库中的数据表为迁移后的数据表。在数据表中含有多行数据时,电子设备需要获取每一行数据中的多个字段,以便于后续对每一行数据进行逐一处理。

其中,迁移前的数据表存储在第一数据库,迁移后的数据表存储在第二数据库。

在一种具体的实施方式中,可以通过以下方式从迁移前的数据表中获取每一行的多个迁移前字段。电子设备可以使用数据库结构化查询语言(Structured QueryLanguage,SQL)建立迁移前字段信息临时表,获取迁移前的数据表中每个字段的字段信息,并将每个字段以及每个字段的字段信息储存至迁移前字段信息临时表中。之后,电子设备逐行从迁移前字段信息临时表中获取每一行的多个迁移前字段。

其中,SQL是一种特殊目的的编程语言,是一种数据库查询和程序涉及语言,用于存取数据以及查询、更新和管理关系型数据库系统。

可选的,字段信息包括:字段的数据类型、该字段是否为主键以及该字段是否可以存储空值等。

可选的,字段的数据类型分为数值型和非数值型,非数值型字段还包括日期型字段,时间型字段等。

在该种实施方式下,若此时第一数据库中有多个迁移前的数据表需要进行校验,电子设备还可以查询第一数据库中的迁移前系统信息表,从迁移前系统信息表中找出所有迁移前的数据表的表名,并将迁移前的数据表的表名储存至迁移前字段信息临时表中。

进一步的,电子设备还需要将每个迁移前的数据表中的每个字段以及每个字段的字段信息,储存至迁移前字段信息临时表中该迁移前的数据表的表名对应的位置中。

可选的,电子设备从迁移后的数据表中获取每一行的多个迁移后字段的步骤与从迁移前的数据表中获取每一行的多个迁移前字段一致,可以参考上述过程,在此不再赘述。

S102:针对迁移前的数据表,将每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理,得到多个迁移前字符串,将多个迁移前字符串按照预设参数的顺序存储至第一数据文件。

在本步骤中,由于每一行数据中可能会包含多个字段,如果直接将迁移前的数据表中每一行的数据与迁移后的数据表中每一行的数据进行对比,会耗费大量的时间。电子设备可以对迁移前的数据表中每一行的多个迁移前字段进行处理,获取多个长度一致的迁移前字符串,能够有效提高对比校验的效率。

其中,字段的数据类型分为数值型和非数值型,非数值型字段还包括日期型字段,时间型字段等。

可选的,若迁移前字段中的非数值型字段超过预设长度,则将迁移前字段中的非数值型字段按照预设长度进行截取处理,使得截取后的非数值型字段长度与预设长度一致。

在一种可实现的方式中,由于第一数据库和第二数据库可能对日期型字段和时间型字段的存储形式不同,因此,电子设备可以利用数据库类型转换函数对迁移前字段中的时间型字段和日期型字段转换为统一格式的时间字段和日期字段。

示例性的,统一的时间字段格式可以为QQWWEE,统一的日期字段格式可以为YYYYMMDD,时间字段和日期字段还可以包括其他的统一格式,可以根据实际需求进行设置,本申请实施例对此不进行具体限制。

可选的,由于第一数据库和第二数据库可能对空值的存储形式不同,因此若迁移前字段中的非数值型字段为空值,则电子设备可以将迁移前字段中为空值的非数值型字段转换为空格。

进一步的,电子设备可以将每一行的多个迁移前字段中的非数值型字段之间使用统一的连接符进行拼接。

可选的,由于第一数据库和第二数据库的编码类型可能不同,需要选择相同的编码方式对其进行数据处理。电子设备可以将多个迁移前字段拼接的字符串转换成预设格式,如可以转换为UTF8格式。

在此基础上,电子设备需要将转换成预设格式的多个迁移前字段拼接的字符串调用MD5函数进行加密,得到多个迁移前字符串。

可选的,每个迁移前字符串的位数为32位。

进一步的,电子设备获取多个迁移前字符串后,需要将多个迁移前字符串按照预设参数的顺序存储至第一数据文件。

其中,预设参数包括数据表的主键或者索引。

在一种可实现的方式中,电子设备可以根据迁移前的数据表中的主键的字段升序的顺序对多个迁移前字符串进行排序,将排好序的迁移前字符串存储至第一数据文件。电子设备还可以根据迁移前的数据表中的索引的顺序对多个迁移前字符串进行排序。

可选的,当迁移前的数据表中同时存在主键和索引时,则根据主键的字段升序的顺序对多个迁移前字符串进行排序。

在一种可实现的方式中,若迁移前的数据表中既不存在主键,也不存在索引时,可以根据预设的规则对迁移前字符串进行排序。

示例性的,预设的规则可以是根据迁移前的数据表中第一列字段升序的顺序对多个迁移前字符串进行排序,可以是根据迁移前的数据表中第一列字段降序的顺序对多个迁移前字符串进行排序,还可以是根据迁移前的数据表中最后一列字段降序/升序的顺序对多个迁移前字符串进行排序,预设的规则可以根据实际情况进行制定,本申请实施例对此不进行具体限制。

在该可实现的方式下,电子设备还可以对排好序的迁移前字符串增加自增顺序列标识,其中自增顺序列标识是迁移前字符串的唯一标识。

S103:针对迁移后的数据表,将每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理,得到多个迁移后字符串,将多个迁移后字符串按照预设参数的顺序存储至第二数据文件。

在本步骤中,本步骤的实现过程与S102的实现过程一致,可以参考S102的具体实现过程,在此不再赘述。

其中,若迁移后字段中的非数值型字段超过预设长度,电子设备则对迁移后字段中的非数值型字段按照预设长度进行截取处理。

其中,若迁移后字段中的非数值型字段为空值,电子设备则将迁移后字段中的非数值型字段转换为空格。

其中,电子设备可以对每一行的多个迁移前字段中的非数值型字段进行拼接处理,并将多个迁移后字段拼接的字符串进行转换成预设格式。

应理解,步骤S102和步骤S103没有执行的先后顺序要求,也就是说可以先执行步骤S102再执行步骤S103,也可以先执行步骤S103再执行步骤S102,可以根据实际情况选择执行顺序,本申请实施例对此不进行具体限制。

S104:对第一数据文件和第二数据文件按存储顺序进行校验,获取第一校验结果。

在一种具体的实施方式中,电子设备可以利用diff函数对第一数据文件和第二数据文件按存储顺序进行逐行校验,若迁移前字符串与迁移后字符串不一致,则获取不一致的迁移前字符串与迁移后字符串,并生成第一校验结果,其中第一校验结果为对比不一致;若迁移前字符串与迁移后字符串一致,则生成第一校验结果,其中第一校验结果为对比一致。

其中,第一校验结果用于指示迁移前的数据表与迁移后的数据表是否一致。

可选的,电子设备还可以根据自增顺序列标识对第一数据文件和第二数据文件进行校验。

本申请实施例提供的数据一致性的校验方法,电子设备从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段,之后针对迁移前的数据表,将每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理,得到多个迁移前字符串,将多个迁移前字符串按照预设参数的顺序存储至第一数据文件,紧接着针对迁移后的数据表,将每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理,得到多个迁移后字符串,将多个迁移后字符串按照预设参数的顺序存储至第二数据文件,最后对第一数据文件和第二数据文件按存储顺序进行校验,获取第一校验结果。电子设备通过对迁移前字符串和迁移后字符串进行排序,并将排序好的迁移前字符串和排序好的迁移后字符串分别存储至第一数据文件和第二数据文件中,对第一数据文件和第二数据文件按存储顺序进行校验,利用了数据库本身的索引、主键等技术,更高效的对迁移前字符串和迁移后字符串进行排序,从而在校验的过程中能准快速定位出不一致的迁移前字符串和迁移后字符串,有效的减少了校验时间,提高了校验效率。

在上述任一实施例的基础上,图3为本申请实施例提供的数据一致性的校验方法实施例二的流程示意图。如图3所示,该数据一致性的校验方法可以包括如下步骤:

S201:将迁移前的数据表中的数值型字段进行求和,得到迁移前数值。

在本步骤中,电子设备在实施例二中对迁移前的数据表中迁移前字段中的非数值型字段和迁移后的数据表中迁移后字段中的非数值型字段进行了处理,由于数据表中可能还包括数值型字段,为了进一步提高校验效率,电子设备还可以对数值型字段进行单独处理,以便于后续对其进行对比校验。

在一种具体的实施方式中,电子设备可以使用数据库SUM函数对迁移前的数据表中的数值型字段进行求和,获取迁移前数值。同时,电子设备可以设置一个迁移前变量,将获取的迁移前数值存储至迁移前变量中。

S202:将迁移后的数据表中的数值型字段进行求和,得到迁移后数值。

在本步骤中,本步骤的实现过程与S201的实现过程一致,可以参考S201的具体实现过程,在此不再赘述。

S203:将迁移前数值与迁移后数值进行对比校验,获取第二校验结果。

在本步骤中,电子设备获取了迁移前数值和迁移后数值后,可以对比二者是否相等,若二者相等,则代表迁移前的数据表与迁移后的数据表一致,若二者不相等,则代表迁移前的数据表与迁移后的数据表不一致,并生成第二校验结果。

其中,第二校验结果用于指示迁移前的数据表与迁移后的数据表是否一致。

在一种可能的实现方式中,由于第一数据库和第二数据库中浮点数值类型精度上存在差异,因此电子设备可以预先设置一个误差范围。电子设备在对迁移前数值与迁移后数值进行对比时,若二者的差值在预设的误差范围内,则认为迁移前的数据表和迁移后的数据表一致,同样,若二者的差值不在预设的误差范围内,则认为迁移前的数据表和迁移后的数据表不一致。

本申请实施例提供的数据一致性的校验方法,电子设备将迁移前的数据表中的数值型字段进行求和,得到迁移前数值,之后将迁移后的数据表中的数值型字段进行求和,得到迁移后数值,最后将迁移前数值与迁移后数值进行对比校验,获取第二校验结果,该技术方案中,电子设备通过分别对迁移后的数据表中的数值型字段和迁移前数值与迁移后数值求和,从而缩短对迁移前的数据表和迁移后的数据表进行校验的时间,提高校验效率。

在上述任一实施例的基础上,在S101之前,数据一致性的校验方法还可以包括以下步骤:

获取第一数据库中的迁移前的数据表和第二数据库中的迁移后的数据表。

进一步的,由于不同的数据表中数据量的大小差异较大,有的数据表中只包括几百行数据,有的数据表中可能包括上千万行数据,若对所有数据表都执行上述实施例中的数据一致性的校验方法,可能会消耗大量的资源,校验的效率较低。因此,电子设备在获取迁移前的数据表和迁移后的数据表后,还可以对迁移前的数据表和迁移后的数据表进行预处理,以便于进一步提高后续校验的效率。

其中,可以将数据表中数据量与预设数据量进行对比,若数据表中数据量小于或等于预设数据量,则不对该数据表格进行预处理;若数据表中数据量大于预设数据量,则对该数据表格进行下面的预处理。

在一种可能的实现方式中,可以利用蓄水池算法对迁移前的数据表的每行数据进行随机抽样。电子设备可以建立一个临时数据表作为蓄水池,将迁移前的数据表中预设行数(如k行)的数据存储至临时数据表中。之后,电子设备使用游标从迁移前的数据表中第k+1行数据开始,以k/n的概率来决定该行数据是否被替换到临时数据表中,k为预设行数,n为迁移前的数据表的行数。若该行数据需要被替换,则从临时数据表中随机选取一行数据被该行数据替换。遍历迁移前的数据表中的每一行的数据,在对迁移前的数据表所有行数据处理完之后,临时数据表即为预处理后的迁移前的数据表。

其中,由于迁移前的数据表中每行的字段量较大,为了提高预处理效率,在使用蓄水池算法进行随机抽样时,电子设备可以使用迁移前的数据表中的主键或唯一索引进行抽样,当该行数据被抽中后,可以根据该行的主键或索引获取该行的完整数据。

进一步的,电子设备获取预处理后的迁移前的数据表后,可以根据该预处理后的迁移前的数据表中每行的数据,获取迁移后的数据表中对应的数据,根据获取到的数据生成预处理后的迁移后的数据表。

在一种可能的实现方式中,电子设备获取预处理后的迁移前的数据表后,可以根据预处理后的迁移前的数据表的主键对应的字段,获取该主键对应的字段在迁移后的数据表中对应的字段,并根据获取的字段获取该字段所在行的完整数据。

应理解的,电子设备获取预处理后的迁移前的数据表和预处理后的迁移后的数据表后,可以将预处理后的迁移前的数据表和预处理后的迁移后的数据表作为迁移前的数据表和迁移后的数据表执行实施例中的S101至S104的步骤。

本申请提供的数据一致性的校验方法,通过使用蓄水池算法对迁移前的数据表和迁移后的数据表进行预处理,可以有效减少后续校验的数据量,在保证校验准确度的基础上节约了计算资源,减少了校验时间,提高了校验效率。

在上述任一实施例的基础上,数据一致性的校验方法还可以包括以下步骤:

电子设备还可以根据迁移前的数据表的表结构,生成该迁移前的数据表的专属SQL语句,使用该语句可以完成对迁移前的数据表的拼接、加密以及排序处理。电子设备可以根据迁移前的数据表的表结构,生成查询头部分、字段部分、查询尾部分和排序部分,之后将这四个部分拼接成该迁移前的数据表的专属SQL语句,以便于后续执行该专属SQL语句,从而完成对迁移前的数据表和迁移后的数据表中字段的处理。

可选的,查询头部分包括数据库第一关键字(如SELECT)和使用的MD5函数名,第一关键词代表专属SQL语句从此处开始,查询头部分可以用于对迁移前字段拼接的字符串进行加密处理。

可选的,字段部分包括迁移前的数据表的字段和字段的数据类型,可以用于对每一行的多个迁移后字段中的非数值型字段进行拼接。

可选的,查询尾部分包括迁移前的数据表的表名。

可选的,排序部分包括数据库第二关键字(如ORDER)和表的主键或索引字段,第二关键字代表专属SQL语句在此处结束,排序部分可以用于实现步骤S103。

其中,电子设备还可以生成迁移后的数据表的专属SQL语句,具体过程与生成迁移前的数据表的专属SQL语句的过程一致,在此不再赘述。

本申请提供的数据一致性的校验方法,通过使用迁移前的数据表的专属SQL语句对迁移前的数据表进行处理,以及使用迁移后的数据表的专属SQL语句对迁移后的数据表进行处理,从而获取第一数据文件和第二数据文件,为后续对第一数据文件和第二数据文件进行校验奠定了基础。

综上所述,本申请实施例提供的数据一致性的校验方法,有益效果可以总结为如下方面:利用了数据库本身的索引、主键等技术,更高效的对加密前的数据进行排序,从而在校验的过程中能准快速定位出不一致的迁移前字符串和迁移后字符串,有效的减少了校验时间,有效的提高了校验效率。分别对迁移后的数据表中的数值型字段和迁移前数值与迁移后数值求和,从而缩短对迁移前的数据表和迁移后的数据表进行校验的时间,提高校验效率。进一步的,通过使用蓄水池算法对迁移前的数据表和迁移后的数据表进行预处理,可以有效减少后续校验的数据量,在保证校验准确度的基础上节约了计算资源,减少了校验时间,提高了校验效率。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图4为本申请实施例提供的数据一致性的校验装置的结构示意图。如图4所示,该数据一致性的校验装置包括:

获取模块41,用于从迁移前的数据表中获取每一行的多个迁移前字段,并从迁移后的数据表中获取每一行的多个迁移后字段,迁移前的数据表存储在第一数据库,迁移后的数据表存储在第二数据库;

处理模块42,用于针对迁移前的数据表,将每一行的多个迁移前字段中的非数值型字段进行拼接和加密处理,得到多个迁移前字符串,将多个迁移前字符串按照预设参数的顺序存储至第一数据文件;

处理模块42,还用于针对迁移后的数据表,将每一行的多个迁移后字段中的非数值型字段进行拼接和加密处理,得到多个迁移后字符串,将多个迁移后字符串按照预设参数的顺序存储至第二数据文件;

处理模块42,还用于对第一数据文件和第二数据文件按存储顺序进行校验,获取第一校验结果,第一校验结果用于指示迁移前的数据表与迁移后的数据表是否一致;

其中,预设参数包括数据表的主键或者索引。

在本申请实施例的一种可能设计中,处理模块42,还用于:

将迁移前的数据表中的数值型字段进行求和,得到迁移前数值;

将迁移后的数据表中的数值型字段进行求和,得到迁移后数值;

将迁移前数值与迁移后数值进行对比校验,获取第二校验结果,第二校验结果用于指示迁移前的数据表与迁移后的数据表是否一致。

在本申请实施例的另一种可能设计中,处理模块42,还用于:

将多个迁移前字段拼接的字符串进行转换成预设格式;

相应的,处理模块42,还用于:

将多个迁移后字段拼接的字符串进行转换成预设格式。

在本申请实施例的再一种可能设计中,处理模块42,还用于:

若迁移前字段中的非数值型字段超过预设长度,则对迁移前字段中的非数值型字段按照预设长度进行截取处理;

相应的,处理模块42,还用于:

若迁移后字段中的非数值型字段超过预设长度,则对迁移后字段中的非数值型字段按照预设长度进行截取处理。

在本申请实施例的又一种可能设计中,处理模块42,还用于:

若迁移前字段中的非数值型字段为空值,则将迁移前字段中的非数值型字段转换为空格;

相应的,处理模块42,还用于:

若迁移后字段中的非数值型字段为空值,则将迁移后字段中的非数值型字段转换为空格。

在本申请实施例的又一种可能设计中,获取模块41,还用于:

获取第一数据库中的迁移前的数据表和第二数据库中的迁移后的数据表。

本申请实施例提供的数据一致性的校验装置,可用于执行上述任一实施例中的数据一致性的校验方法,其实现原理和技术效果类似,在此不再赘述。

需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外,这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。

图5为本申请实施例提供的电子设备的结构示意图。如图5所示,该电子设备可以包括:处理器51、存储器52及存储在所述存储器52上并可在处理器51上运行的计算机程序指令,所述处理器51执行所述计算机程序指令时实现前述任一实施例提供的数据一致性的校验方法。

可选的,电子设备还可以包括与其他设备进行交互的接口。

可选的,该电子设备的上述各个器件之间可以通过系统总线连接。

存储器52可以是单独的存储单元,也可以是集成在处理器中的存储单元。处理器的数量为一个或者多个。

应理解,处理器51可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器可能包括随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。

实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(read-only memory,ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppy disk)、光盘(英文:optical disc)及其任意组合。

本申请实施例提供的电子设备,可以实现于终端设备和服务器,可用于执行上述任一方法实施例提供的数据一致性的校验方法,其实现原理和技术效果类似,在此不再赘述。

本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述数据一致性的校验方法。

上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。

可选的,将可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。

本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质中读取该计算机程序,所述至少一个处理器执行所述计算机程序时可实现上述数据一致性的校验方法。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

相关技术
  • 数据一致性的校验方法、装置、设备、介质及程序产品
  • 数据一致性校验方法、装置、电子设备和可读存储介质
技术分类

06120113270263