CN108536752B - 一种数据同步方法、装置和设备 - Google Patents

一种数据同步方法、装置和设备 Download PDF

Info

Publication number
CN108536752B
CN108536752B CN201810204031.7A CN201810204031A CN108536752B CN 108536752 B CN108536752 B CN 108536752B CN 201810204031 A CN201810204031 A CN 201810204031A CN 108536752 B CN108536752 B CN 108536752B
Authority
CN
China
Prior art keywords
synchronized
data
database
synchronization
batch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810204031.7A
Other languages
English (en)
Other versions
CN108536752A (zh
Inventor
赵剑竹
张庆勇
王翊心
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Infosec Technologies Co Ltd
Original Assignee
Beijing Infosec Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Infosec Technologies Co Ltd filed Critical Beijing Infosec Technologies Co Ltd
Priority to CN201810204031.7A priority Critical patent/CN108536752B/zh
Publication of CN108536752A publication Critical patent/CN108536752A/zh
Application granted granted Critical
Publication of CN108536752B publication Critical patent/CN108536752B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种数据同步方法、装置和设备,所述方法包括:获取用于提供同步服务的配置文件;针对除中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段;将各个待同步数据库中提取出的数据同步到中心库中。采用上述方法,通过在数据库中增加时间戳字段和同步状态字段,无需考虑数据库的类型或版本,即可实现跨类型、跨版本的数据库之间的数据同步。

Description

一种数据同步方法、装置和设备
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据同步方法、装置和设备。
背景技术
现有技术中普遍采用的数据库中数据同步方法,一般是基于数据库本身同步技术实现数据的同步,例如对两台数据库之间的数据实现同步时,一般在同一空间内用一根数据线将分别承载这两个数据库的设备相连,即进行双机热备,由此实现这两个数据库中数据的同步。
现有的数据同步方法一般只适用于类型相同、版本相同的数据库之间的数据同步,可以得出现有的数据库的数据同步方法对数据库本身属性有较高要求,无法实现不同类型的数据库之间的数据同步。
因此,如何实现跨类型、跨版本的数据库之间的数据同步是亟待解决的技术问题之一。
发明内容
本发明实施例提供一种数据同步方法、装置和设备,用以实现不同数据库类型和/或版本的数据库之间的数据同步。
第一方面,本发明实施例提供一种数据同步方法,包括:
获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;
针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;并
根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;
将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。
较佳地,所述方法,还包括:
根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表;并
根据所述中心库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据;
将所述数据同步到除所述中心库以外的其它待同步数据库中。
优选地,所述配置文件中还包含单次同步设置的同步数据条数;以及从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,具体包括:
从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
进一步地,所述配置文件中还所述单次同步设置的同步批次;以及按照以下方法将数据同步到需要同步的数据库中,所述需要同步的数据库为中心库或所述其它待同步数据库:
将数据按照写入时间由先到后的顺序进行排序,得到排序后的数据;并
针对每一次同步,均执行下述过程:
根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据;
将每一批数据同步到需要同步的数据库中。
较佳地,将每一批数据同步到需要同步的数据库中,具体包括:
针对任一批数据,判断该批数据中每条数据的写入时间是否晚于需要同步的数据库对应的已同步时间戳;
若均晚于,则将该批数据同步到需要同步的数据库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳;
若否,则从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据;并将处理后的数据同步到需要同步的数据库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳。
较佳地,在将该批数据同步到需要同步的数据库中,或者将处理后的数据同步到需要同步的数据库中之后,还包括:
确定该批数据中每条数据对应的数据库表;并
更改确定出的数据库表中该条数据对应的同步状态字段的取值,表征该条数据已同步。
优选地,所述方法,还包括:
针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
较佳地,所述配置文件中还包括数据库表包中需要同步的字段;以及在将各个待同步数据库中提取出的数据同步到所述中心库中,或者在将所述数据同步到除所述中心库以外的其它待同步数据库中之前,还包括:
根据所述数据,筛选出包含需要同步的字段的数据;以及
将各个待同步数据库中提取出的数据同步到所述中心库中,具体包括:
将筛选出的包含需要同步的字段的数据同步到中心库中;或者
将所述数据同步到除所述中心库以外的其它待同步数据库中,具体包括:
将筛选出的包含需要同步的字段的数据同步到除所述中心库以外的其它待同步数据库中。
第二方面,本发明实施例提供一种数据同步装置,包括:
获取单元,用于获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;
第一确定单元,用于针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;
第二确定单元,用于用于根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;
第一同步处理单元,用于将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。
较佳地,所述第一确定单元,还用于根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表;
所述第二确定单元,还用于根据所述中心库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据;
所述第一同步处理单元,还用于将所述第二确定单元确定出的数据同步到除所述中心库以外的其它待同步数据库中。
优选地,所述配置文件中还包含单次同步设置的同步数据条数;以及
所述第二确定单元,具体用于从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
进一步地,所述配置文件中还包含所述单次同步设置的同步批次;以及
所述第一同步处理单元,具体用于按照以下方法将数据同步到需要同步的数据库中,所述需要同步的数据库为中心库或所述其它待同步数据库:将数据按照写入时间由先到后的顺序进行排序,得到排序后的数据;并针对每一次同步,均执行下述过程:根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据;将每一批数据同步到需要同步的数据库中。
较佳地,所述第一同步处理单元,具体用于针对任一批数据,判断该批数据中每条数据的写入时间是否晚于需要同步的数据库对应的已同步时间戳;若均晚于,则将该批数据同步到需要同步的数据库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳;若否,则从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据;并将处理后的数据同步到需要同步的数据库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳。
优选地,所述装置,还包括:
第三确定单元,用于在所述第一同步处理单元将该批数据同步到需要同步的数据库中,或者将处理后的数据同步到需要同步的数据库中之后,确定该批数据中每条数据对应的数据库表;
更改单元,用于更改确定出的数据库表中该条数据对应的同步状态字段的取值,表征该条数据已同步。
较佳地,所述装置,还包括:
第二同步处理单元,用于针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
优选地,所述配置文件中还包括数据库表包中需要同步的字段;以及还包括:
筛选单元,用于在所述第一同步处理单元将各个待同步数据库中提取出的数据同步到所述中心库中,或者将所述数据同步到除所述中心库以外的其它待同步数据库中之前,根据所述数据,筛选出包含需要同步的字段的数据;
所述第一同步处理单元,具体用于将所述筛选单元筛选出的包含需要同步的字段的数据同步到中心库中,或者将筛选出的包含需要同步的字段的数据同步到除所述中心库以外的其它待同步数据库中。
第三方面,本发明实施例提供一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行本申请提供的数据同步方法。
第四方面,本发明实施例提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请提供的数据同步方法。
本发明有益效果:
本发明实施例提供的数据同步方法、装置和设备,获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;并根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。这样一来,在进行数据库之间数据的同步时,无需考虑各个数据库的类型和/或版本,只需根据各个数据库中的数据库表中包含的时间戳字段、同步状态字段和获取的用于同步服务的配置文件,即可实现不同数据库类型和/或版本的数据库之间的数据同步。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例一提供的数据同步方法的流程示意图;
图2为本发明实施例一提供的执行步骤S14的流程示意图;
图3为本发明实施例一提供的执行步骤S24的流程示意图;
图4为本发明实施例一提供的执行步骤S32或步骤S34之后可以实施的流程示意图;
图5为本发明实施例一提供的在执行步骤S14之前还可以实施的流程示意图;
图6为本发明实施例二提供的在执行步骤S14之后还可以实施的流程示意图;
图7为本发明实施例二提供的执行步骤S13a的方法的流程示意图;
图8为本发明实施例二提供的实施步骤S24a的流程示意图;
图9为本发明实施例二提供的在执行步骤S14a之前,还可以执行的流程示意图;
图10为本发明实施例三提供的数据同步装置的结构示意图;
图11为本发明实施例五提供的实施数据同步方法的电子设备的硬件结构示意图。
具体实施方式
本发明实施例提供的数据同步方法、装置和设备,用以实现不同数据库类型和/或版本的数据库之间的数据同步。
需要说明的是,本发明实施例提供的同步方法,可以应用到提供同步服务的设备中,本发明实施例提供的配置文件存储于所述设备中,然后由所述设备将数据分别同步到待同步的数据库中。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
在执行本发明提供的数据同步方法之前,在数据库包含的每个数据库表中增加时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;
具体地,管理任一数据库的设备可以预先在该数据库包含的各个数据库表中新增时间戳字段timestamp和同步状态字段syncstatus。然后再向该数据库包含的任一数据库表写入数据时,可以记录写入该数据库的时间,例如,任一数据库表的格式可以参考表1所示:
表1
Figure BDA0001595359910000081
Figure BDA0001595359910000091
由表1可知,每一个序号所在的行代表一条数据,表1中timestamp对应的列中代表各条数据写入该数据库表的写入时间;syncstatus表示该数据库表中每条数据的是否已同步,如该数据库表中第1条数据的syncstatus字段取值为“1”,表示第1条数据已同步;第2~4条数据的syncstatus字段取值均为“0”,表示第2~4条数据未同步。在各个数据库表中增加了这两个字段,为后续实现数据库之间数据的同步做好准备工作。
此外,本发明实施例一提供的数据同步方法可以应用到oracle数据库、MySQL数据库和db2数据库之间的数据的同步,这些数据库可以为不同类型和/或不同版本的数据库。当然,本发明提供的方法同样适用于相同类型和/或相同版本的数据库之间数据的同步。
如图1所示,为本发明实施例一提供的数据同步方法的流程示意图,包括以下步骤:
S11、获取用于提供同步服务的配置文件。
较佳地,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的。
具体实施时,在对各个待同步数据库之间的数据进行同步时,首先将这些待同步数据库的属性信息写入到配置文件中,根据各个待同步数据库在配置文件中写入的属性信息的位置,选定中心库,例如在配置文件中写入属性信息的位置处,第一个属性信息对应的待同步数据库为中心库。对于实现数据同步方法的设备来说,在读取配置文件时,在读取到第一个属性信息后,即可将该属性信息对应的待同步数据库选定为中心库。例如,在用于提供同步服务的配置文件中依次写入了第一oracle数据库的属性信息、MySQL数据库的属性信息、第二oracle数据库的属性信息和db2数据库的属性信息。在实施本发明提供的方法,获取到上述配置文件后,第一次读取到的属性信息为第一oracle数据库的,故可以将第一oracle数据库作为中心库。
较佳地,所述属性信息可以但不限于包括:IP地址、用户名、密码和端口等信息。
较佳地,针对任一待同步数据库,在需要对该数据库包含的数据库表进行同步时,需要将这些数据库表的标识信息写入到配置文件中,所述标识信息可以但不限于为数据库表的名称等。
具体地,由于数据同步是持续执行的,例如可以周期性同步或实时同步等。在本次同步执行完成后,为了方便下一次同步,需要记录本次同步的最后一条数据的时间。这样一来,由于时间戳的存在,下一次同步无需数据库表的表头开始查找需要同步的数据,只需找大于该时间戳的数据,然后执行同步。此外,各个待同步数据库有自己的规则,故其同步的时间戳也有可能不同,故需要在配置文件中存储各个待同步数据库对应的已同步时间戳,基于此可以快速查找到需要同步的数据库表中未同步的数据,提高数据同步的处理效率。
S12、针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表。
具体地,针对除所述中心库以外的每一待同步数据库,确定各个待同步数据库中需要同步的数据库表。例如,配置文件中存在四个待同步数据库,除中心库以外,需要根据配置文件中存储的数据库表的标识信息,确定其它三个待同步数据库中需要同步的数据库表。
S13、根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据。
其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步。
具体实施时,针对除中心库以外的任一待同步数据库,在确定出该待同步数据库中需要同步的数据库表后,再根据配置文件中存储的该待同步数据库对应的已同步时间戳,确定数据库表中写入时间晚于所述已同步时间戳、且同步状态字段表征的是未同步的数据。结合表1所示,当已同步时间戳为10:00时,则可以确定出该数据库表中晚于所述已同步时间戳,且同步状态字段取值为0的数据是第2~4条数据等。
基于此,可以确定出该待同步数据库中其它数据库表中写入时间晚于所述已同步时间戳且同步状态字段表征未同步的数据。相应地,可以按照步骤S13的方法确定出其它两个待同步数据库中未同步的数据。
较佳地,所述配置文件中还包含单次同步设置的同步数据条数;以及在执行步骤S13中从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,具体包括:
从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
具体实施时,为了防止单次从待同步数据库中获取大量未同步数据而耗费较长时间,以及防止单次获取的大量未同步数据占用较多内存,本发明提出在所述配置文件中存储单次同步设置的同步数据条数。例如基于各个待同步数据库,单次允许获取的最大数据条数为1000条,则平均到各个待同步数据库后,每一待同步数据库允许同步的数据条数为1000除以待同步数据库的个数。例如待同步数据库有5个,则每个待同步数据库可以单次读取的数据条数为200条。较佳地,由于中心库为待同步数据库,故在确定每一待同步数据库允许同步的数据条数为1000除以(待同步数据库的个数-1),即当待同步数据库为5个,则每个待同步数据库可以允许的单次读取的数据条数为250条。综上可以得出,单次同步设置的同步数据条数可以理解为单次允许同步的最大数据条数与待同步数据库的个数的比值,或者为单次允许同步的最大数据条数与待同步数据库的个数减一的比值。
在此基础上,针对除中心库以外的任一待同步数据库,在提取未同步数据时,可以读取所述同步数据条数对应的未同步数据。具体实施时,在从确定出的需要同步的数据库表中提取满足写入时间晚于所述已同步时间戳且同步状态字段表征未同步的数据时,可以设置一个计数器,任一数据满足写入时间晚于所述已同步时间戳且未同步,则计数器加一,直至确定出满足写入时间晚于所述已同步时间戳且同步状态字段表征未同步的数据的条数等于所述同步数据条数为止,然后将所述同步数据条数对应的未同步数据提取出来。若该待同步数据库中该数据库表中未同步的数据的条数小于所述同步数据条数,则可以从下一数据库表中继续查找,直至确定出未同步的数据的条数等于所述同步数据条数。若该待同步数据库确定出的需要同步的所有数据库表中满足写入时间晚于所述已同步时间戳且同步字段表征的是未同步的数据的条数小于所述同步数据条数,则将这些数据库表中的未同步数据均提取出来,然后再连同基于其它待同步数据库提取出的数据,一起同步到中心库中,即执行步骤S14。
S14、将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。
由此完成了不同数据库类型和/或版本的数据库之间的数据的同步。
具体实施时,可以将各个待同步数据库确定出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。较佳地,当从各个待同步数据库中提取出所述同步数据条数对应的未同步数据后,可以将这些数据同步到中心库中,即执行步骤S14。通过设置同步数据条数,可以防止单次确定未同步数据因数据量过大导致的时间的浪费,同时节省内存。
优选地,所述配置文件中还包含所述单次同步设置的同步批次;以及在执行步骤S14时,可以按照图2所示的流程实施,包括以下步骤:
针对每一次同步,均执行步骤S21~S23的步骤,以下详细介绍之:
S21、将各个待同步数据库中提取出的数据按照写入时间由先到后的顺序进行排序,得到排序后的数据。
具体实施时,在利用步骤S13的方法从除中心库以外的其它待同步数据库中提取出未同步的数据后,由于各个待同步数据库已同步时间戳不同,且同一待同步数据库中不同数据库表中写入时间也不相同,故在同步时可以根据提取出的各条数据分别对应的写入时间,按照由先到后的顺序将提取出的所有数据进行排序,然后依次进行同步,则需要执行步骤S21,由此可以得到排序后的数据。
S22、根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据。
较佳地,为了防止一次性将排序后的数据同步到中心库后出现失败率较高的问题,本发明提出在所述配置文件中预先存储同步批次,即将排序后的数据进行划分,得到相应批次的数据。例如,本次提取的数据有1000条,所述配置文件中存储的单次同步设置的同步批次为5批,则可以将这1000条数据划分成10批,每一批有200条数据,然后进行逐批次同步。由此可以提高本次数据同步的成功率,同时还能提高性能。若一次性同步1000条数据,当同步到999条失败时,还需要重新同步这1000;当将这1000条数据划分批次进行同步时,即使有一批同步失败,则重新执行同步的数据的条数也是远小于1000条的,故大大提高了同步效率。
S23、将每一批数据同步到所述中心库中。
具体地,逐次将各批数据同步到中心库中。较佳地,在将排序后的数据进行批次划分后,每一批数据的第一条数据均有写入时间,由此可以将第一条数据写入时间最小的数据对应的批次作为第一批数据,依次可以得到第二批数据和第三批数据等等,然后按照时间由先到后的顺序,将每一批数据同步到所述中心库中,即先同步第一批,然后第二批,等等。
较佳地,可以按照图3所示的流程执行步骤S23,包括以下步骤:
S31、针对任一批数据,判断该批数据中每条数据的写入时间是否晚于所述中心库对应的已同步时间戳,若判断结果均为是,则执行步骤S32;否则执行步骤S33。
具体实施时,在针对任一批数据进行同步时,可以先判断该批数据中每一条数据的写入时间是否晚于所述中心库对应的已同步时间戳,若该批数据中所有数据的写入时间均晚于所述中心库对应的已同步时间戳,则表明该批数据可以全部同步到中心库中,即执行步骤S32;若该批数据中存在任一条数据的写入时间不晚于所述已同步时间戳,则表明该条数据为无效数据,因为小于或等于已同步时间戳的数据已完成同步,因此在此条件下可以执行步骤S33。
S32、将该批数据同步到中心库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的中心库对应的已同步时间戳。
具体地,在将该批数据同步到中心库中之后,为了以防数据重复同步,则需要利用该批数据中最后一条数据的写入时间替换所述配置文件中所述中心库对应的已同步时间戳,由此可以保证其他批数据的正常同步。
S33、从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据。
具体地,若确定出该批数据中有若干条数据的写入时间不晚于所述已同步时间戳,则从该批数据中删除所述若干条数据,然后执行步骤S34。
S34、将处理后的数据同步到中心库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述中心库对应的已同步时间戳。
优选地,在执行步骤S32或步骤S34之后,还可以执行图4所示的流程,包括以下步骤:
S41、确定该批数据中每条数据对应的数据库表。
具体实施时,在经步骤S32或S34将任一批数据同步到中心库后,为了标识该批数据已执行完同步处理,故还需要确定出该批数据中每一条数据对应的数据库表。
S42、更改确定出的数据库表中该条数据对应的同步状态字段的取值,表征该条数据已同步。
在确定出任一条数据所在的数据库表后,将该数据库表中该条数据的同步状态字段的取值更改为已同步对应的值,例如“1”标识已同步,则将该数据库表中该条数据的同步状态字段syncstatus的取值更改为“1”。
基于步骤S41~S42可以将各个批次的数据所在的数据库表中的syncstatus的取值更改为“1”,表征这些数据已执行完同步处理,由此可以避免下一次同步时再次提取到这些数据,提高了查询数据的效率。
较佳地,在执行步骤S41和S42之后,所述方法,还包括:
针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
具体实施时,在针对已执行同步处理任一批数据时,若确定出该批数据中存在写入时间早于当前配置文件中存储的中心库对应的已同步时间戳、且同步状态字段表征未同步的数据,则表明该批数据中存在任一条数据未同步成功,则需要对该批数据重新执行同步处理。具体地,可以将“<timestamp”的判断结果和“syncstatus=0”的判断结果进行与操作,根据与操作结果确定每一批数据中是否存在未同步成功的数据,若存在则对该批数据重新执行同步操作;否则继续对下一批数据执行步骤S31~S34和步骤S41和S42的方法。需要说明的是“<timestamp”中的时间戳为所述配置文件中当前存储的所述中心库对应的已同步时间戳,及“syncstatus=0”中的syncstatus为执行步骤S41和S42之后,该批数据在其它待同步数据库中相应的数据库表中对应的同步状态字段的取值,可以理解为若该条数据为MySQL数据库中某一数据库表中的一条数据,则syncstatus的值为该数据库表中记录该条数据的同步状态字段的取值。
优选地,所述配置文件中还包括数据库表包中需要同步的字段;参考表2所示:
表2
序号 字段1 字段2 …… timestamp syncstatus
1 …… 10:00 1
2 …… 10:05 0
3 …… 10:10 0
4 …… 10:15 0
…… ……
由于每个数据库表中的写入内容其实是分字段的。较佳地,为了更精确的同步数据库表中的数据,可以在配置文件中存储需要同步的字段,则,在执行步骤S14之前,还包括图5所示的流程,包括以下步骤:
S51、根据所述数据,筛选出包含需要同步的字段的数据。
S52、将筛选出的包含需要同步的字段的数据同步到中心库中。
在根据步骤S13确定出未同步的每条数据后,可以根据所述配置文件中存储的字段,从所有未同步数据中筛选出包含需要同步的字段的数据,然后再将筛选出的包含需要同步的字段的数据同步到中心库中。具体地,在将筛选出的包含需要同步的字段的数据同步到中心库中时,也可以按照本发明实施例中提供的图2、图3和图4所示的流程实施,重复之处不再赘述。
本发明实施例一提供的数据同步方法,在数据库包含的每个数据库表中增加时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;以及所述方法,包括:获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;并根据该待同步数据库对应的已同步时间戳和同步状态字段,从确定出的需要同步的数据库表中提取写入时间大于所述已同步时间戳、同步状态字段表征未同步的数据;将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。这样一来,在进行数据库之间数据的同步时,无需考虑各个数据库的类型和/或版本,只需根据各个数据库中的数据库表中增加的时间戳字段、同步状态字段和获取的用于同步服务的配置文件,即可实现不同数据库类型和/或版本的数据库之间的数据同步。
实施例二
在利用本发明实施例一提供的方法将除中心库以外的其它待同步数据库中的未同步数据同步到中心库后,为了实现数据库之间数据的同步,针对其它待同步数据库,可以将中心库中的数据同步到其它待同步数据库中。即本发明在执行步骤S14之后,还可以执行图6所示的流程,包括以下步骤:
S11a、根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表。
具体实施时,由于执行本发明实施例一提供的数据同步方法时,将其它待同步数据库中未同步的数据同步到中心库中时,其实质上是将其它待同步数据库中未同步的数据同步到相应的数据库表中,故在执行步骤S11a时,根据所述配置文件,可以获取所述中心库需要同步的数据库表的标识信息,进而可以确定出所述中心库中需要同步的数据库表。
较佳地,为了防止其它待同步数据库同步到中心库中的数据,在执行步骤S11a时未查找到,还可以记录其它待同步数据库同步到中心库中的数据所属的数据库表的标识,然后将记录的标识与配置文件中存储的需要更新的数据库表的标识进行比对,确定出未包含在配置文件中的数据库表的标识,然后确定出相应的数据库表为需要同步的数据库表。
S12a、根据所述中心库对应的已同步时间戳和同步状态字段,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据。
具体地,在基于步骤S11a确定出所述中心库中需要同步的数据库表,可以根据所述中心库对应的已同步时间戳,可以确定出中心库中需要同步的数据库表中写入时间晚于所述已同步时间戳的数据,然后基于确定出的数据筛选出同步状态字段syncstatus的取值为0的数据,筛选出的数据即为写入时间晚于所述已同步时间戳且未同步的数据。
优选地,在将中心库中的数据同步到任一其它待同步数据库时,以当前有四个待同步数据库,分别为第一oracle数据库、MySQL数据库、第二oracle数据库和db2数据库,在通过执行本发明实施例一提供的方法将MySQL数据库、第二oracle数据库和db2数据库中需要同步的数据同步到第一oracle数据库中后,在将第一oracle数据库中的数据同步到第二oracle数据库中时,其需要同步的数据除了第一oracle数据库中本身的数据外,还有同步到第一oracle数据库中的MySQL数据库中的数据和同步到第一oracle数据库中的db2数据库中的数据。因此,针对任一其它待同步数据库,为了能够将通过本发明实施例一提供的方法同步到中心库中的数据和中心库中满足步骤S12a的数据同步到该其它待同步数据库中,可以除了执行步骤S12a之外,在执行步骤S13a之前,还可以基于本发明实施例一中确定出的其它待同步数据库中的数据存储到一个列表中,然后将该列表连同步骤S12a确定出的数据,构成一个新的列表,然后再基于该新的列表将该列表中的数据同步到其它待同步数据库中。由此保证了同步的数据的完整性。
当然,还可以采用其他的方法将同步到中心库中的数据和中心库自身中需要同步的数据同步到其他待同步数据库中。优选地,在执行步骤S12a之后,以及在执行步骤S13a之前,还可以判断写入时间早于所述中心库对应的已同步时间戳、同步状态字段表征未同步的数据。由于根据本发明实施例一提供的方法,将其它待同步数据库中提取出的数据同步到中心库中之后,所述配置文件中存储的中心库对应的已同步时间戳已更新为同步的最后一条数据的写入时间,也就是说同步到中心库中的数据的写入时间不晚于所述最后一条数据的写入时间,故通过执行判断写入时间早于所述中心库对应的已同步时间戳、同步状态字段表征未同步的数据,同样可以提取出由其它待同步数据库同步到中心库中的数据,再结合步骤S12a中确定出的中心库中自身需要同步的数据,将这两类数据同步到其它待同步数据库中。由此,也保证了同步数据的完整性。
较佳地,所述配置文件中还包含单次同步设置的同步数据条数;以及在执行步骤S12a中的从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,具体包括:
从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
具体实施时,为了防止单次从中心库中获取大量未同步数据而耗费较长时间,以及防止单次获取的大量未同步数据占用较多内存,本发明提出利用配置文件中的单次同步设置的同步数据条数,单次同所述中心库中读取不超过所述同步数据条数的数据。较佳地,由于本次同步是将中心库中的未同步数据同步到其它待同步数据库中,故本发明实施例二中配置文件中存储的单次同步设置的同步数据条数可以不同于本发明实施例一中应用的同步数据条数,但其具体取何值,本发明对此不进行限定。至此,本发明实施例二通过设置同步数据条数,可以防止单次确定未同步数据因数据量过大导致的时间的浪费,同时节省内存。
S13a、将所述数据同步到除所述中心库以外的其它待同步数据库中。
具体地,在从所述中心库中提取不超过本发明实施例二中提供的单次同步设置的同步数据条数的未同步数据后,即可将这些数据同步到其它待同步数据库中,需要说明的是,在基于中心库确定出的数据同步到其它待同步数据库中时,同步过程是相互独立的,有几个其它待同步数据库就同步几次,且在执行同步时,可以同时执行同步过程,彼此时间相互独立,不会相互影响,从而保证了同步数据的准确性。
优选地,所述配置文件中还包含所述单次同步设置的同步批次;以及可以按照图7所示的流程执行步骤S13a,包括以下步骤:
针对任一其它待同步数据库,均执行步骤S21a~S23a的实施过程,以下详细介绍之。
针对每一次同步,均执行步骤S21a~S23a的过程:
S21a、将所述数据按照写入时间由先到后的顺序进行排序,得到排序后的数据。
具体实施时,中心库中需要同步的数据可能存在与多个数据库表中,而从多个数据库表中提取除需要同步的数据后,可能时间上有所不同,故可以按照时间由小到大的顺序将从中心库中确定出的需要同步的数据库表中按照步骤S12a提取出的未同步数据进行排序,得到排序后的数据。
S22a、根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据。
较佳地,为了防止一次性将排序后的数据同步到任一其它待同步数据库后出现失败率较高的问题,本发明实施例二通过利用设置的同步批次,将步骤S21a排序得到的排序后的数据进行划分,得到相应批次的数据。具体可以参考本发明实施例一中步骤S22的描述,重复之处不再赘述。通过设置同步批次,即使有一批同步失败,则重新执行同步的数据的条数也是远小于1000条的,故大大提高了同步效率。
S23a、将每一批数据同步到其它待同步数据库中。
具体地,逐次将各批数据同步到其它待同步数据库中。较佳地,在将排序后的数据进行批次划分后,每一批数据的第一条数据均有写入时间,由此可以将第一条数据写入时间最小的数据对应的批次作为第一批数据,依次可以得到第二批数据和第三批数据等等,然后按照时间由先到后的顺序,将每一批数据同步到所述其它待同步数据库中,即先同步第一批,然后第二批,等等。
较佳地,可以按照图8所示的流程实施步骤S23a,包括以下步骤:
S31a、针对任一批数据,判断该批数据中每条数据的写入时间是否晚于所述其它待同步数据库对应的已同步时间戳,若判断结果均为是,则执行步骤S32a;否则执行步骤S33a。
具体实施时,针对任一其它待同步数据库,在将任一批数据同步到其它待同步数据库时,可以先判断该批数据中每一条数据的写入时间是否晚于所述其它待同步数据库对应的已同步时间戳,若该批数据中所有数据的写入时间均晚于所述其它待同步数据库对应的已同步时间戳,则表明该批数据可以全部同步到其它待同步数据库中,即执行步骤S32a;即,若基于第一oracle数据库得到的该批数据中每一条数据的写入时间均晚于第二oracle数据库对应的已同步时间戳,则可以将该批数据均同步到第二oracle数据库中。若中心库中该批数据中存在任一条数据的写入时间不晚于所述已同步时间戳,则表明该条数据为无效数据,因为早于已同步时间戳的数据已完成同步,因此在此条件下可以执行步骤S33a。
S32a、将该批数据同步到所述其它待同步数据库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的所述其它待同步数据库对应的已同步时间戳。
具体实施时,在将该批数据同步到其它待同步数据库中之后,为了以防数据重复同步,则需要利用该批数据中最后一条数据的写入时间替换所述配置文件中所述其它待同步数据库对应的已同步时间戳,由此可以保证其他批数据的正常同步。
S33a、从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据。
具体地,若不在S31a的判断结果为否,则执行步骤S33a,即从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据,然后执行步骤S34a。
S34a、将处理后的数据同步到所述其它待同步数据库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述其它待同步数据库对应的已同步时间戳。
通过执行步骤S34a,保证了其它批数据的同步的正常完成。
优选地,在执行步骤S32a或步骤S34a之后,还可以按照图4所示的流程实施,即为了标识已将各批数据同步到其它待同步数据库中,若中心库中的数据同步到其它待同步数据库中是同时执行的,故可以在执行完S32a或步骤S34a之后,确定每一批已完成同步的数据在中心库中所属的数据库表中,然后将确定出的数据库表中该条数据的同步状态字段的取值更改为“1”,表征该条数据已同步。
基于步骤S41~S42可以将各个批次的数据所在的数据库表中的syncstatus的取值更改为“1”,表征这些数据已执行完同步处理,由此可以避免下一次同步时再次提取到这些数据,提高了查询数据的效率。
较佳地,所述方法,还包括:
针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
具体实施时,在针对已执行同步处理任一批数据时,若确定出该批数据中存在写入时间早于当前配置文件中存储的其它待同步数据库对应的已同步时间戳、且同步状态字段表征未同步的数据,则表明该批数据中存在任一条数据未同步成功,则需要对该批数据重新执行同步处理。具体地,可以将“<timestamp”的判断结果和“syncstatus=0”的判断结果进行与操作,根据与操作结果确定每一批数据中是否存在未同步成功的数据,若存在则对该批数据重新执行同步操作;否则继续对下一批数据执行步骤S31a~S34a和步骤S41和S42的方法。需要说明的是“<timestamp”中的时间戳为所述配置文件中当前存储的所述其它待同步数据库对应的已同步时间戳,及“syncstatus=0”中的syncstatus为执行步骤S41和S42之后,该批数据在中心库中相应的数据库表中的同步状态字段的取值。
优选地,所述配置文件中还包括数据库表包中需要同步的字段;以及在执行步骤S13a之前,还包括图9所示的流程,包括以下步骤:
S41a、根据所述数据,筛选出包含需要同步的字段的数据。
S42a、将筛选出的包含需要同步的字段的数据同步到所述其它待同步数据库中。
具体可以参考本发明实施例一中表2所示,为了更精确的同步数据库表中的数据,可以在配置文件中存储需要同步的字段,在执行步骤S12a确定出未同步的每条数据后,可以根据配置文件中存储的中心库中需要同步的字段,从所有未同步数据中筛选出包含需要同步的字段的数据,然后再将筛选出的包含需要同步的字段的数据同步到其它待同步数据库中。具体地,在将筛选出的包含需要同步的字段的数据同步到其它待同步数据库中时,也可以按照本发明实施例中提供的图7、图8和图4所示的流程实施,重复之处不再赘述。
优选地,由于执行本发明实施例一后,配置文件中存储的中心库对应的已同步时间戳已发生改变,即为最后一批数据中最后一条数据的写入时间,而中心库中包含的数据库表中可能会存在晚于配置文件中存储的未经改变的已同步时间戳,但早于最后一条数据的写入时间、且未同步的数据,故为了将这些数据同步到其它待同步数据库中,本发明还提出在执行本发明实施例一之后,将所述配置文件中存储的所述中心库对应的当前已同步时间戳恢复至本次同步数据之前的已同步时间戳。然后再执行本发明实施例二提供的方法,由此可以保证中心库包含的数据库表中满足晚于配置文件中存储的未经改变的已同步时间戳,但早于最后一条数据的写入时间、且未同步的数据准确同步到中心库中。基于此再按照本发明实施例二提供的步骤S11a~S13a提供的方法将确定出的中心库中需要同步的数据同步到其它待同步数据库中,避免了遗漏需要同步的数据的情况发生。
本发明实施例二提供的数据同步方法,根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表;并根据所述中心库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据;将所述数据同步到除所述中心库以外的其它待同步数据库中。由此实现了中心库中的数据同步到其它待同步数据库中,即实现了不同数据库类型和/或数据库版本的数据库之间的数据同步。
实施例三
基于同一发明构思,本发明实施例中还提供了一种数据同步装置,由于上述装置解决问题的原理与数据同步方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图10所示,为本发明实施例三提供的数据同步装置的结构示意图,包括:获取单元61、第一确定单元62、第二确定单元63和第一同步处理单元64,其中:
获取单元61,用于获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;
第一确定单元62,用于针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;
第二确定单元63,用于根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;
第一同步处理单元64,用于将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中。
较佳地,所述第一确定单元62,还用于根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表;
所述第二确定单元63,还用于根据所述中心库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据;
所述第一同步处理单元64,还用于将所述第二确定单元63确定出的数据同步到除所述中心库以外的其它待同步数据库中。
优选地,所述配置文件中还包含单次同步设置的同步数据条数;以及
所述第二确定单元63,具体用于从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
较佳地,所述配置文件中还包含所述单次同步设置的同步批次;以及
所述第一同步处理单元64,具体用于按照以下方法将数据同步到需要同步的数据库中,所述需要同步的数据库为中心库或所述其它待同步数据库:针对每一次同步,均执行下述过程:将数据按照写入时间由先到后的顺序进行排序,得到排序后的数据;并根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据;将每一批数据同步到需要同步的数据库中。
较佳地,所述第一同步处理单元64,具体用于针对任一批数据,判断该批数据中每条数据的写入时间是否晚于需要同步的数据库对应的已同步时间戳;若均晚于,则将该批数据同步到需要同步的数据库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳;若否,则从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据;并将处理后的数据同步到需要同步的数据库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳。
优选地,所述装置,还包括:
第三确定单元,用于在所述第一同步处理单元64将该批数据同步到需要同步的数据库中,或者将处理后的数据同步到需要同步的数据库中之后,确定该批数据中每条数据对应的数据库表;
更改单元,用于更改确定出的数据库表中该条数据对应的同步状态字段的取值,表征该条数据已同步。
优选地,所述装置,还包括:
第二同步处理单元,用于针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
较佳地,所述配置文件中还包括数据库表包中需要同步的字段;以及还包括:
筛选单元,用于在所述第一同步处理单元64将各个待同步数据库中提取出的数据同步到所述中心库中,或者将所述数据同步到除所述中心库以外的其它待同步数据库中之前,根据所述数据,筛选出包含需要同步的字段的数据;
所述第一同步处理单元64,具体用于将所述筛选单元筛选出的包含需要同步的字段的数据同步到中心库中,或者将筛选出的包含需要同步的字段的数据同步到除所述中心库以外的其它待同步数据库中。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
实施例四
本申请实施例四提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的数据同步方法。
实施例五
图11是本发明实施例五提供的实施数据同步方法的电子设备的硬件结构示意图,如图11所示,该电子设备包括:
一个或多个处理器710以及存储器720,图11中以一个处理器710为例。
执行数据同步方法的电子设备还可以包括:输入装置730和输出装置740。
处理器710、存储器720、输入装置730和输出装置740可以通过总线或者其他方式连接,图11中以通过总线连接为例。
存储器720作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的数据同步方法对应的程序指令/模块/单元(例如,附图10所示的获取单元61、第一确定单元62、第二确定单元63和第一同步处理单元64)。处理器710通过运行存储在存储器720中的非易失性软件程序、指令以及模块/单元,从而执行服务器或者智能终端的各种功能应用以及数据处理,即实现上述方法实施例数据同步方法。
存储器720可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据同步装置的使用所创建的数据等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器720可选包括相对于处理器710远程设置的存储器,这些远程存储器可以通过网络连接至数据同步装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置730可接收输入的数字或字符信息,以及产生与数据同步装置的用户设置以及功能控制有关的键信号输入。输出装置740可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器720中,当被所述一个或者多个处理器710执行时,执行上述任意方法实施例中的数据同步方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
实施例六
本申请实施例六提供了一种计算机程序产品,其中,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,其中,当所述程序指令被计算机执行时,使所述计算机执行本申请上述方法实施例中任一项数据同步方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种数据同步方法,其特征在于,包括:
获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;将待同步数据库的属性信息写入到配置文件中;
针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;并
根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;
将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中;
其中,还包括:
根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表;并
根据所述中心库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据;
将所述数据同步到除所述中心库以外的其它待同步数据库中。
2.如权利要求1所述的方法,其特征在于,所述配置文件中还包含单次同步设置的同步数据条数;以及从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,具体包括:
从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
3.如权利要求2所述的方法,其特征在于,所述配置文件中还所述单次同步设置的同步批次;以及按照以下方法将数据同步到需要同步的数据库中,所述需要同步的数据库为中心库或所述其它待同步数据库:
针对每一次同步,均执行下述过程:
将数据按照写入时间由先到后的顺序进行排序,得到排序后的数据;并
根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据;
将每一批数据同步到需要同步的数据库中。
4.如权利要求3所述的方法,其特征在于,将每一批数据同步到需要同步的数据库中,具体包括:
针对任一批数据,判断该批数据中每条数据的写入时间是否晚于需要同步的数据库对应的已同步时间戳;
若均晚于,则将该批数据同步到需要同步的数据库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳;
若否,则从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据;并将处理后的数据同步到需要同步的数据库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳。
5.如权利要求4所述的方法,其特征在于,在将该批数据同步到需要同步的数据库中,或者将处理后的数据同步到需要同步的数据库中之后,还包括:
确定该批数据中每条数据对应的数据库表;并
更改确定出的数据库表中该条数据对应的同步状态字段的取值,表征该条数据已同步。
6.如权利要求5所述的方法,其特征在于,还包括:
针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
7.如权利要求1所述的方法,其特征在于,所述配置文件中还包括数据库表包中需要同步的字段;以及在将各个待同步数据库中提取出的数据同步到所述中心库中,或者在将所述数据同步到除所述中心库以外的其它待同步数据库中之前,还包括:
根据所述数据,筛选出包含需要同步的字段的数据;以及
将各个待同步数据库中提取出的数据同步到所述中心库中,具体包括:
将筛选出的包含需要同步的字段的数据同步到中心库中;或者
将所述数据同步到除所述中心库以外的其它待同步数据库中,具体包括:
将筛选出的包含需要同步的字段的数据同步到除所述中心库以外的其它待同步数据库中。
8.一种数据同步装置,其特征在于,包括:
获取单元,用于获取用于提供同步服务的配置文件,所述配置文件中包含预先选定的中心库的属性信息、各个待同步数据库中需要同步的数据库表的标识信息和各个待同步数据库对应的已同步时间戳,其中所述中心库为从所有待同步数据库中选择出来的;将待同步数据库的属性信息写入到配置文件中;
第一确定单元,用于针对除所述中心库以外的任一待同步数据库,根据该待同步数据库中需要同步的数据库表的标识信息,确定该待同步数据库中需要同步的数据库表;
第二确定单元,用于根据该待同步数据库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据,其中,每一待同步的数据库包含的各个数据库表中包含时间戳字段和同步状态字段,所述时间戳字段用于表征数据库表中每条数据的写入时间,所述同步状态字段用于表征数据库表中每条数据是否已同步;
第一同步处理单元,用于将各个待同步数据库中提取出的数据同步到所述预先选定的中心库的属性信息对应的中心库中;
所述第一确定单元,还用于根据所述中心库中需要同步的数据库表的标识信息,确定所述中心库中需要同步的数据库表;
所述第二确定单元,还用于根据所述中心库对应的已同步时间戳,从确定出的需要同步的数据库表中提取写入时间晚于所述已同步时间戳、同步状态字段表征未同步的数据;
所述第一同步处理单元,还用于将所述第二确定单元确定出的数据同步到除所述中心库以外的其它待同步数据库中。
9.如权利要求8所述的装置,其特征在于,所述配置文件中还包含单次同步设置的同步数据条数;以及
所述第二确定单元,具体用于从确定出的需要同步的数据库表中,确定写入时间晚于所述已同步时间戳、同步状态字段表征未同步且不超过所述同步数据条数的数据。
10.如权利要求9所述的装置,其特征在于,所述配置文件中还包含所述单次同步设置的同步批次;以及
所述第一同步处理单元,具体用于按照以下方法将数据同步到需要同步的数据库中,所述需要同步的数据库为中心库或所述其它待同步数据库:针对每一次同步,均执行下述过程:将数据按照写入时间由先到后的顺序进行排序,得到排序后的数据;并根据所述同步批次,将所述排序后的数据进行划分得到相应批次的数据;将每一批数据同步到需要同步的数据库中。
11.如权利要求10所述的装置,其特征在于,
所述第一同步处理单元,具体用于针对任一批数据,判断该批数据中每条数据的写入时间是否晚于需要同步的数据库对应的已同步时间戳;若均晚于,则将该批数据同步到需要同步的数据库中,并利用该批数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳;若否,则从该批数据中删除写入时间不晚于所述已同步时间戳的数据,得到处理后的数据;并将处理后的数据同步到需要同步的数据库中,并利用处理后的数据中最后一条数据的写入时间替换所述配置文件中存储的所述已同步时间戳。
12.如权利要求11所述的装置,其特征在于,还包括:
第三确定单元,用于在所述第一同步处理单元将该批数据同步到需要同步的数据库中,或者将处理后的数据同步到需要同步的数据库中之后,确定该批数据中每条数据对应的数据库表;
更改单元,用于更改确定出的数据库表中该条数据对应的同步状态字段的取值,表征该条数据已同步。
13.如权利要求12所述的装置,其特征在于,还包括:
第二同步处理单元,用于针对已执行同步的每一批数据,若确定出该批数据中存在写入时间早于配置文件中存储的已同步时间戳,且同步状态字段表征未同步的数据,则对该批数据重新执行同步处理。
14.如权利要求8所述的装置,其特征在于,所述配置文件中还包括数据库表包中需要同步的字段;以及还包括:
筛选单元,用于在所述第一同步处理单元将各个待同步数据库中提取出的数据同步到所述中心库中,或者将所述数据同步到除所述中心库以外的其它待同步数据库中之前,根据所述数据,筛选出包含需要同步的字段的数据;
所述第一同步处理单元,具体用于将所述筛选单元筛选出的包含需要同步的字段的数据同步到中心库中,或者将筛选出的包含需要同步的字段的数据同步到除所述中心库以外的其它待同步数据库中。
15.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于执行如权利要求1至7任一权利要求所述的方法。
16.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7任一权利要求所述的方法。
CN201810204031.7A 2018-03-13 2018-03-13 一种数据同步方法、装置和设备 Active CN108536752B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810204031.7A CN108536752B (zh) 2018-03-13 2018-03-13 一种数据同步方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810204031.7A CN108536752B (zh) 2018-03-13 2018-03-13 一种数据同步方法、装置和设备

Publications (2)

Publication Number Publication Date
CN108536752A CN108536752A (zh) 2018-09-14
CN108536752B true CN108536752B (zh) 2021-11-09

Family

ID=63484383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810204031.7A Active CN108536752B (zh) 2018-03-13 2018-03-13 一种数据同步方法、装置和设备

Country Status (1)

Country Link
CN (1) CN108536752B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109873857A (zh) * 2018-12-26 2019-06-11 广州凡象科技有限公司 一种无网络状态下移动端数据同步方法及装置
CN109558458B (zh) * 2018-12-30 2021-08-03 贝壳找房(北京)科技有限公司 数据同步方法、配置平台、交易平台及数据同步系统
CN110769061B (zh) * 2019-10-24 2021-02-26 华为技术有限公司 一种数据同步的方法及设备
CN110781373B (zh) * 2019-10-29 2022-09-06 北京字节跳动网络技术有限公司 榜单更新方法、装置、可读介质和电子设备
CN111611252B (zh) * 2020-04-01 2023-07-18 石化盈科信息技术有限责任公司 数据同步过程中安全数据的监控、装置、设备和存储介质
CN112084259A (zh) * 2020-08-20 2020-12-15 中国船舶重工集团公司第七一五研究所 一种基于扩展字段特征标示的数据库实时同步方法
CN112306604B (zh) * 2020-08-21 2022-09-23 海信视像科技股份有限公司 一种传输文件的进度显示方法及显示设备
CN113742426A (zh) * 2021-09-08 2021-12-03 深圳市云鼠科技开发有限公司 一种数据同步方法、装置、设备、服务器及存储介质
CN114157677B (zh) * 2021-12-14 2023-11-28 南京欧珀软件科技有限公司 数据同步方法及相关产品
CN114297214B (zh) * 2021-12-30 2022-09-20 北京金堤科技有限公司 数据同步方法及其装置、计算机存储介质、电子设备
CN114339103A (zh) * 2021-12-31 2022-04-12 广东泓胜科技股份有限公司 查验监管视频管理系统实时触发执法记录仪的方法及系统
CN114936212B (zh) * 2022-07-26 2022-09-23 北京安华金和科技有限公司 一种审计数据同步处理方法和装置
CN115865528B (zh) * 2023-02-20 2023-05-12 深圳市英唐数码科技有限公司 基于多设备的用户资料操作方法、系统和可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103442042A (zh) * 2013-08-14 2013-12-11 福建天晴数码有限公司 增量数据同步方法及系统
CN104346377A (zh) * 2013-07-31 2015-02-11 克拉玛依红有软件有限责任公司 一种基于唯一标识的数据集成和交换方法
CN104462477A (zh) * 2014-12-18 2015-03-25 深圳市科漫达智能管理科技有限公司 基于时间戳的数据同步的方法、装置及系统
CN104615759A (zh) * 2015-02-13 2015-05-13 厦门雅迅网络股份有限公司 一种不同业务系统平台间的数据同步方法
CN105404701A (zh) * 2015-12-31 2016-03-16 浙江图讯科技股份有限公司 一种基于对等网络的异构数据库同步方法
CN107370803A (zh) * 2017-07-11 2017-11-21 福建省天奕网络科技有限公司 一种数据同步的方法及终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169755A1 (en) * 2001-05-09 2002-11-14 Framroze Bomi Patel System and method for the storage, searching, and retrieval of chemical names in a relational database

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346377A (zh) * 2013-07-31 2015-02-11 克拉玛依红有软件有限责任公司 一种基于唯一标识的数据集成和交换方法
CN103442042A (zh) * 2013-08-14 2013-12-11 福建天晴数码有限公司 增量数据同步方法及系统
CN104462477A (zh) * 2014-12-18 2015-03-25 深圳市科漫达智能管理科技有限公司 基于时间戳的数据同步的方法、装置及系统
CN104615759A (zh) * 2015-02-13 2015-05-13 厦门雅迅网络股份有限公司 一种不同业务系统平台间的数据同步方法
CN105404701A (zh) * 2015-12-31 2016-03-16 浙江图讯科技股份有限公司 一种基于对等网络的异构数据库同步方法
CN107370803A (zh) * 2017-07-11 2017-11-21 福建省天奕网络科技有限公司 一种数据同步的方法及终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Effective Timestamping in Databases;Torp K;《Vldb Journal》;20001231;第8卷(第3-4期);第267-288页 *
基于分布式多服务系统的数据同步方法;董立岩;《吉林大学学报(理学版)》;20111231;第49卷(第04期);第745-749页 *

Also Published As

Publication number Publication date
CN108536752A (zh) 2018-09-14

Similar Documents

Publication Publication Date Title
CN108536752B (zh) 一种数据同步方法、装置和设备
CN107957957B (zh) 测试用例的获取方法和装置
CN107391628B (zh) 数据同步方法及装置
CN107590207B (zh) 数据同步方法及装置、电子设备
CN110309161B (zh) 一种数据同步方法、装置及服务器
CN107977396B (zh) 一种KeyValue数据库的数据表的更新方法与表数据更新装置
CN104252481A (zh) 主从数据库一致性的动态校验方法和装置
CN107391634B (zh) 数据迁移方法及装置
CN112487083B (zh) 一种数据校验方法和设备
CN110321383A (zh) 大数据平台数据同步方法、装置、计算机设备及存储介质
CN108647357B (zh) 数据查询的方法及装置
CN109241165B (zh) 一种数据库同步延时的确定方法、装置和设备
CN112714359B (zh) 视频推荐方法、装置、计算机设备及存储介质
CN106709066B (zh) 数据同步方法及装置
CN111639132B (zh) 日志同步方法及设备
CN103838780A (zh) 数据库的数据恢复方法及相关的设备
CN110232095B (zh) 一种数据同步方法、装置、存储介质和服务器
CN112948473A (zh) 数据仓库的数据处理方法、装置、系统及存储介质
CN113094442B (zh) 全量数据同步方法、装置、设备和介质
CN109462661A (zh) 数据同步方法、装置、计算机设备和存储介质
CN109189864B (zh) 一种数据同步延时的确定方法、装置和设备
CN107368569B (zh) 数据差异对比方法和装置、存储介质以及处理器
US10387887B2 (en) Bloom filter driven data synchronization
CN109739883B (zh) 提升数据查询性能的方法、装置和电子设备
US10922301B1 (en) Apparatus, computer program, and method for trigger-based tracking of database modifications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant