数据同步方法、系统、服务器及存储介质与流程

文档序号:24196028发布日期:2021-03-09 17:08阅读:90来源:国知局
数据同步方法、系统、服务器及存储介质与流程

1.本发明实施例涉及数据处理技术领域,特别涉及一种数据同步方法、系统、服务器及存储介质。


背景技术:

2.数据同步是指将源数据库中的业务数据同步到一个或多个目标数据库中,使目标数据库中的业务数据和源数据库中的业务数据保持一致。在进行数据同步的过程中,由于与目标数据库和源数据库一般处于不同的局域网中,所以目标数据库和源数据库之间无法直接进行通信,需要通过同时处于两个局域网中的服务端进行中转,即目标数据库向服务端发送数据请求,由服务端将数据请求发送给源数据库,源数据库再将最新的业务数据通过服务端发送给目标数据库,使得目标数据库根据最新的业务数据进行对比并对目标数据库进行更新从而使目标数据库中的业务数据和源数据库中的业务数据保持一致,然而,服务端需要将源数据库的最新的全部业务数据发送给目标数据库,造成服务端和目标数据库之间的网络传输量较大,网络传输量较大时传输速度较慢,导致同步速度较慢,而且服务端在目标数据库需要进行数据同步时才向服务端请求最新的业务数据,占用一定的时间,也导致同步速度较慢。


技术实现要素:

