一种数据同步方法和装置
技术领域
本申请涉及数据处理领域,尤其涉及一种数据同步方法和装置。
背景技术
现有的机构中,当不同机构之间进行数据交互后,往往需要进行数据同步,以保证不同机构之间的数据一致性。例如,支付机构在与银行进行数据交互后,银行可以将交互过程中产生的账单数据同步至支付机构,以保证支付机构中记录的账单数据与银行记录的账单数据一致。
通常,机构之间在进行数据同步时,以第一机构和第二机构为例,第一机构可以与第二机构进行多次数据同步,每次数据同步时,第一机构可以将本次同步的全量数据发送到第二机构,第二机构在接收到全量数据后,需要确定全量数据中哪些数据属于增量数据,并基于增量数据实现数据同步。然而,在实际应用中,由于全量数据通常比较多,因此,很难确定全量数据中哪些数据属于增量数据,导致不易实现数据同步。
发明内容
本申请实施例提供一种数据同步方法和装置,用于解决机构之间在基于全量数据中的增量数据进行数据同步时,由于很难确定全量数据中哪些数据属于增量数据,导致不易实现数据同步的问题。
为解决上述技术问题,本申请实施例是这样实现的:
第一方面,提出一种数据同步方法,包括:
接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
第二方面,提出一种数据同步装置,包括:
接收单元,接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取单元,获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
确定单元,将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
同步单元,将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
第三方面,提出一种电子设备,该电子设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:
接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
第四方面,提出一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:
接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请实施例提供的技术方案,一个机构在接收到来自另一机构待同步的全量数据后,在进行数据同步时,可以获取全量数据中多条数据记录对应的多个第一标识值,然后将多个第一标识值依次插入包括多个第二标识值的幂等表中,其中,一个第一标识值用于唯一标识全量数据中的一条数据记录,一个第二标识值用于唯一标识需要同步到的目标数据中的一条数据记录,这样,可以利用幂等表中数据的唯一性,即不允许相同的数值反复插入,确定成功插入幂等表的至少一个目标特征值,该至少一个目标特征值对应的数据记录即为全量数据中的增量数据,将这些增量数据同步到目标数据中,可以实现数据同步。由于可以利用幂等表中数据的唯一性,快速确定全量数据中的增量数据,因此,可以方便地基于增量数据实现数据同步。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一个实施例数据同步方法的流程示意图;
图2是本申请的一个实施例数据同步方法的流程示意图;
图3是本申请的一个实施例电子设备的结构示意图;
图4是本申请的一个实施例数据同步装置的结构示意图。
具体实施方式
在现有技术中,机构之间在进行数据同步时,可以进行多次数据同步。以第一机构和第二机构为例,第一机构在每次进行数据同步时,可以将本次待同步的全量数据(包括上次同步时发送给第二机构的数据以及本次同步时的增量数据)发送给第二机构,第二机构在接收到全量数据后,可以确定全量数据中哪些数据属于增量数据,并基于增量数据实现数据同步。其中,第一机构每次发送给第二机构的全量数据中均可以包括多条数据记录,全量数据的形式可以是文件、数据表等。
基于上述数据同步的具体过程可知,如何确定全量数据中的增量数据至关重要。
现有技术中,第二机构在确定全量数据中的增量数据时,通常会将全量数据中的每条数据记录与第二机构中原有的目标数据中的每条数据记录进行逐一对比,基于对比结果确定增量数据。以第一机构为机构A,第二机构为机构B为例,具体步骤如下:
当机构B第一次接收到来自机构A的全量数据1时,首先对全量数据1进行版本标记,并保存到中间表中,然后确定全量数据1中的增量数据,由于本次数据同步是机构A和机构B之间的第一次数据同步,因此可以将全量数据1作为增量数据,并将全量数据1同步到机构B中,实现第一次数据同步,其中,将全量数据1同步到机构B中时,可以将全量数据1存储到机构B的业务数据表中;
当机构B第二次接收到来自机构A的全量数据2时,根据版本标记,可以从中间表中捞出第一次接收到的全量数据1(此时,全量数据1可以视为机构B中的目标数据),并将全量数据2和全量数据1进行逐一对比,找出全量数据2中的增量数据,并将增量数据存储到机构B的业务数据表中,实现第二次数据同步,此外,为了便于后续数据同步,还需要对全量数据2进行版本标记并保存到中间表中;
……;
以此类推,当机构B第N次接收到来自机构A的全量数据N时,根据版本标记,从中间表中捞出第N-1次接收到的全量数据N-1,并将全量数据N和全量数据N-1进行逐一对比,找出全量数据N中的增量数据,并将增量数据存储到机构B的业务数据表中,实现第N次数据同步,此外,还需要将全量数据N保存到中间表中。
基于上述步骤可知,机构B在每次进行数据同步时,都需要按照版本标记将来自机构A的全量数据存储到中间表中,并采用逐一对比的方法确定全量数据中的增量数据,这样,不仅会占用大量的存储空间,导致存储资源的浪费,而且需要花费大量的时间找出全量数据中的增量数据,导致不易实现数据同步,进而影响数据同步的效率。
为了解决上述技术问题,本申请实施例提供一种数据同步方法和装置,该方法包括:接收待同步的全量数据,所述全量数据中包括多条数据记录;获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
本申请实施例提供的技术方案,一个机构在接收到来自另一机构的全量数据后,在进行数据同步时,由于可以利用幂等表中数据的唯一性,快速确定全量数据中的增量数据,因此,可以方便地基于增量数据实现数据同步,同时避免存储资源的浪费。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请实施例的应用场景可以是不同机构之间进行数据同步,也可以是不同的其他对象之间进行数据同步,这里不做具体限定,为了便于理解和描述,本申请的以下实施例可以以不同机构之间的数据同步为例进行说明。
不同机构之间在进行数据同步时,可以进行多次数据同步,每次数据同步时,一个机构可以接收来自另一机构的全量数据,该全量数据可以包括上次数据同步时的全量数据以及本次同步时的增量数据,机构在接收到全量数据后,可以基于本申请实施例提供的技术方案快速地确定全量数据中哪些数据属于增量数据,从而可以方便地基于增量数据实现数据同步。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1是本申请的一个实施例数据同步方法的流程示意图。所述数据同步方法如下所述。
S102:接收待同步的全量数据。
在S102中,不同机构之间进行数据同步时,以第一机构和第二机构进行一次数据同步为例,第一机构可以将上次同步时发送给第二机构的全量数据以及本次同步时增量的数据,作为待同步的全量数据发送给第二机构,第二机构可以接收该全量数据。
本实施例中,全量数据中可以包括多条数据记录,全量数据的形式可以是文件、数据表或消息等。
在接收到待同步的全量数据后,可以执行S104。
S104:获取所述全量数据中多条数据记录对应的多个第一标识值。
在S104中,机构在接收到全量数据后,可以获取全量数据中多条数据记录对应的多个第一标识值,其中,一个第一标识值用于唯一标识全量数据中的一条数据记录,即全量数据中每条数据记录对应的第一标识值互不相同。
在获取全量数据中多条数据记录对应的多个第一标识值时,若全量数据中的多条数据记录均包括标识字段,标识字段用于标识全量数据中的多条数据记录,则可以直接获取全量数据中多条数据记录中的标识字段值,并将获取的多个标识字段值作为多个第一标识值。
若全量数据的多条数据记录中至少一条数据记录不包括标识字段,则将无法利用标识字段对每条数据记录进行标识,这样,在获取全量数据中的多条数据记录对应的多个第一标识值之前,需要为全量数据中的每条数据记录确定对应的第一标识值。
在确定全量数据中每条数据记录对应的第一标识值时,具体可以基于全量数据中每条数据记录的关键属性信息,按照预设算法确定每条数据记录对应的第一标识值,其中,一条数据记录的关键属性信息可以用于确定该条数据记录是否与其他数据记录相同。
例如,当数据记录为账单时,数据记录的关键属性信息可以包括账单所属的用户名、账单的交易时间,账单金额等,这些信息用于确定该数据记录是否与其他账单相同,即在确定该数据记录与其他账单是否相同时,可以将数据记录中的账单所属的用户名、账单的交易时间,账单金额等,与其他账单中的账单所属的用户名、账单的交易时间,账单金额等进行比较,基于比较结果确定数据记录与其他账单是否相同。
预设算法可以是MD5算法,也可以是其他能够基于不同的关键属性信息计算得到不同值的算法,这里不做具体限定。本实施例可以以MD5算法为例进行说明。
在按照预设算法确定全量数据中的每条数据记录对应的第一标识值时,具体可以包括以下步骤:
基于全量数据中每条数据记录的关键属性信息,按照MD5算法确定全量数据中每条数据记录的MD5值;
基于全量数据中每条数据记录的MD5值,确定全量数据中每条数据记录的第一标识值。
在计算全量数据中每条数据记录的MD5值时,可以通过遍历的方法,计算得到每条数据记录的MD5值。可选地,在得到每条数据记录的MD5值后,可以建立数据记录与MD5值之间的映射关系,得到映射关系表,映射关系表中包括MD5值以及与MD5值对应的数据记录。
在得到每条数据记录的MD5值后,在基于每条数据记录的MD5值确定每条数据记录对应的第一标识值时,考虑到全量数据中可能存在多条关键属性信息相同的数据记录(例如,某一用户的两笔或多笔转账记录中,转账金额相同,且均转账到同一目标用户),该多条数据记录的MD5值相同,因此,为了保证第一标识值的唯一性,针对全量数据中每条数据记录的MD5值,可以执行以下操作:
以全量数据中的一条数据记录(这里为了便于区分,可以由第一数据记录表示)为例,可以基于第一数据记录的MD5值,判断全量数据中是否存在与第一数据记录的MD5值相同的第二数据记录,其中,第二数据记录可以是一条,也可以是多条。
在判断是否存在第二数据记录时,可选地,可以基于上述记载的MD5值与数据记录之间的映射关系表,确定与同一个MD5值对应的数据记录的条数是否大于1,若大于1,则说明存在第二数据记录,若等于1,则说明不存在第二数据记录。
在判断是否存在第二数据记录后,若判断结果是全量数据中不存在第二数据记录,则可以说明第一数据记录的MD5针对第一数据记录而言具有唯一性,此时,可以直接将第一数据记录的MD5值作为第一数据记录对应的第一标识值。
若判断结果是全量数据中存在第二数据记录,则可以说明第一数据记录的MD5值针对第一数据记录而言不具有唯一性,因此,不能直接将第一数据记录的MD5值作为第一数据记录对应的第一标识值,此时,为了保证第一标识值的唯一性,可以对第一数据记录的MD5值以及第二数据记录的MD5值进行预设处理,即得到互不相同的处理结果。
在对第一数据记录的MD5值以及第二数据记录的MD5值进行预设处理时,可以采用拼接的方法在第一数据记录以及第二数据记录各自的MD5值中拼接不同的预设字符,得到包括不同预设字符的MD5值。其中,预设字符可以有多种形式,例如,下划线和字母的组合,上划线和数字的组合等,只要保证能够得到不同的处理结果即可。
例如,假设全量数据中数据记录1、数据记录2和数据记录3的MD5值相同,均为md51,那么,在对md51进行预设处理时,可以在3条数据记录的md51中分别拼接_1,_2,_3,得到md51_1,md51_2,md51_3,其中,md51_1为数据记录1对应的第一标识值,md51_2为数据记录2对应的第一标识值,md51_3为数据记录3对应的第一标识值。
此外,也可以在3条数据记录的md51中分别拼接-1,-2,-3,得到md51-1,md51-2,md51-3,或者,也可以在3条数据记录的md51中分别拼接_a,_b,_c,得到md51_a,md51_b,md51_c,等,只要保证最终得到不同的处理结果即可,这里不再一一举例说明。
在得到互不相同的处理结果后,可以将第一数据记录的MD5值对应的处理结果作为第一数据记录对应的第一标识值,以及将第二数据记录的MD5值对应的处理结果作为第二数据记录对应的第二标识值,这样,可以保证第一数据记录和第二数据记录各自对应的第一标识值具有唯一性。
至此,基于上述记载的方法可以确定得到全量数据中每条数据记录对应的第一标识值。
S106:将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值。
本实施例中,幂等表中可以包括多个第二标识值,该多个第二标识值与目标数据中的多条数据记录对应,一个第二标识值用于唯一标识目标数据中的一条数据记录。其中:
目标数据可以理解为接收到全量数据的机构中原有的数据。
多个第二标识值需要与多个第一标识值基于相同的方法确定得到。例如,若多个第一标识值为全量数据中多条数据记录中的标识字段值,则多个第二标识值为目标数据中多条数据记录中的标识字段值;若多个第一标识值是基于全量数据中每条数据记录的关键属性信息确定得到,则多个第二标识值基于目标数据中每条数据记录的关键属性信息确定得到。
本实施例中的幂等表具有以下属性:不允许相同的数值重复插入,即在将多个第一标识值依次插入幂等表中时,不允许与第二标识值相同的第一标识值插入。
这样,在将多个第一标识值依次插入幂等表时,利用幂等表的这种唯一性的特征,可以得到成功插入的至少一个目标标识值,该至少一个目标标识值与多个第二标识值不同,相应地,全量数据中与该至少一个目标标识值对应的数据记录为增量数据。
需要说明的是,当机构之间第一次进行数据同步时,以第二机构接收到来自第一机构的全量数量为例,可以认为第二机构中没有目标数据,相应地,也没有多个第二标识值,此时,在将全量数据中多条数据记录对应的多个第一标识值插入幂等表中时,可以认为幂等表中不包括任何数据,即幂等表中包括的多个第二标识值为空,多个第一标识值均与多个第二标识值不同。在后续进行第N(N为大于或等于2的整数)次数据同步时,幂等表中的多个第二标识值即为第N-1次同步时在幂等表中插入多个第一标识值后,幂等表中包括的多个标识值。
例如,第一机构和第二机构在第一次进行数据同步时,第二机构接收到第一机构的全量数据1后,在将全量数据1中多条数据记录对应的多个第一标识值A1至An插入幂等表时,幂等表中的包括的数据为空,多个第一标识值A1至An均可以成功插入幂等表中,得到包括A1至An的幂等表,其中,A1至An可以作为第二次数据同步时的多个第二标识值;
在第二次进行数据同步时,第二机构接收到第一机构的全量数据2后,在将全量数据2中多条数据记录对应的第一标识值B1至Bn插入幂等表时,幂等表中的多个第二标识值即为A1至An,B1至Bn中不同于A1至An的b1至bn可以成功插入幂等表中,得到包括b1至bn以及A1至An的幂等表,其中,b1至bn以及A1至An可以作为第三次数据同步时的多个第二标识值;
……,
以此类推,可以将第N-1次同步时在幂等表中插入至少一个第一标识值后幂等表中包括的多个标识值,作为第N次同步时的多个第二标识值。
在S106中,在确定成功插入幂等表的至少一个目标标识值后,可以执行S108。
S108:将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
在S108中,可以将全量数据中与至少一个目标标识值对应的数据记录作为增量数据同步至目标数据中,进而实现数据同步。
可选地,在一种实现方式中,如果目标数据中的多条数据记录按照多个第二标识值对应存储在业务表中,那么,在将全量数据中与至少一个目标标识值对应的数据记录同步至目标数据中时,可以将这些数据记录按照目标标识值对应存储在该业务表中。
需要说明的是,针对未成功插入幂等表中的第一标识值,由于这些第一标识值对应的数据记录不是增量数据,因此,可以将这些第一标识值对应的数据记录丢弃,不进行数据同步。
为了便于理解整个技术方案,可以参见图2。图2是本申请的一个实施例数据同步方法的流程示意图。本实施例以第一机构和第二机构进行数据同步为例进行说明,其中,第二机构接收第一机构的全量数据,该全量数据中至少一条数据记录不包括标识字段。
图2所示实施例具体可以包括如下步骤:
S201:接收来自第一机构的待同步的全量数据。
该全量数据中可以包括多条数据记录。
S202:基于全量数据中每条数据记录的关键属性信息,确定每条数据记录的MD5值。
应理解,在其他实现方式中,还可以采用其他能够基于不同的关键属性信息计算得到不同值的算法,这里以MD5算法为例进行说明。
S203:针对第一数据记录的MD5值,判断全量数据中是否存在第二数据记录,第二数据记录的MD5值与第一数据记录的MD5值相同。
第一数据记录为全量数据中的一条数据记录,第二数据记录的条数可以是一条,也可以是多条。
若全量数据中不存在第二数据记录,则可以说明第一数据记录的MD5针对第一数据记录而言是唯一的,此时可以执行S204;若全量数据中存在第二数据记录,则可以说明第一数据记录的MD5针对第一数据记录而言不是唯一的,此时可以执行S205。
S204:将第一数据记录的MD5值确定为第一数据记录对应的第一标识值。
在执行S204后,可以执行S207。
S205:在第一数据记录以及第二数据记录各自的MD5值中拼接不同的预设字符,得到互不相同的处理结果。
预设字符的具体形式可以包括多种,这里不做具体限定,只要保证得到的处理结果不同即可。
应理解,这里除了对第一数据记录以及第二数据记录各自的MD5值进行拼接外,还可以采用其他处理方法,只要可以得到互不相同的处理结果即可,这里不再一一举例说明。
S206:将第一数据记录的MD5值对应的处理结果作为第一数据记录对应的第一标识值。
此外,还可以将对第二数据记录的MD5值的处理结作为第二数据记录对应的第二标识值。
至此,基于上述S201至S206可以得到全量数据中每条数据记录对应的第一标识值。
S207:获取与全量数据中的多条数据记录对应的多个第一标识值。
S208:将多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值。
幂等表中包括目标数据中多条数据记录对应的多个第二标识值,目标数据为本次数据同步时第二机构中原有的数据,一个第二标识值用于唯一标识目标数据中的一条数据记录,多个第二标识值和多个第一标识值基于相同的方法确定得到,幂等表不允许与第二标识值相同的第一标识值插入。
这样,利用幂等表的唯一性,可以得到不同于第二标识值的至少一个第一标识值,该至少一个第一标识值即为成功插入幂等表中的至少一个目标标识值。
S209:将全量数据中与至少一个目标特征值对应的数据记录存储到第二机构的业务表中。
本实施例中,目标数据中多条数据记录可以按照多个第二标识值对应存储在业务表中,这样,在将全量数据中与至少一个目标特征值对应的数据记录同步到第二机构中时,也可以将这些数据记录按照至少一个目标标识值对应存储在业务表中,实现数据同步。
以下将结合图2所示实施例,举例说明第一机构与第二机构之间的多次数据同步过程。
第一机构和第二机构在进行第一次数据同步时,第二机构接收到来自第一机构的全量数据1,假设全量数据1中包括3条数据记录,计算得到MD5值分别为:A,B,B,则对相同的MD5值进行拼接后,可以得到3条数据记录的MD5值为:A,B_1,B_2,这3个MD5值可以作为3条数据记录对应的第一标识值。
在获取到这3个第一标识值后,将3个第一标识值依次插入幂等表中,此时,由于是第一次数据同步,可以认为幂等表中包括的第二标识值为空,因此,3个第一标识值均可以成功插入幂等表中,可以说明全量数据1中的3条数据记录为增量数据,并将这3条数据记录存储到第二机构的业务表中。
第一机构和第二机构在进行第二次数据同步时,第二机构接收到来自第一机构的全量数据2,假设全量数据2中包括6条数据记录,这6条数据记录包括全量数据1中的3条数据记录以及本次新增的3条数据记录,计算得到MD5值分别为:A,C,B,D,B,B,则对相同的MD5值进行拼接后,可以得到6条数据记录的MD5值为:A,C,B_1,D,B_2,B_3,这6个MD5值可以作为6条数据记录对应的第一标识值。
在获取到这6个第一标识值后,将6个第一标识值依次插入幂等表中,由于当前幂等表中包括多个第二标识值为A,B_1,B_2,这3个第二标识值与当前第二机构中的3条数据记录一一对应,因此,6个第一标识值中的A,B_1,B_2将会插入失败,C,D,B_3将会插入成功,可以说明全量数据2中与C,D,B_3对应的3条数据记录为增量数据,并将该增量数据存储到第二机构的业务表中。
第一机构和第二机构在进行第N(N为大于2的整数)次数据同步时,可以按照上述记载的内容依次类推,将第N次的增量数据存储到第二机构的业务表中,实现数据同步。
本申请实施例提供的技术方案,一个机构在接收到来自另一机构待同步的全量数据后,在进行数据同步时,可以获取全量数据中多条数据记录对应的多个第一标识值,然后将多个第一标识值依次插入包括多个第二标识值的幂等表中,其中,一个第一标识值用于唯一标识全量数据中的一条数据记录,一个第二标识值用于唯一标识需要同步到的目标数据中的一条数据记录,这样,可以利用幂等表中数据的唯一性,即不允许相同的数值反复插入,确定成功插入幂等表的至少一个目标特征值,该至少一个目标特征值对应的数据记录即为全量数据中的增量数据,将这些增量数据同步到目标数据中,可以实现数据同步。由于可以利用幂等表中数据的唯一性,快速确定全量数据中的增量数据,因此,可以方便地基于增量数据实现数据同步。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图3是本申请的一个实施例电子设备的结构示意图。请参考图3,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据同步装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
上述如本申请图3所示实施例揭示的数据同步装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1和图2的方法,并实现数据同步装置在图1和图2所示实施例中的功能,本申请实施例在此不再赘述。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1和图2所示实施例的方法,并具体用于执行以下操作:
接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
图4是本申请的一个实施例数据同步装置40的结构示意图。请参考图4,在一种软件实施方式中,所述数据同步装置40可包括:接收单元41、获取单元42、确定单元43和同步单元44,其中:
接收单元41,接收待同步的全量数据,所述全量数据中包括多条数据记录;
获取单元42,获取所述全量数据中多条数据记录对应的多个第一标识值,一个第一标识值用于唯一标识所述全量数据中的一条数据记录;
确定单元43,将所述多个第一标识值依次插入幂等表中,确定成功插入的至少一个目标标识值,所述幂等表中包括目标数据中多条数据记录对应的多个第二标识值,一个第二标识值用于唯一标识所述目标数据中的一条数据记录,所述多个第二标识值和所述多个第一标识值基于相同的方法确定得到,所述幂等表不允许与第二标识值相同的第一标识值插入;
同步单元44,将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中。
可选地,所述全量数据的多条数据记录中均包括标识字段,所述标识字段用于标识所述全量数据中的多条数据记录;
其中,所述获取单元42,获取所述全量数据中多条数据记录对应的多个第一标识值,包括:
获取所述全量数据中多条数据记录的标识字段值。
可选地,所述全量数据的至少一条数据记录中不包括标识字段,所述标识字段用于标识所述全量数据中的多条数据记录;
其中,所述获取单元42,在获取所述全量数据中多条数据记录对应的多个第一标识值之前,基于所述全量数据中每条数据记录的关键属性信息,按照预设算法确定所述多个第一标识值,一条数据记录的关键属性信息用于确定是否与其他数据记录相同。
可选地,所述获取单元42,基于所述全量数据中每条数据记录的关键属性信息,按照预设算法确定所述多个第一标识值,包括:
基于所述全量数据中每条数据记录的关键属性信息,按照MD5算法确定所述全量数据中每条数据记录的MD5值;
基于所述全量数据中每条数据记录的MD5值,确定所述全量数据中每条数据记录的第一标识值。
可选地,所述获取单元42,基于所述全量数据中每条数据记录的MD5值,确定所述全量数据中每条数据记录的第一标识值,包括:
针对所述全量数据中的一条第一数据记录,执行以下操作:
判断所述全量数据中是否存在第二数据记录,所述第二数据记录的MD5值与所述第一数据记录的MD5值相同;
若是,则对所述第一数据记录以及所述第二数据记录各自的MD5值进行预设处理,得到互不相同的处理结果;将所述第一数据记录的MD5值对应的处理结果确定为所述第一数据记录对应的第一标识值;
若否,则将所述第一数据记录的MD5值确定为所述第一数据记录对应的第一标识值。
可选地,所述获取单元42,对所述第一数据记录以及所述第二数据记录各自的MD5值进行预设处理,包括:
在所述第一数据记录以及所述第二数据记录各自的MD5值中拼接不同的预设字符。
可选地,所述目标数据中的多条数据记录按照所述多个第二标识值对应存储在业务表中;
其中,所述同步单元44,将所述全量数据中与所述至少一个目标标识值对应的数据记录同步至所述目标数据中,包括:
将所述全量数据中与所述至少一个目标标标识值对应的数据记录,按照所述至少一个目标标识值对应存储在所述业务表中。
,本申请实施例提供的数据同步装置40还可执行图1和图2的方法,并实现数据同步装置在图1和图2所示实施例的功能,本申请实施例在此不再赘述。
总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。