3.本发明实施例的目的在于提供一种数据同步方法、系统、服务器及存储介质,可以减少服务端和目标数据库之间的网络传输量,并提高同步速度。
4.为解决上述技术问题,本发明的实施例提供了一种数据同步方法,应用于数据同步系统中的服务端,所述数据同步系统还包括分别与所述服务端连接的源数据库和目标数据库,所述方法包括:根据当前的更新操作推演出本地的业务数据;将所述本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作;将所述新的更新操作发送给目标数据库,供所述目标数据库根据新的更新操作进行数据同步。
5.本发明的实施例还提供了一种数据同步方法,应用于数据同步系统中的目标数据库,所述数据同步系统还包括与所述目标数据库连接的服务端和与所述服务端连接的目标数据库,所述方法包括:接收所述服务端发送的新的更新操作;其中,所述新的更新操作由所述服务端在将本地的业务数据与源数据库的业务数据进行比较并根据比较结果记录得到;根据所述新的更新操作进行数据同步。
6.本发明的实施例还提供了一种数据同步系统,包括:源数据库、服务端、目标数据库;所述源数据库,用于提供所述源数据的业务数据;所述服务端,用于根据当前的更新操作推演出本地的业务数据;将所述本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作;将所述新的更新操作发送给目标数据库,供所述目标数据库进行数据同步;所述目标数据库,用于接收所述服务端发送的新的更新操作,根据所述新的更新操作进行数据同步。
7.本发明的实施例还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的数据同步方法。
8.本发明的实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的数据同步方法。
9.本发明实施例相对于现有技术而言,根据当前的更新操作推演出本地的业务数据;将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作;将新的更新操作发送给目标数据库,供目标数据库进行数据同步。通过这样的方法,目标数据库与服务端的网络传输量只包括服务端将新的更新操作发送给服务端,并不需要服务端将从源数据库中获取的源数据库的全部的业务数据发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,网络传输量越少传输速度越快,所以本方法可以提高同步速度,且服务端不需要在目标数据库发送数据同步的请求后才将本地的业务数据和源数据的业务数据进行比较,这样服务端在根据比较结果记录了新的更新操作之后可以立刻发送给目标数据库,也提高了同步速度。
10.另外,所述新的更新操作包括删除操作;所述将所述本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历本地的业务数据中的数据内容,在源数据库的业务数据中的数据内容查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录将当前遍历到的数据内容进行删除的删除操作。若源数据库的业务数据中的数据内容进行了删除操作,则源数据库的业务数据中不再存在该数据内容,所以通过遍历本地的业务数据中的数据内容,可以准确的确定出哪些进行了删除操作从而记录删除操作,且在记录了删除操作之后,只需要将记录的删除操作发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,也提高了同步速度。
11.另外,所述新的更新操作包括新增操作;所述将所述本地的业务数据与源数据库中的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历源数据库的业务数据中的数据内容,在本地的业务数据中的数据内容查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录新增当前遍历到的数据内容的新增操作。若源数据库的业务数据中的数据内容进行了新增操作,则本地的业务数据中不存在该数据内容,所以通过遍历源数据库的业务数据中的数据内容,可以准确的确定出新增了哪些业务数据从而记录新增操作,且在记录了新增操作之后,只需要将记录的新增操作发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,也提高了同步速度。
12.另外,若业务数据中的数据内容分别具有主键,所述新的更新操作还包括修改操作;所述将所述本地的业务数据与源数据库中的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历本地的业务数据中的数据内容,在所述源数据库的业务数据中的数据内容查找当前遍历到的数据内容中的主键,若查找到当前遍历到的数据内容中的主键且所述源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据所述源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容记录修改操作;或者,遍历所述源数据库的业务数据中的数据内容,在所述本地的业务数据中的数据内容查找当前遍历到的数据内容中的主键,若查找到当前
遍历到的数据内容中的主键且所述本地的业务数据中与所述当前遍历到的数据内容具有相同主键的数据内容与所述当前遍历到的数据内容不完全一致,根据当前遍历到的数据内容记录修改操作。若业务数据中的数据内容分别具有主键,由于主键的特性为具有唯一性,所以可以在源数据库的业务数据中存在当前遍历到的数据内容中的主键时,通过对比数据内容是否完全一致准确的确定出哪些进行了修改操作从而记录修改操作,且在记录了修改操作之后,只需要将记录的修改操作发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,也提高了同步速度。
13.另外,若业务数据中的数据内容分别具有主键,在所述查找当前遍历到的数据内容中,查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容。若业务数据中的数据内容分别具有主键,仅仅通过查找主键即可确定出删除操作,此时只需要获取本地的业务数据中的数据内容的主键,减轻了工作负担,且服务端也只需要从源数据库中查找主键,减少了服务端和源数据库之间的网络传输量,且在记录了删除操作之后,只需要将记录的删除操作发送给目标数据库,操作简单,且减少了服务端和目标数据库之间的网络传输量,从而减少了整体的网络传输量,也提高了同步速度,或者,仅仅通过查找主键即可确定出新增操作,此时只需要获取源数据库的业务数据中的数据内容的主键,减轻了工作负担,且服务端也只需要从源数据库中查找主键,不需要从源数据库中获取全部的业务数据,减少了服务端和源数据库之间的网络传输量,且在记录了新增操作之后,只需要将记录的新增操作发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,从而减少了整体的网络传输量,也提高了同步速度。
14.另外,若源数据库的业务数据存在版本控制列,所述源数据库的业务数据中的数据内容通过以下方式确定:查询所述当前的更新操作的最新版本号,得到第一最新版本号;从所述源数据库的业务数据的版本控制列中查找大于所述第一最新版本号的版本号对应的数据内容,得到第一查找结果,将所述第一查找结果作为源数据库的业务数据中的数据内容。若源数据库的业务数据存在版本控制列,可以根据版本控制列知道源数据库中的哪些数据内容进行了更新,则从源数据库中的业务数据的版本控制列中查找大于第一最新版本号的版本号对应的数据内容,此时只需要遍历查找到的源数据库的业务数据中的数据内容即发生更新的业务数据的数据内容,减少了服务端和源数据库之间的网络传输量,进一步提高了同步速度。
15.另外,若所述新的更新操作为修改操作,所述修改操作中仅包括修改后的数据内容。通过这样的方法,修改操作的记录中仅包括修改后的数据内容,并不需要将该条业务数据的全部数据内容记录在修改操作中,这样可以减少修改操作中记录的数据量,从而进一步减少了网络传输量。
16.另外,在所述根据当前的更新操作推演出本地的业务数据之前,还包括:接收所述目标数据库发送的监控请求,所述监控请求用于表征所述服务端在监控到存在新的更新操作时,将所述新的更新操作发送给所述目标数据库。通过这样的方法,服务端不需要向源数据库转发目标数据库的数据同步的请求,服务端只是在存在新的更新操作时将新的更新操作发送给目标数据库,这样可以减少服务端和源数据库之间的网络传输量,从而减少整体的网络传输量。
17.另外,所述方法还包括:查询所述目标数据库的业务数据中的数据内容对应的最
新版本号,得到第二最新版本号;若判断出所述目标数据库的业务数据中所述第二最新版本号对应的数据内容同步完整,从所述当前的更新操作中查找大于所述第二最新版本号的版本号对应的更新操作,得到第二查找结果;若判断出所述目标数据库的业务数据中所述第二最新版本号对应的数据内容同步不完整,从所述当前的更新操作中查找不小于第二最新版本号的版本号对应的更新操作,得到第二查找结果;将所述第二查找结果发送给所述目标数据库,供所述目标数据库根据所述第二查找结果进行数据同步。通过这样的方法,可以提高将所有的更新操作已经发送给目标数据库的可能性,避免漏掉更新操作,提高了目标数据库接收的更新操作的完整性,从而提高了数据同步过程中目标数据库的业务数据中数据内容的完整性,提高了数据同步的准确性。
18.另外,在所述将所述本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作之后,还包括:将新的更新操作的数量发送给目标数据库,供所述目标数据库根据所述新的更新操作的数量验证同步的数据内容是否完整。通过这样的方法,服务端还将新的更新操作的数量发送给了目标数据库,这样目标数据库可以根据新的更新操作的数量验证同步的数据内容是否完整,从而可以验证数据同步是否完整,提高了数据同步过程中目标数据库的业务数据中数据内容的完整性,提高了数据同步的准确性。
附图说明
19.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
20.图1是根据本发明第一实施例中的数据同步方法的流程图;
21.图2是根据本发明第二实施例中的数据同步方法的流程图;
22.图3是根据本发明第三实施例中的数据同步方法的流程图;
23.图4是根据本发明第四实施例中的数据同步方法的流程图;
24.图5是根据本发明第五实施例中的数据同步系统的结构示意图;
25.图6是根据本发明第六实施例中的服务器的结构示意图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
27.本发明的第一实施例涉及一种数据同步方法,应用于数据同步系统中的服务端,所述数据同步系统还包括分别与所述服务端连接的源数据库和目标数据库,具体流程如图1所示,包括:
28.步骤101,根据当前的更新操作推演出本地的业务数据。
29.具体地说,本实施例中数据同步系统中服务端的个数为一个,更新操作存储于服
务端本地的缓存区中,其中,更新操作至少包括以下之一或其任意组合:删除操作、新增操作和修改操作,且更新操作中至少包括数据类型、数据内容和版本号,在同一次比较过程中记录的更新操作的版本号是相同的,且本次比较过程中记录的新的更新操作的版本号大于上一次比较过程中记录的新的更新操作的版本号。服务端可以通过缓存区中当前的更新操作推演出本地的业务数据,例如:当前的更新操作包括:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1]、删除[id][a],版本[2]、修改[id][c],[年龄][19],版本[2]、新增[id][d],[姓名][d],[年龄][19],版本[2],则根据当前的更新操作进行推演,[id]为[a]的包括两条更新操作:新增[id][a],[姓名][a],[年龄][16],版本[1]、删除[id][a],版本[2],则知道该条数据内容被删除了;[id]为[b]的包括一条更新操作:新增[id][b],[姓名][b],[年龄][17],版本[1],则可以得到本地的一条数据内容为[id][b],[姓名][b],[年龄][17];[id]为[c]的包括两条更新操作:新增[id][c],[姓名][c],[年龄][18],版本[1]、修改[id][c],[年龄][19],版本[2],则可以得到本地的一条数据内容为[id][c],[姓名][c],[年龄][19];[id]为[c]的包括一条更新操作:新增[id][d],[姓名][d],[年龄][19],版本[1],则可以得到本地的一条数据内容为[id][d],[姓名][d],[年龄][19],从而推演出本地的业务数据包括:[id][b],[姓名][b],[年龄][17]、[id][c],[姓名][c],[年龄][19]、[id][d],[姓名][d],[年龄][19]。在一个例子中,服务端也可以在记录了新的更新操作时,根据新的更新操作实时更新本地的业务数据,将本地的业务数据进行存储,这样可以在需要的时候直接进行使用。在一个例子中,更新操作中除了包括数据类型、数据内容和版本号,还包括以下之一或者任意组合:产生时间和各字节的哈希。在一个例子中,更新操作存储于服务端的内存中,相较于将更新操作存入磁盘中,将更新操作存入内存中可以实现高速缓存和高速获取。在一个例子中,不同表单的更新操作可以存储于相同的缓存区中,也可以存储于不同的缓存区中。
[0030]
步骤102,将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作。
[0031]
具体地说,在推演出本地的业务数据之后,服务端可以实时将本地的业务数据与源数据库的业务数据进行比较,也可以按照预设周期将本地的业务数据与源数据库的业务数据进行比较,预设周期可以根据实际需要进行设定,本实施例不做具体限定。在进行数据比较的过程中,服务端记录数据比较过程中的更新操作,得到新的更新操作。
[0032]
在一个例子中,新的更新操作包括删除操作,将本地的业务数据与源数据库中的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历本地的业务数据中的数据内容,在源数据库的业务数据中的数据内容查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录将当前遍历到的数据内容进行删除的删除操作。
[0033]
在一个例子中,若业务数据中的数据内容分别具有主键,在查找当前遍历到的数据内容中,查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容。具体地说,主键是标识身份的数据内容,即主键为身份标识号(identity card,id),具有唯一性。以下将结合一个实例进行具体的说明,第一个实例,当前的更新操作包括:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1],则
推演出本地的业务数据如表一所示,表二为源数据库的业务数据;遍历本地的业务数据中的数据内容,当遍历到数据内容“a,a,16”时,获取主键“a”,在源数据库的业务数据中查找“a”,此时未查找到“a”表明未查找到当前遍历到的数据内容,记录“删除[id][a],版本[2]”的删除操作;当遍历到数据内容“b,b,17”时,获取主键“b”,在源数据库的业务数据中查找“b”,此时查找到“b”,则忽略该数据;当遍历到数据内容“c,c,18”时,获取主键“c”,在源数据库的业务数据中查找“c”,此时查找到“c”,则忽略该数据,则得到新的更新操作为:“删除[id][a],版本[2]”。
[0034]
id姓名年龄aa16bb17cc18
[0035]
表一:本地的业务数据
[0036]
id姓名年龄bb17cc19
[0037]
表二:源数据库的业务数据
[0038]
在一个例子中,在查找当前遍历到的数据内容中,查找当前遍历到的数据内容中的全部数据内容,若未查找到当前遍历到的数据内容中的全部数据内容,表明未查找到当前遍历的数据内容。具体地说,以下将结合一个实例进行具体的说明,第二个实例,当前的更新操作包括:[姓名][a],[年龄][16],版本[1]、[姓名][b],[年龄][17],版本[1]、[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表三所示,表四为源数据库的业务数据;遍历本地的业务数据中的各数据内容,当遍历到数据内容“a,16”时,在源数据库中查找“a,16”,此时未查找到“a,16”,记录“删除[姓名][a],[年龄][16],版本[2]”的删除操作;当遍历到数据内容“b,17”时,在源数据库中查找“b,17”,此时查找到“b,17”,则忽略该数据;当遍历到数据内容“c,18”时,在源数据库中查找“c,18”,此时未查找到“c,18”,记录“删除[姓名][c],[年龄][18],版本[2]”的删除操作,则得到新的更新操作为:“删除[姓名][a],[年龄][16],版本[2]”和“删除[姓名][c],[年龄][18],版本[2]”。
[0039]
姓名年龄a16b17c18
[0040]
表三:本地的业务数据
[0041]
姓名年龄b17c19
[0042]
表四:源数据库的业务数据
[0043]
在一个例子中,新的更新操作包括新增操作;将本地的业务数据与源数据库中的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历源数据库的业务数据中的
数据内容,在本地的业务数据中的数据内容查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录新增当前遍历到的数据内容的新增操作。
[0044]
在一个例子中,若业务数据中的数据内容分别具有主键,在查找当前遍历到的数据内容中,查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容。具体地说,以下将结合一个实例进行具体的说明,第三个实例,当前的更新操作包括:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表一所示,表五为源数据库的业务数据,此时源数据库的业务数据不存在版本控制列,则遍历源数据库的业务数据中的全部数据内容,当遍历到数据内容“b,b,17”时,获取主键“b”,在本地的业务数据中查找“b”,此时查找到“b”,则忽略该数据;当遍历到数据内容“c,c,19”时,获取主键“c”,在本地的业务数据中查找“c”,此时查找到“c”,则忽略该数据;当遍历到数据内容“d,d,19”时,获取主键“d”,在本地的业务数据中查找“d”,此时未查找到“d”,记录“新增[id][d],[姓名][d],[年龄][19],版本[2]”的新增操作,则得到新的更新操作为:“新增[id][d],[姓名][d],[年龄][19],版本[2]”。
[0045]
id姓名年龄bb17cc19dd19
[0046]
表五:源数据库的业务数据
[0047]
在一个例子中,在查找当前遍历到的数据内容中,查找当前遍历到的数据内容中的全部数据内容,若未查找到当前遍历到的数据内容中的全部数据内容,表明未查找到当前遍历的数据内容。具体地说,以下将结合一个实例进行具体的说明,第四个实例,当前的更新操作包括:[姓名][a],[年龄][16],版本[1]、[姓名][b],[年龄][17],版本[1]、[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表三所示,表六为源数据库的业务数据;此时源数据库的业务数据不存在版本控制列,则遍历源数据库的业务数据中的全部数据内容,当遍历到数据内容“b,17”时,此时查找到“b,17”,则忽略该数据;当遍历到数据内容“c,19”时,此时未查找到“c,19”,记录“新增[姓名][c],[年龄][19],版本[2]”的新增操作,当遍历到数据内容“d,19”时,此时未查找到“d,19”,记录“新增[姓名][d],[年龄][19],版本[2]”的新增操作,则得到新的更新操作为:“新增[姓名][c],[年龄][19],版本[2]”和“新增[姓名][d],[年龄][19],版本[2]”。
[0048]
姓名年龄b17c19d19
[0049]
表六:源数据库的业务数据
[0050]
在一个例子中,若业务数据中的数据内容分别具有主键,新的更新操作还包括修改操作;将本地的业务数据与源数据库中的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历本地的业务数据中的数据内容,在源数据库的业务数据中的数据内容查找当前遍历到的数据内容中的主键,若查找到当前遍历到的数据内容中的主键且源数据库
的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容记录修改操作。
[0051]
具体地说,以下将结合一个实例进行具体的说明,第五个实例,新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表一所示,表二为源数据库的业务数据;遍历本地的业务数据中的数据内容,当遍历到数据内容“a,a,16”时,在源数据库的业务数据中查找“a”,获取主键“a”,此时未查找到“a”,则忽略该数据;当遍历到数据内容“b,b,17”时,在源数据库的业务数据中查找“b”,获取主键“b”,此时查找到“b”,源数据库的业务数据中具有相同主键“b”的数据内容为“b,b,17”,这与当前遍历到的数据内容完全一致,则忽略该数据;当遍历到数据内容“c,c,18”时,获取主键“c”,在源数据库的业务数据中查找“c”,此时查找到“c”,源数据库的业务数据中具有相同主键“c”的数据内容为“c,c,19”,这与当前遍历到的数据内容不完全一致,则根据“c,c,19”记录“修改[id][c]姓名[c]年龄[19],版本[2]”的修改操作,则得到新的更新操作为:“修改[id][c]姓名[c]年龄[19],版本[2]”。在一个例子中,修改操作中仅包括修改后的数据内容,则此时记录“修改[id][c]年龄[19],版本[2]”的修改操作。
[0052]
在一个例子中,若业务数据中的数据内容分别具有主键,新的更新操作还包括修改操作;将本地的业务数据与源数据库中的业务数据进行比较,根据比较结果记录新的更新操作,包括:遍历源数据库的业务数据中的数据内容,在本地的业务数据中的数据内容查找当前遍历到的数据内容中的主键,若查找到当前遍历到的数据内容中的主键且本地的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据当前遍历到的数据内容记录修改操作。
[0053]
具体地说,以下将结合一个实例进行具体的说明,第六个实例,新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表一所示,表五为源数据库的业务数据;遍历源数据库的业务数据中的数据内容,当遍历到数据内容“b,b,17”时,获取主键“b”,在本地的业务数据中查找“b”,此时查找到“b”,本地的业务数据中具有相同主键“b”的数据内容为“b,b,17”,这与当前遍历到的数据内容完全一致,则忽略该数据;当遍历到数据内容“c,c,19”时,获取主键“c”,在源数据库的业务数据中查找“c”,此时查找到“c”,源数据库的业务数据中具有相同主键“c”的数据内容为“c,c,18”,这与当前遍历到的数据内容不完全一致,则根据“c,c,19”记录“修改[id][c]姓名[c]年龄[19],版本[2]”的修改操作,当遍历到数据内容“d,d,19”时,获取主键“d”,在本地的业务数据中未查找到“d”,此时未查找到“d”,则忽略该数据,则得到新的更新操作为:“修改[id][c]姓名[c]年龄[19],版本[2]”。在一个例子中,修改操作中仅包括修改后的数据内容,则此时记录“修改[id][c]年龄[19],版本[2]”的修改操作。
[0054]
在一个例子中,若源数据库的业务数据存在版本控制列,源数据库的业务数据中的数据内容通过以下方式确定:查询当前的更新操作的最新版本号,得到第一最新版本号;从源数据库的业务数据的版本控制列中查找大于第一最新版本号的版本号对应的数据内容,得到第一查找结果,将第一查找结果作为源数据库的业务数据中的数据内容。
[0055]
具体地说,源数据库的业务数据通过版本控制列记录数据内容的版本号,表七为源数据库的业务数据,表七中的第四列为版本控制列,版本控制列并不是业务数据的数据内容,只是用来标识业务数据的数据内容的版本号,当源数据库的数据内容发生新增和修改操作时,新增和修改操作的数据内容的版本号会发生变化,且在同一次更新过程中新增和修改操作的业务数据的版本号是相同的,且本次更新过程中记录的更新操作的版本号大于上一次更新过程中记录的更新操作的版本号,例如:源数据库的业务数据中的“b,b,17”对应的版本号为1,“c,c,18”对应的版本号为1;在第一次更新过程中,将“c”中的“18”修改为“19”,为进行了修改操作的数据内容,则“c,c,19”对应的版本号为2,新增“d,d,19”,为进行了新增操作的数据内容,则“d,d,19”对应的版本号为2,如表八所示,为第一次更新后的源数据库的业务数据,在第二次更新过程中,将“b”中的“19”修改为“20”,为进行了修改操作的数据内容,则“b,b,20”对应的版本号为3,如表九所示,为第二次更新后的源数据库的业务数据。在进行数据比较的过程中,查询当前的更新操作的最新版本号,若当前的更新操作有:新增“a,a,16”,版本号为1;新增“b,b,17”,版本号为1;新增“c,c,18”,版本号为1,则得到第一最新版本号为1,若源数据库的业务数据如表八所示,则根据表八从源数据库的业务数据的版本控制列中查找版本号大于1的版本号对应的数据内容,得到查找结果为“c,c,19”和“d,d,19”,则遍历“c,c,19”和“d,d,19”。其中,服务端本次将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作时,新的更新操作记录的版本号与版本控制列的版本号一致,例如:当遍历到数据内容“d,d,19”时,获取主键“d”,在本地的业务数据中查找“d”,此时未查找到“d”,记录“新增[id][d],[姓名][d],[年龄][19],[版本号][2]”的新增操作;其中,版本号的设置规则可以根据实际需要进行设定,可以用阿拉伯数字进行表示,也可以用字母进行表示,本实施例不做具体限定。通过这样的方法,若源数据库的业务数据存在版本控制列,可以根据版本控制列知道源数据库中的哪些数据内容进行了更新,则从源数据库中的业务数据的版本控制列中查找大于第一最新版本号的版本号对应的数据内容,此时只需要遍历查找到的源数据库的业务数据中的数据内容即发生更新的业务数据的数据内容,可以减轻本地的工作量,且在记录了新增操作之后,只需要将记录的新增操作发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,也提高了同步速度。
[0056]
id姓名年龄版本控制aa161bb171cc181
[0057]
表七:源数据库的业务数据
[0058]
id姓名年龄版本控制bb171cc192dd192
[0059]
表八:第一次更新后的源数据库的业务数据
[0060]
id姓名年龄版本控制
bb203cc192dd192
[0061]
表九:第二次更新后的源数据库的业务数据
[0062]
在一个例子中,若业务数据中的数据内容分别具有主键,先遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录将当前遍历到的数据内容进行删除的删除操作,若查找到当前遍历到的数据内容中的主键且源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容记录修改操作;再根据当前的更新操作推演出本地的业务数据,并遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,记录新增当前遍历到的数据内容的新增操作。
[0063]
具体地说,以下将结合一个实例进行具体的说明,第七个实例,当前的更新操作包括:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表一所示,表五为源数据库的业务数据;遍历本地的业务数据中的数据内容,当遍历到数据内容“a,a,16”时,获取主键“a”,在源数据库的业务数据中查找“a”,此时未查找到“a”表明未查找到当前遍历到的数据内容,记录“删除[id][a],版本[2]”的删除操作;当遍历到数据内容“b,b,17”时,获取主键“b”,在源数据库的业务数据中查找“b”,此时查找到“b”,源数据库的业务数据中具有相同主键“b”的数据内容为“b,b,17”,这与当前遍历到的数据内容完全一致,则忽略该数据;当遍历到数据内容“c,c,18”时,获取主键“c”,在源数据库的业务数据中查找“c”,此时查找到“c”,源数据库的业务数据中具有相同主键“c”的数据内容为“c,c,19”,这与当前遍历到的数据内容不完全一致,则根据“c,c,19”记录“修改[id][c]年龄[19],版本[2]”的修改操作,则新的更新操作包括:删除[id][a],版本[2]、修改[id][c]姓名[c]年龄[19],版本[2],所以当前的更新操作:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1]、删除[id][a],版本[2]、修改[id][c]年龄[19],版本[2],则推演出本地的业务数据如表十所示,并遍历源数据库的业务数据中的数据内容,当遍历到数据内容“b,b,17”时,获取主键“b”,在本地的业务数据中查找“b”,此时查找到“b”,则忽略该数据;当遍历到数据内容“c,c,19”时,获取主键“c”,在本地的业务数据中查找“c”,此时查找到“c”,则忽略该数据;当遍历到数据内容“d,d,19”时,获取主键“d”,在本地的业务数据中查找“d”,此时未查找到“d”,记录“新增[id][d],[姓名][d],[年龄][19],版本[2]”的新增操作,则所有的新的更新操作包括:删除[id][a],版本[2]、修改[id][c]年龄[19],版本[2]、新增[id][d],[姓名][d],[年龄][19],版本[2]。通过这样的方法,由于先进行的删除操作和修改操作的判断,当存在删除操作时本地的业务数据的数据内容就减少了,这样可以使后续进行新增操作的判断时可以减少数据内容的对比,进一步提高同步速度。
[0064]
id姓名年龄bb17
cc19
[0065]
表十:本地的业务数据
[0066]
在一个例子中,若业务数据中的数据内容分别具有主键,先遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录将当前遍历到的数据内容进行删除的删除操作;再根据当前的更新操作推演出本地的业务数据,并遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录新增当前遍历到的数据内容的新增操作,若查找到当前遍历到的数据内容中的主键且本地的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据当前遍历到的数据内容记录修改操作。
[0067]
在一个例子中,若业务数据中的数据内容分别具有主键,先遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录新增当前遍历到的数据内容的新增操作;再根据当前的更新操作推演出本地的业务数据,并遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录将当前遍历到的数据内容进行删除的删除操作,若查找到当前遍历到的数据内容中的主键且源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容记录修改操作。
[0068]
具体地说,以下将结合一个实例进行具体的说明,第八个实例,当前的更新操作包括:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1],则推演出本地的业务数据如表一所示,表五为源数据库的业务数据;先遍历源数据库的业务数据中的数据内容,当遍历到数据内容“b,b,17”时,获取主键“b”,在本地的业务数据中查找“b”,此时查找到“b”,则忽略该数据;当遍历到数据内容“c,c,19”时,获取主键“c”,在本地的业务数据中查找“c”,此时查找到“c”,则忽略该数据;当遍历到数据内容“d,d,19”时,获取主键“d”,在本地的业务数据中查找“d”,此时未查找到“d”,记录“新增[id][d],[姓名][d],[年龄][19],版本[2]”的新增操作,则得到新的更新操作为:“新增[id][d],[姓名][d],[年龄][19],版本[2]”;再遍历本地的业务数据中的数据内容,所以当前的更新操作:新增[id][a],[姓名][a],[年龄][16],版本[1]、新增[id][b],[姓名][b],[年龄][17],版本[1]、新增[id][c],[姓名][c],[年龄][18],版本[1]、新增[id][d],[姓名][d],[年龄][19],版本[2],则推演出本地的业务数据如表十一所示,并遍历本地的业务数据中的数据内容,当遍历到数据内容“a,a,16”时,获取主键“a”,在源数据库的业务数据中查找“a”,此时未查找到“a”表明未查找到当前遍历到的数据内容,记录“删除[id][a],版本[2]”的删除操作;当遍历到数据内容“b,b,17”时,获取主键“b”,在源数据库的业务数据中查找“b”,此时查找到“b”,源数据库的业务数据中具有相同主键“b”的数据内容为“b,b,17”,这与当前遍历到的数据内容完全一致,则忽略该数据;当遍历到数据内容“c,c,18”时,获取主键“c”,在源数据库的业务数据中查找“c”,
此时查找到“c”,源数据库的业务数据中具有相同主键“c”的数据内容为“c,c,19”,这与当前遍历到的数据内容不完全一致,则根据“c,c,19”记录“修改[id][c]年龄[19],版本[2]”的修改操作,当遍历到数据内容“d,d,19”时,获取主键“d”,在源数据库的业务数据中查找“d”,此时查找到“d”,源数据库的业务数据中具有相同主键“d”的数据内容为“d,d,19”,这与当前遍历到的数据内容完全一致,则忽略该数据,则得到新的更新操作为:删除[id][a],版本[2]、修改[id][c]年龄[19],版本[2],则所有的新的更新操作包括:删除[id][a],版本[2]、修改[id][c]年龄[19],版本[2]、新增[id][d],[姓名][d],[年龄][19],版本[2]。
[0069]
id姓名年龄aa16bb17cc18dd19
[0070]
表十一:本地的业务数据
[0071]
在一个例子中,若业务数据中的数据内容分别具有主键,先遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录新增当前遍历到的数据内容的新增操作,若查找到当前遍历到的数据内容中的主键且本地的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据当前遍历到的数据内容记录修改操作;再根据当前的更新操作推演出本地的业务数据,并遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录将当前遍历到的数据内容进行删除的删除操作。
[0072]
在一个例子中,先遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录将当前遍历到的数据内容进行删除的删除操作;再根据当前的更新操作推演出本地的业务数据,并遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录新增当前遍历到的数据内容的新增操作。
[0073]
在一个例子中,先遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录新增当前遍历到的数据内容的新增操作;再根据当前的更新操作推演出本地的业务数据,并遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容,若未查找到当前遍历到的数据内容,记录将当前遍历到的数据内容进行删除的删除操作。
[0074]
在一个例子中,若业务数据中的数据内容分别具有主键,遍历本地的业务数据中的数据内容,在源数据库的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录将当前遍历到的数据内容进行删除的删除操作,若查找到当前遍历到的数据内容中的主键且源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据源数据库的业务数据中与当前遍历到的数据内容具有相同主键的数据内容记录修改操作。
[0075]
在一个例子中,若业务数据中的数据内容分别具有主键,遍历源数据库的业务数据中的数据内容,在本地的业务数据中查找当前遍历到的数据内容中的主键,若未查找到当前遍历到的数据内容中的主键,表明未查找到当前遍历的数据内容,记录新增当前遍历到的数据内容的新增操作,若查找到当前遍历到的数据内容中的主键且本地的业务数据中与当前遍历到的数据内容具有相同主键的数据内容与当前遍历到的数据内容不完全一致,根据当前遍历到的数据内容记录修改操作。
[0076]
需要说明的是,根据比较结果确定新的更新操作是否包括删除操作、新增操作和修改操作时不对判断的顺序进行限制,即进行操作类型的判断时可以进行任意的组合,包括但不限于以下几种:先确定删除操作和修改操作再确定新增操作、先确定删除操作再确定新增操作和修改操作、先确定新增操作再确定删除和修改、先确定新增操作再确定删除和修改、先确定删除操作再确定新增操作、先确定新增操作再确定删除操作、确定删除操作和修改操作、确定新增操作和修改操作等等。
[0077]
步骤103,将新的更新操作发送给目标数据库,供目标数据库根据新的更新操作进行数据同步。
[0078]
具体地说,本实施例中的目标数据库的个数为一个,服务端将新的更新操作发送给目标数据库,使目标数据库根据新的更新操作进行数据同步。在一个例子中,目标数据库的个数大于一个,服务端将新的更新操作发送给所有的目标数据库,使目标数据库根据新的更新操作进行数据同步,此时虽然需要同步的目标数据库大于一个,但是服务端仅将本地的业务数据与源数据库的业务数据进行了一次对比得到新的更新操作,直接将新的更新操作发送给所有的目标数据库即可实现所有的目标数据库根据新的更新操作进行数据同步。在一个例子中,目标数据库需要通过对应的客户端桥接网络到服务端,则服务端将新的更新操作发送给客户端,由客户端根据新的更新操作使对应的目标数据库根据新的更新操作进行数据同步。
[0079]
在一个例子中,在将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作之后,还包括:将新的更新操作的数量发送给目标数据库,供目标数据库根据新的更新操作的数量验证同步的数据内容是否完整。具体地说,服务端可以先发送新的更新操作的数量,再发送新的更新操作;也可以先发送新的更新操作,再发送新的更新操作的数量;也可以同时发送新的更新操作和新的更新操作的数量。目标数据库在接收到新的更新操作之后进行数据同步,当完成数据同步时可以得到进行了更新的更新操作的数量,若在目标数据库中进行了更新的更新操作的数量与服务端发送的新的更新操作的数量不一致,则说明更新的不完整即同步的数据内容不完整,则目标数据库向服务端重新请求新的更新操作,若在目标数据库中进行了更新的更新操作的数量与服务端发送的新的更新操作的数量一致,则说明更新的完整即同步的数据内容完整。例如:新的更新操作的数量为10条,在接收到新的更新操作之后进行数据同步,当完成数据同步时若得到在目标数据库进行了更新的更新操作的数量为5条,则说明更新的不完整,在接收到新的更新操作之后进行数据同步,当完成数据同步时若得到在目标数据库进行了更新的更新操作的数量为10条,则说明更新的完整。通过这样的方法,服务端还将新的更新操作的数量发送给了目标数据库,这样目标数据库可以根据新的更新操作的数量验证是否同步的数据内容是否完整,从而可以验证数据同步是否完整,提高了数据同步过程中目标数据库的业务数据中数据内
容的完整性,提高了数据同步的准确性。在一个例子中,数据同步系统中的服务端的个数大于一个,所有的服务端形成服务端集群,各服务端采用分布式的架构方式进行部署,且采用分布式锁保证同一个数据同步任务在服务端集群中只有一个服务端进行且由当前性能最好的服务端进行,若该服务端发生故障,则该数据同步的任务由其他的服务端继续执行,即由其他的服务端根据当前的更新操作推演出本地的业务数据;将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作,并将新的更新操作发送给目标数据库,供目标数据库根据新的更新操作进行数据同步,直至执行成功或者服务端集群内所有的服务端均发生故障;其中,服务端内置的传输控制协议(transmission control protocol,tcp)或网际互连协议(internet protocol,ip)使服务端集群中的服务端相互发现并进行通讯,自动实现服务端集群内的服务端的联结及工作。
[0080]
本实施例中,根据当前的更新操作推演出本地的业务数据;将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作;将新的更新操作发送给目标数据库,供目标数据库根据新的更新操作进行数据同步。通过这样的方法,目标数据库与服务端的网络传输量只包括服务端将新的更新操作发送给服务端,并不需要服务端将从源数据库中获取的源数据库的全部的业务数据发送给目标数据库,减少了服务端和目标数据库之间的网络传输量,网络传输量越少传输速度越快,所以本方法可以提高同步速度,且服务端不需要在目标数据库发送数据同步的请求后才将本地的业务数据和源数据的业务数据进行比较,这样服务端在根据比较结果记录了新的更新操作之后可以立刻发送给目标数据库,也提高了同步速度。
[0081]
本发明的第二实施例涉及一种数据同步方法,第二实施例与第一实施例大致相同,主要区别之处在于:接收目标数据库发送的监控请求,具体流程图如图2所示,包括:
[0082]
步骤201,接收目标数据库发送的监控请求,监控请求用于表征服务端在监控到存在新的更新操作时,将新的更新操作发送给目标数据库。
[0083]
具体地说,目标数据库向服务端发送监控请求,监控服务端的更新操作,服务端在监控到存在新的更新操作时,将新的更新操作发送给目标数据库。在一个例子中,目标数据库需要通过对应的客户端桥接网络到服务端,则客户端向服务端发送监控请求,服务端在监控到存在新的更新操作时,将新的更新操作发送给客户端,由客户端根据新的更新操作使对应的目标数据库进行数据同步。
[0084]
步骤202,根据当前的更新操作推演出本地的业务数据。
[0085]
步骤203,将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作。
[0086]
步骤204,将新的更新操作发送给目标数据库,供目标数据库根据新的更新操作进行数据同步。
[0087]
步骤202-204与步骤101-103类似,在此不再赘述。
[0088]
本实施例中,服务端不需要向源数据库转发目标数据库的数据同步的请求,服务端只是在存在新的更新操作时将新的更新操作发送给目标数据库,这样可以减少服务端和源数据库之间的网络传输,从而减少整体的网络传输。
[0089]
本发明的第三实施例涉及一种数据同步方法,第三实施例与第一实施例大致相同,主要区别之处在于:还将第二查找结果发送给目标数据库,供目标数据库根据第二查找
结果进行数据同步,具体流程图如图3所示,包括:
[0090]
步骤301,查询目标数据库的业务数据中的数据内容的最新版本号,得到第二最新版本号。
[0091]
步骤302,若判断出目标数据库的业务数据中第二最新版本号对应的数据内容同步完整,从当前的更新操作中查找大于第二最新版本号的版本号对应的更新操作,得到第二查找结果;若判断出目标数据库的业务数据中第二最新版本号对应的数据内容同步不完整,从当前的更新操作中查找不小于第二最新版本号的版本号对应的更新操作,得到第二查找结果。
[0092]
步骤303,将第二查找结果发送给目标数据库,供目标数据库根据第二查找结果进行数据同步。
[0093]
具体地说,由于在一次数据同步的过程中,可能会出现目标数据库发生故障等问题造成目标数据库无法接收到该次数据同步过程中的完整的新的更新操作,或者在数据同步过程中发生中断造成无法完整地进行全部的数据同步,或者当存在新增的目标数据库时,新增的目标数据库没有接收到该次数据同步过程之前的新的更新操作,等等,这样就会导致部分更新操作并没有成功的发送到目标数据库,所以在客户端每次进行数据同步时,服务端先查询目标数据库的业务数据中的数据内容的最新版本号,得到第二最新版本号,并根据第二最新版本号在服务端中对应的更新操作的数量和第二最新版本号在目标数据库中对应的进行了更新的更新操作的数量判断第二最新版本号对应的数据内容是否同步完整,若第二最新版本号在服务端中对应的更新操作的数量等于该第二最新版本号在目标数据库中对应的进行了更新的更新操作的数量,则说明目标数据库中第二最新版本号对应的数据内容完整,再确定服务端的当前的更新操作中是否可以查找到大于第二最新版本号的版本号对应的更新操作,若查找到大于第二最新版本号的版本号对应的更新操作,得到第二查找结果,说明目标数据库没有更新到最新的版本号,则将得到的第二查找结果发送给目标数据库,若第二最新版本号在服务端中对应的更新操作的数量大于该第二最新版本号在目标数据库中对应的进行了更新的更新操作的数量,则说明目标数据库中第二最新版本号对应的数据内容不完整,再从当前的更新操作中查找不小于第二最新版本号的版本号对应的更新操作,得到第二查找结果,则将第二查找结果发送给目标数据库;服务端可以将第二查找结果一次全部发送给目标数据库,也可以按照版本号分多次发送给目标数据库,例如:第二最新版本号为2,若第二最新版本号在目标数据库中对应的进行了更新的更新操作的数量为5条,第二最新版本号在服务端对应的更新操作的数量为5条,则说明第二最新版本号对应的数据内容完整,从当前的更新操作中查找到版本号为3的更新操作和版本号为4的更新操作,则可以将版本号为3的更新操作和版本号为4的更新操作一次全部发送给目标数据库,也可以先将版本号为3的更新操作新发送给目标数据库,再将版本号为4的更新操作发送给目标数据库,使目标数据库根据第二查找结果进行数据同步;第二最新版本号为2,若第二最新版本号在目标数据库中对应的进行了更新的更新操作的数量为5条,第二最新版本号在服务端对应的更新操作的数量为10条,则说明第二最新版本号对应的数据内容不完整,从当前的更新操作中查找到版本号为2的更新操作、版本号为3的更新操作和版本号为4的更新操作。
[0094]
在一个例子中,服务端也可以在接收到目标数据库发送的包括目标数据库的业务
数据中的数据内容的最新版本的数据请求之后,再进入步骤301,此时服务端查询数据请求中的内容即可知道目标数据库的业务数据中的数据内容的最新版本号。
[0095]
步骤304,根据当前的更新操作推演出本地的业务数据。
[0096]
步骤305,将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作。
[0097]
步骤306,将新的更新操作发送给目标数据库,供目标数据库根据新的更新操作进行数据同步。
[0098]
步骤304-306与第一实施例中的步骤101-103类似,在此不再赘述。
[0099]
需要说明的是,服务端和目标数据库之间进行数据的传输是由订阅服务实现的,两者之间建立了订阅服务之后服务端和目标端之间可以随时进行数据的传输,所以步骤301-303可以在任何一个步骤进行,即步骤301-303也可以在步骤304之后进行,也可以在步骤305之后进行,也可以在步骤306之后进行。
[0100]
本实施例中,可以将所有的更新操作均发送给目标数据库,避免漏掉中间的更新操作,保证了目标数据库接收的更新操作的完整性,从而保证了数据同步过程中目标数据库的业务数据中数据内容的完整性,提高了数据同步的准确性。
[0101]
本发明的第四实施例涉及一种数据同步方法,应用于数据同步系统中的目标数据库,数据同步系统还包括与目标数据库连接的服务端和与服务端连接的目标数据库,具体流程如图4所示,包括:
[0102]
步骤401,接收服务端发送的新的更新操作;其中,新的更新操作由服务端在将本地的业务数据与源数据库的业务数据进行比较并根据比较结果记录得到;
[0103]
步骤402,根据新的更新操作进行数据同步。
[0104]
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0105]
本发明的第五实施例涉及一种数据同步系统,包括:源数据库501、服务端502、目标数据库503;
[0106]
源数据库501,用于提供源数据的业务数据;
[0107]
服务端502,用于根据当前的更新操作推演出本地的业务数据;将本地的业务数据与源数据库的业务数据进行比较,根据比较结果记录新的更新操作;将新的更新操作发送给目标数据库,供目标数据库根据新的更新操作进行数据同步;
[0108]
目标数据库503,用于接收服务端发送的新的更新操作,根据新的更新操作进行数据同步。
[0109]
在一个例子中,数据同步系统中的服务端的个数大于一个,所有的服务端形成服务端集群,各服务端采用分布式的架构方式进行部署,且采用分布式锁保证同一个数据同步任务在服务端集群中只有一个服务端进行且由当前性能最好的服务端进行,若该服务端发生故障,则该数据同步的任务由其他的服务端继续执行数据同步,并记录数据同步过程中的更新操作,并将更新操作发送给目标数据库,供目标数据库进行数据同步,直至执行成功或者服务端集群内所有的服务端均发生故障;其中,服务端内置的传输控制协议
(transmission control protocol,tcp)或网际互连协议(internet protocol,ip)使服务端集群中的服务端相互发现并进行通讯,自动实现服务端集群内的服务端的联结及工作。
[0110]
在一个例子中,目标数据库的个数大于一个,服务端将新的更新操作发送给所有的目标数据库,使目标数据库进行数据同步,此时虽然需要同步的目标数据库大于一个,但是服务端仅将本地的业务数据与源数据库的业务数据进行了一次对比得到新的更新操作,直接将新的更新操作发送给所有的目标数据库即可实现所有的目标数据库根据新的更新操作进行数据同步。
[0111]
在一个例子中,目标数据库需要通过对应的客户端桥接网络到服务端,则服务端将更新操作发送给客户端,由客户端根据更新操作使对应的目标数据库进行数据同步。
[0112]
不难发现,本实施例为与第一实施例、第二实施例和第三实施例相对应的系统实施例,本实施例可与第一实施例、第二实施例和第三实施例互相配合实施。第一实施例、第二实施例和第三实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例、第二实施例和第三实施例中。
[0113]
本发明第六实施例涉及一种服务器,如图6所示,包括至少一个处理器602;以及,与至少一个处理器通信连接的存储器601;其中,存储器601存储有可被至少一个处理器602执行的指令,指令被至少一个处理器602执行,以使至少一个处理器602能够执行上述数据同步方法。
[0114]
其中,存储器601和处理器602采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器602和存储器601的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器602处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器602。
[0115]
处理器602负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器601可以被用于存储处理器602在执行操作时所使用的数据。
[0116]
本发明第七实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
[0117]
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0118]
本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1