数据同步方法、装置、电子设备及存储介质与流程

文档序号:33383741发布日期:2023-03-08 07:08阅读:42来源:国知局
数据同步方法、装置、电子设备及存储介质与流程

1.本技术涉及大数据技术领域,尤其涉及一种数据同步方法、装置、电子设备及存储介质。


背景技术:

2.数据库是计算机软件中核心的组成部分,其中,数据表是数据库的重要对象,是存储数据(或记录)的基本单元,在数据表结构创建完成后,可以向数据表中插入(或导入)新的数据,以及对已有数据(或者旧的数据)进行修改与删除,即对数据表进行数据更新,且数据更新是数据库的一种事务操作。
3.相关技术中,在采用etl(extract-transform-load,抽取-转换-加载)工具做批量数据增量同步时,上游增量输入组件通过对源数据库进行解析,得到新增、修改和删除的待处理数据(或记录),而在对目标数据库中目的表中不存在的待处理数据做数据增量同步时,无法保证将从源数据库捕获的待处理数据全部更新或插入到目标数据库中。


技术实现要素:

4.本技术的目的旨在至少在一定程度上解决上述技术问题之一。
5.为此,本技术提出了一种数据同步方法、装置、电子设备及存储介质,以实现在无需人工参与的情况下,自动对目标数据库中的存储数据进行更新,且通过采用缓存机制,先缓存目标数据库中不存在的数据,将缓存的批量数据导入目标数据库,可以提高目标数据库的导入性能。
6.本技术第一方面实施例提出了一种数据同步方法,包括:获取至少一条待处理数据;响应于所述待处理数据对应的更新指令对目标数据库进行更新;在更新失败的情况下,将所述待处理数据缓存至目标内存中;在所述目标内存的缓存数据量达到设定的数据量阈值时,将所述目标内存中的缓存数据导入所述目标数据库。
7.可选地,所述响应于所述待处理数据对应的更新指令对目标数据库进行更新,包括:根据所述更新指令,判断所述目标数据库中是否存在与所述待处理数据匹配的第一目标存储数据;若存在所述第一目标存储数据,则响应于所述更新指令,对所述目标数据库中的所述第一目标存储数据进行更新;若不存在所述第一目标存储数据,则返回更新失败记录。
8.可选地,所述根据所述更新指令,判断所述目标数据库中是否存在与所述待处理数据匹配的第一目标存储数据,包括:将所述更新指令中的原始数据与所述目标数据库中的第一存储数据进行匹配,以判断各所述第一存储数据中是否存在与所述原始数据匹配的参考存储数据;其中,所述待处理数据是对所述原始数据进行更新得到的;响应于存在所述参考存储数据,将所述参考存储数据作为与所述待处理数据匹配的所述第一目标存储数据;响应于不存在所述参考存储数据,确定不存在与所述待处理数据匹配的所述第一目标存储数据。
9.可选地,所述将所述更新指令中的原始数据与所述目标数据库中第一存储数据进行匹配,包括:将所述更新指令中的原始数据的第一属性字段与所述目标数据库中所述第一存储数据的至少一个第二属性字段进行匹配;响应于所述第一存储数据的至少一个第二属性字段中存在目标属性字段与所述第一属性字段匹配,将所述目标属性字段的属性值与所述第一目标属性字段的属性值进行匹配;响应于所述目标属性字段的属性值与所述第一属性字段的属性值匹配,确定所述原始数据与所述第一存储数据匹配;响应于所述目标属性字段的属性值与所述第一属性字段的属性值不匹配,确定所述原始数据与所述第一存储数据不匹配。
10.可选地,所述响应于所述更新指令,对所述目标数据库中的所述第一目标存储数据进行更新,包括:根据所述待处理数据中的第三属性字段,从所述第一目标存储数据中确定与所述第三属性字段匹配的第四属性字段;判断所述第三属性字段的属性值和所述第四属性字段的属性值是否匹配;在所述第三属性字段的属性值和所述第四属性字段的属性值不匹配时,将所述第四属性字段的属性值更新为所述第三属性字段对应的属性值。
11.可选地,所述方法还包括:在所述待处理数据中所述第三属性字段的属性值和所述第四属性字段的属性值匹配时,丢弃所述待处理数据。
12.可选地,所述将所述目标内存中的缓存数据导入所述目标数据库之后,所述方法还包括:清空所述目标内存中的缓存数据。
13.可选地,所述在所述目标内存的缓存数据量达到设定的数据量阈值时,将所述目标内存中的缓存数据导入所述目标数据库,包括:响应于所述目标内存的缓存数据量达到设定的数据量阈值,根据所述目标内存中的多条缓存数据,生成第一执行脚本文件中对应的至少一条执行语句;执行所述第一执行脚本文件中的至少一条执行语句,以将所述目标内存中的多条所述缓存数据导入所述目标数据库。
14.可选地,所述在所述目标内存的缓存数据量达到设定的数据量阈值,将所述目标内存中的缓存数据导入所述目标数据库,包括:响应于所述目标内存的缓存数据量达到设定的数据量阈值,检测所述目标内存中是否存在重复的缓存数据;在所述目标内存中存在重复的缓存数据时,仅保留所述重复的缓存数据中的其中一个;根据所述目标内存中保留的各缓存数据,生成第二执行脚本文件中对应的至少一条执行语句;执行所述第二执行脚本文件中的至少一条执行语句,以将所述目标内存中保留的各缓存数据导入所述目标数据库。
15.可选地,所述检测所述目标内存中是否存在重复的缓存数据,包括:将所述目标内存中各所述缓存数据的第五属性字段进行匹配;在各所述缓存数据中存在至少两个第一缓存数据的第五属性字段匹配的情况下,判断所述至少两个第一缓存数据的第五属性字段的属性值是否匹配;在所述至少两个第一缓存数据的第五属性字段的属性值匹配的情况下,将所述至少两个第一缓存数据作为所述重复的缓存数据;或者,将各所述缓存数据的唯一键进行匹配;在各所述缓存数据中存在至少两个第二缓存数据的唯一键匹配的情况下,将所述至少两个第二缓存数据作为所述重复的缓存数据;或者,将各所述缓存数据对应的md5值进行匹配;在各所述缓存数据中存在至少两个第三缓存数据对应的md5值匹配的情况下,将所述至少两个第三缓存数据作为所述重复的缓存数据。
16.可选地,所述将所述待处理数据缓存至目标内存中,包括:在将所述待处理数据缓
存至所述目标内存之前,判断所述目标内存中是否存在与所述待处理数据匹配的第四缓存数据;在所述目标内存中存在所述第四缓存数据的情况下,根据所述待处理数据对所述目标内存中的所述第四缓存数据进行更新;在所述目标内存未存在所述第四缓存数据的情况下,将所述待处理数据缓存至所述目标内存中。
17.可选地,所述判断所述目标内存中是否存在与所述待处理数据匹配的第四缓存数据,包括:根据所述待处理数据的第六属性字段,确定所述目标内存中是否存在第四缓存数据,其中,所述第四缓存数据的第七属性字段与所述第六属性字段匹配,且所述第七属性字段的属性值与所述第六属性字段的属性值匹配;或者,根据所述待处理数据的唯一键,确定所述目标内存中是否存在所述第四缓存数据,其中,所述第四缓存数据的唯一键与所述待处理数据的唯一键匹配;或者,根据所述待处理数据的md5值,确定所述目标内存中是否存在所述第四缓存数据,其中,所述第四缓存数据的md5值与所述待处理数据的md5值匹配。
18.可选地,所述将所述目标内存中的缓存数据导入所述目标数据库,包括:根据所述目标内存中各所述缓存数据对应的时间戳,设置各所述缓存数据的编号,其中,所述编号与所述时间戳呈正相关关系;将携带编号的各所述缓存数据导入所述目标数据库。
19.可选地,所述将携带编号的各所述缓存数据导入所述目标数据库,包括:将携带编号的各所述缓存数据与所述目标数据库中的第二存储数据进行匹配,以判断各所述第二存储数据中是否存在与各所述缓存数据匹配的第二目标存储数据;响应于存在所述第二目标存储数据,返回导入失败记录;响应于不存在所述第二目标存储数据,将各所述缓存数据导入所述目标数据库。
20.可选地,所述方法还包括:响应于各所述缓存数据中存在目标缓存数据导入失败,从所述目标数据库中获取与所述目标缓存数据匹配的第三目标存储数据;判断所述目标内存中是否存在与所述目标缓存数据匹配的第五缓存数据,其中,所述第五缓存数据与所述目标缓存数据不同;在存在所述第五缓存数据的情况下,判断所述目标缓存数据的编号是否大于所述第五缓存数据的编号;在所述目标缓存数据的编号大于所述第五缓存数据的编号的情况下,根据所述目标缓存数据对所述第三目标存储数据进行更新;在所述目标缓存数据的编号未大于所述第五缓存数据的编号的情况下,丢弃所述目标缓存数据,以根据所述第五缓存数据对所述第三目标存储数据进行更新。
21.可选地,所述将携带编号的各所述缓存数据与所述目标数据库中的第二存储数据进行匹配,以判断各所述第二存储数据中是否存在与各所述缓存数据匹配的第二目标存储数据,包括:根据所述任一缓存数据的第八属性字段,确定所述目标数据库中是否存在所述第二目标存储数据,其中,所述第二目标存储数据的第九属性字段与所述第八属性字段匹配,且所述第九属性字段的属性值与所述第八属性字段的属性值匹配;或者,根据所述缓存数据的唯一键,确定所述目标数据库中是否存在所述第二目标存储数据,其中,所述第二目标存储数据的唯一键与所述缓存数据的唯一键匹配。
22.可选地,所述获取至少一条待处理数据,包括:获取日志文件,并对所述日志文件进行解析,以从所述日志文件中提取所述至少一条待处理数据;和/或,从源数据库中获取与目标事件匹配的至少一条所述待处理数据。
23.本技术实施例的数据同步方法,通过获取至少一条待处理数据;响应于待处理数据对应的更新指令对目标数据库进行更新;在更新失败的情况下,将待处理数据缓存至目
标内存中;在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的缓存数据导入目标数据库。由此,可以实现在无需人工参与的情况下,自动对目标数据库中的存储数据进行更新,且通过采用缓存机制,先缓存目标数据库中不存在的数据,将缓存的批量数据导入目标数据库,可以提高目标数据库的导入性能。
24.本技术第二方面实施例提出了一种数据同步装置,包括:第一获取模块,用于获取至少一条待处理数据;第一更新模块,用于响应于所述待处理数据对应的更新指令对目标数据库进行更新;缓存模块,用于在更新失败的情况下,将所述待处理数据缓存至目标内存中;导入模块,用于在所述目标内存的缓存数据量达到设定的数据量阈值时,将所述目标内存中的缓存数据导入所述目标数据库。
25.可选地,所述第一更新模块具体用于,根据所述更新指令,判断所述目标数据库中是否存在与所述待处理数据匹配的第一目标存储数据;若存在所述第一目标存储数据,则响应于所述更新指令,对所述目标数据库中的所述第一目标存储数据进行更新;若不存在所述第一目标存储数据,则返回更新失败记录。
26.可选地,所述第一更新模块具体用于,将所述更新指令中的原始数据与所述目标数据库中的第一存储数据进行匹配,以判断各所述第一存储数据中是否存在与所述原始数据匹配的参考存储数据;其中,所述待处理数据是对所述原始数据进行更新得到的;响应于存在所述参考存储数据,将所述参考存储数据作为与所述待处理数据匹配的所述第一目标存储数据;响应于不存在所述参考存储数据,确定不存在与所述待处理数据匹配的所述第一目标存储数据。
27.可选地,所述第一更新模块具体用于,将所述更新指令中的原始数据的第一属性字段与所述目标数据库中所述第一存储数据的至少一个第二属性字段进行匹配;响应于所述第一存储数据的至少一个第二属性字段中存在目标属性字段与所述第一属性字段匹配,将所述目标属性字段的属性值与所述第一目标属性字段的属性值进行匹配;响应于所述目标属性字段的属性值与所述第一属性字段的属性值匹配,确定所述原始数据与所述第一存储数据匹配;响应于所述目标属性字段的属性值与所述第一属性字段的属性值不匹配,确定所述原始数据与所述第一存储数据不匹配。
28.可选地,所述第一更新模块具体用于,根据所述待处理数据中的第三属性字段,从所述第一目标存储数据中确定与所述第三属性字段匹配的第四属性字段;判断所述第三属性字段的属性值和所述第四属性字段的属性值是否匹配;在所述第三属性字段的属性值和所述第四属性字段的属性值不匹配时,将所述第四属性字段的属性值更新为所述第三属性字段对应的属性值。
29.可选地,所述数据同步装置还包括:第一丢弃模块,用于在所述待处理数据中所述第三属性字段的属性值和所述第四属性字段的属性值匹配时,丢弃所述待处理数据。
30.可选地,所述数据同步装置还包括:清空模块,用于清空所述目标内存中的缓存数据。
31.可选地,所述导入模块具体用于:响应于所述目标内存的缓存数据量达到设定的数据量阈值,根据所述目标内存中的多条缓存数据,生成第一执行脚本文件中对应的至少一条执行语句;执行所述第一执行脚本文件中的至少一条执行语句,以将所述目标内存中的多条所述缓存数据导入所述目标数据库。
32.可选地,所述导入模块具体用于:响应于所述目标内存的缓存数据量达到设定的数据量阈值,检测所述目标内存中是否存在重复的缓存数据;在所述目标内存中存在重复的缓存数据时,仅保留所述重复的缓存数据中的其中一个;根据所述目标内存中保留的各缓存数据,生成第二执行脚本文件中对应的至少一条执行语句;执行所述第二执行脚本文件中的至少一条执行语句,以将所述目标内存中保留的各缓存数据导入所述目标数据库。
33.可选地,所述导入模块具体用于:将所述目标内存中各所述缓存数据的第五属性字段进行匹配;在各所述缓存数据中存在至少两个第一缓存数据的第五属性字段匹配的情况下,判断所述至少两个第一缓存数据的第五属性字段的属性值是否匹配;在所述至少两个第一缓存数据的第五属性字段的属性值匹配的情况下,将所述至少两个第一缓存数据作为所述重复的缓存数据;或者,将各所述缓存数据的唯一键进行匹配;在各所述缓存数据中存在至少两个第二缓存数据的唯一键匹配的情况下,将所述至少两个第二缓存数据作为所述重复的缓存数据;或者,将各所述缓存数据对应的信息摘要算法md5值进行匹配;在各所述缓存数据中存在至少两个第三缓存数据对应的md5值匹配的情况下,将所述至少两个第三缓存数据作为所述重复的缓存数据。
34.可选地,所述缓存模块具体用于:在将所述待处理数据缓存至所述目标内存之前,判断所述目标内存中是否存在与所述待处理数据匹配的第四缓存数据;在所述目标内存中存在所述第四缓存数据的情况下,根据所述待处理数据对所述目标内存中的所述第四缓存数据进行更新;在所述目标内存未存在所述第四缓存数据的情况下,将所述待处理数据缓存至所述目标内存中。
35.可选地,所述缓存模块具体用于:根据所述待处理数据的第六属性字段,确定所述目标内存中是否存在第四缓存数据,其中,所述第四缓存数据的第七属性字段与所述第六属性字段匹配,且所述第七属性字段的属性值与所述第六属性字段的属性值匹配;或者,根据所述待处理数据的唯一键,确定所述目标内存中是否存在所述第四缓存数据,其中,所述第四缓存数据的唯一键与所述待处理数据的唯一键匹配;或者,根据所述待处理数据的md5值,确定所述目标内存中是否存在所述第四缓存数据,其中,所述第四缓存数据的md5值与所述待处理数据的md5值匹配。
36.可选地,所述导入模块具体用于:根据所述目标内存中各所述缓存数据对应的时间戳,设置各所述缓存数据的编号,其中,所述编号与所述时间戳呈现的时刻呈正相关关系;将携带编号的各所述缓存数据导入所述目标数据库。
37.可选地,所述导入模块具体用于:将携带编号的各所述缓存数据与所述目标数据库中的第二存储数据进行匹配,以判断各所述第二存储数据中是否存在与各所述缓存数据匹配的第二目标存储数据;响应于存在所述第二目标存储数据,返回导入失败记录;响应于不存在所述第二目标存储数据,将各所述缓存数据导入所述目标数据库。
38.可选地,所述数据同步装置还包括:第二获取模块,响应于各所述缓存数据中存在目标缓存数据导入失败,从所述目标数据库中获取与所述目标缓存数据匹配的第三目标存储数据;第一判断模块,用于判断所述目标内存中是否存在与所述目标缓存数据匹配的第五缓存数据,其中,所述第五缓存数据与所述目标缓存数据不同;第二判断模块,用于在存在所述第五缓存数据的情况下,判断所述目标缓存数据的编号是否大于所述第五缓存数据的编号;第二更新模块,用于在所述目标缓存数据的编号大于所述第五缓存数据的编号的
情况下,根据所述目标缓存数据对所述第三目标存储数据进行更新;第二丢弃模块,用于在所述目标缓存数据的编号未大于所述第五缓存数据的编号的情况下,丢弃所述目标缓存数据,以根据所述第五缓存数据对所述第三目标存储数据进行更新。
39.可选地,所述导入模块具体用于:根据所述任一缓存数据的第八属性字段,确定所述目标数据库中是否存在所述第二目标存储数据,其中,所述第二目标存储数据的第九属性字段与所述第八属性字段匹配,且所述第九属性字段的属性值与所述第八属性字段的属性值匹配;或者,根据所述缓存数据的唯一键,确定所述目标数据库中是否存在所述第二目标存储数据,其中,所述第二目标存储数据的唯一键与所述缓存数据的唯一键匹配。
40.可选地,所述第一获取模块具体用于:获取日志文件,并对所述日志文件进行解析,以从所述日志文件中提取所述至少一条待处理数据;和/或,从源数据库中获取与目标事件匹配的至少一条所述待处理数据。
41.本技术实施例的数据同步装置,通过获取至少一条待处理数据;响应于待处理数据对应的更新指令对目标数据库进行更新;在更新失败的情况下,将待处理数据缓存至目标内存中;在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的缓存数据导入目标数据库。由此,可以实现在无需人工参与的情况下,自动对目标数据库中的存储数据进行更新,且通过采用缓存机制,先缓存目标数据库中不存在的数据,将缓存的批量数据导入目标数据库,可以提高目标数据库的导入性能。
42.本技术第三方面实施例提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的数据同步方法。
43.本技术第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据同步方法。
44.本技术第五方面实施例提出了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本技术上述第一方面所述的数据同步方法。
45.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
46.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
47.图1为本技术实施例提供的一种数据同步方法的流程示意图;
48.图2为本技术实施例提供的另一种数据同步方法的流程示意图;
49.图3为本技术实施例提供的另一种数据同步方法的流程示意图;
50.图4为本技术实施例提供的另一种数据同步方法的流程示意图;
51.图5为本技术实施例提供的另一种数据同步方法的流程示意图;
52.图6为本技术所提供的数据同步方法的具体流程示意图;
53.图7为根据本技术一个实施例的一种数据同步装置的结构示意图;
54.图8为根据本技术一个实施例的电子设备的结构示意图。
具体实施方式
55.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
56.数据库是计算机软件中核心的组成部分,其中,数据表是数据库的重要对象,是存储数据的基本单元,在数据表结构创建完成后就可以向数据表中导入新的数据,以及对已有数据进行修改与删除,即对数据表进行数据更新,也就是说,数据更新是指以新数据项或记录、替换数据库中与之相对应的旧数据项或记录的过程,且,数据更新是数据库的一种事务操作。
57.相关技术中,在采用etl工具做数据增量同步时,上游增量输入组件通过对源数据库进行解析,得到数据增量事件,当目标数据库中目的表接收数据增量事件时,有以下三个方案:
58.方案一:采用先删除后插入的操作;
59.方案二:利用merge语句更新或插入数据;
60.方案三:直接利用jdbc(java database connectivity,java数据库连接)的执行批量处理方法executebatch()进行数据的批量更新。
61.其中,目标数据库的数据增量事件可以包括数据新增事件、数据更新事件和数据删除事件。
62.然而,上述三种方案可能存在以下缺陷:
63.在方案一中:
64.对于数据新增事件和数据删除事件,可以采用先删除后插入的操作,且先删除后插入的操作对目标数据库中目的表中的数据无影响。
65.对于数据更新事件,当目标数据库中目的表不存在根据数据更新事件产生的待更新数据进行更新的存储数据,或者,目标数据库中目的表存在可以根据待更新数据进行更新的存储数据且当待更新数据的属性字段的字段数量大于或者等于目的表中对应存储数据的属性字段的字段数量时,可以采用先删除后插入操作,且先删除后插入的操作对目的表中的数据无影响;然而,当目的表存在可以根据待更新数据进行更新的存储数据且当待更新数据的属性字段的字段数量小于目的表中对应存储数据的属性字段的字段数量时,可能会存在以下缺陷:
66.比如,数据更新事件产生的待更新数据如表1所示:
67.表1
68.属性字段名称属性字段对应的属性值id1name路人乙addra市
69.目标数据库中目的表中存在可以根据待更新数据进行更新的存储数据,该存储数据如表2所示:
70.表2
71.属性字段名称属性字段对应的属性值
id1name路人甲addrb市descriptionx国xx省人
72.1.当目的表中存储数据的属性字段description可为空时,采用先删除后插入的操作对存储数据进行更新之后,目的表中更新后的存储数据如表3所示:
73.表3
74.属性字段名称属性字段对应的属性值id1name路人乙addra市description 75.其中,目的表中更新后的存储数据的属性字段description为空,但是,按照数据增量同步的预期,期望目的表中存储数据更新后如表4所示:
76.表4
77.属性字段名称属性字段对应的属性值id1name路人乙addra市descriptionx国xx省人
78.也就是说,对于数据更新事件,采用先删除后插入操作,会出现丢失目的表中的存储数据中原有不用进行更新的属性字段的属性值的情况。
79.2.当目的表中存储数据的属性字段description不可为空时,采用先删除后插入的操作对存储数据进行更新时,对于数据更新事件,从源数据库中解析获得的待更新数据中不包括属性字段description,则在插入过程中会出现异常,比如出现提示“字段description默认不能为空”等,此时,不符合数据增量同步的预期。
80.在方案二中:
81.以方案一中示出的数据进行示例说明,生成的merge语句比如可以为:
82.merge into idnameaddrdes t1 using(select'1'as id,'路人乙'as name,'a市'as addr from dual)t2 on(t1.id=t2.id)
83.//基于t2表中源于dual表的属性字段id的属性值为1、属性字段name的属性值值为路人乙、属性字段addr的属性值为a市的选中数据,并根据t2表中选中数据的属性字段id的属性值1与目的表t1表中数据的属性字段id的属性值的匹配结果,对选中数据进行操作
84.when matched then
85.update//当t2表中选中数据的属性字段id的属性值1与t1表中数据的属性字段id的属性值匹配时进行更新操作
86.set t1.name=t2.name,//设置t1表中与选中数据匹配的数据的属性字段name的属性值为t2表中选中数据的属性字段name的属性值
87.t1.addr=t2.addr//设置t1表中与选中数据匹配的数据的属性字段addr的属性
值为t2表中选中数据的属性字段addr的属性值
88.when not matched then
89.insert(t1.id,t1.name,t1.addr)values(t2.id,t2.name,t2.addr);
90.//当不匹配时进行插入操作,将t2表中选中数据插入t1表中
91.其中,上述示例中采用了dual表来模拟数据,通过多表(比如,dual表、目的表t1表、t2表)联合操作以及判断,才能实现数据增量更新,存在效率低的问题。
92.在方案三中:
93.仍以方案一中示出的数据进行示例说明,采用jdbc的执行批量处理方法executebatch()进行数据的批量更新代码比如可以为:
[0094][0095][0096]
其中,方案三中存在以下缺陷,在执行批量执行语句时,当目标数据库中目的表中不存在与从源数据库中解析的待更新数据匹配的存储数据时,从源数据库中解析的待更新数据不会同步更新到目的表中,即ps.getupdatecount()输出为0,从而会造成数据丢失的现象。
[0097]
针对上述存在的至少一项问题,本技术实施例提出一种数据同步方法、装置、电子设备及存储介质。
[0098]
本技术实施例提供的数据同步方法,可以由电子设备来执行,该电子设备可为计算机或服务器等,此处不做任何限定。
[0099]
在本技术实施例中,电子设备中可以设置有处理组件、存储组件和驱动组件。可选的,该驱动组件和处理组件可以集成设置,该存储组件可以存储操作系统、应用程序或其他程序模块,该处理组件通过执行存储组件中存储的应用程序来实现本技术实施例提供的数据同步方法。
[0100]
下面结合图1,对本技术提供的数据同步方法进行详细说明。
[0101]
图1为本技术实施例提供的一种数据同步方法的流程示意图。
[0102]
本技术实施例的数据同步方法还可以由本技术实施例提供的数据同步装置执行。本技术中的数据同步装置可应用于电子设备中,以执行数据同步功能。或者,该数据同步装置可以配置在电子设备的应用中,以使该应用可以执行数据同步功能。
[0103]
其中,电子设备可以为任一具有计算能力的设备,该设备或者该设备中的应用能够执行数据同步功能。其中,具有计算能力的设备例如可以为个人电脑(personalcomputer,简称pc)、移动终端、服务器等,移动终端例如可以为车载设备、手机、平板电脑、个人数字助理、穿戴式设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。
[0104]
如图1所示,该数据同步方法包括以下步骤:
[0105]
步骤s101,获取至少一条待处理数据。
[0106]
在本技术实施例中,待处理数据是指需要同步存储的数据。
[0107]
在本技术实施例中,待处理数据可以为但不限于为一条,本技术对此不做限制。
[0108]
在本技术实施例中,可以获取至少一条待处理数据。
[0109]
在本技术实施例的一种可能的实现方式中,可以获取日志文件,并对获取到的日志文件进行解析,从而可以从日志文件中提取至少一条待处理数据。
[0110]
举例而言,可以从oracle数据库中获取归档日志文件或在线日志(又可以称为联机重做日志)文件,并对获取到的归档日志文件或在线日志文件进行解析,从而从归档日志文件或在线日志文件中提取至少一条待处理数据。
[0111]
再比如,可以从mysql数据库中获取binlog(binary log,二进制日志)日志文件,并对获取到的binlog日志文件进行解析,从而从binlog日志文件中提取至少一条待处理数据。
[0112]
在本技术实施例的另一种可能的实现方式中,可以从源数据库中获取与目标事件匹配的至少一条待处理数据。
[0113]
其中,目标事件比如可以为数据增量事件,其中,数据增量事件比如可以为数据更新(update)事件、数据新增(insert)事件等,本技术对此不做限制。
[0114]
作为一种示例,可以预先定义用于监听源数据库中的触发器,当触发器监听到源数据库中的目标事件,可以通过触发器从源数据库中捕获与目标事件匹配的至少一条待处理数据。
[0115]
比如,预先定义监听源数据库中数据更新的触发器,当触发器监听到源数据库中的数据发生数据更新,则可以从源数据库中捕获更新的数据。
[0116]
步骤s102,响应于待处理数据对应的更新指令对目标数据库进行更新。
[0117]
在本技术实施例中,目标数据库是指需要进行数据更新或数据同步的数据库。
[0118]
在本技术实施例中,更新指令可以用于根据待处理数据对目标数据库进行更新。
[0119]
在本技术实施例中,可以响应于待更新数据对应的更新指令对目标数据库进行更新。
[0120]
步骤s103,在更新失败的情况下,将待处理数据缓存至目标内存中。
[0121]
在本技术实施例中,在更新失败的情况下,可以将待处理数据缓存至目标内存中。
[0122]
步骤s104,在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的
缓存数据导入目标数据库。
[0123]
在本技术实施例中,数据量阈值可以是预先设定的,比如,可以为4000条、5000条等等,本技术对此不做限制。
[0124]
在本技术实施例中,缓存数据量可以用于指示目标内存中缓存数据的数量。
[0125]
在本技术实施例中,当目标内存的缓存数据量达到设定的数据量阈值时,可以将目标内存中的缓存数据全部导入目标数据库中,由此,无需对每条数据分条导入,将目标内存中达到设定的数据量阈值的缓存数据全部一次性导入目标数据库,可以提升目标数据库的导入性能。
[0126]
可以理解的是,当目标内存的缓存数据量达到设定的数据量阈值,将目标内存中的缓存数据全部导入目标数据库之后,作为本技术实施例的一种可能的实现方式,可以清空目标内存中的缓存数据,释放目标内存空间,以便于存储下一批次的待处理数据。
[0127]
本技术实施例的数据同步方法,通过获取至少一条待处理数据;响应于待处理数据对应的更新指令对目标数据库进行更新;在更新失败的情况下,将待处理数据缓存至目标内存中;在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的缓存数据导入目标数据库。由此,可以实现在无需人工参与的情况下,自动对目标数据库中的存储数据进行更新,且通过采用缓存机制,先缓存目标数据库中不存在的数据,将缓存的批量数据导入目标数据库,可以提高目标数据库的导入性能。
[0128]
为了清楚说明本技术上述实施例中是如何响应于待处理数据对应的更新指令对目标数据库进行更新的,本技术还提出一种数据同步的方法。
[0129]
图2为本技术实施例提供的另一种数据同步方法的流程示意图。
[0130]
如图2所示,该数据同步方法可以包括以下步骤:
[0131]
步骤s201,获取至少一条待处理数据。
[0132]
步骤s201的解释说明可以参见本技术任一实施例中的相关描述,在此不做赘述。
[0133]
步骤s202,根据更新指令,判断目标数据库中是否存在与待处理数据匹配的第一目标存储数据;若存在,则执行步骤s203;若不存在,则执行步骤s204至步骤s206。
[0134]
在本技术实施例中,第一目标存储数据是目标数据库中与待处理数据匹配的数据。
[0135]
在本技术实施例中,可以根据更新指令,判断目标数据库中是否存在与待处理数据匹配的第一目标存储数据。
[0136]
在本技术实施例的一种可能的实现方式中,可以将更新指令中的原始数据与目标数据库中的第一存储数据进行匹配,以判断各第一存储数据中是否存在与原始数据匹配的参考存储数据;其中,待处理数据是对原始数据进行更新得到的;响应于存在参考存储数据,将参考存储数据作为与待处理数据匹配的第一目标存储数据;响应于不存在参考存储数据,确定不存在与待处理数据匹配的第一目标存储数据。
[0137]
在本技术实施例中,待处理数据可以是对原始数据进行更新得到的,且更新指令中可以携带该原始数据。
[0138]
在本技术实施例中,第一存储数据可以是目标数据库中的任一数据。
[0139]
在本技术实施例中,可以将更新指令中的原始数据与目标数据库中的第一存储数据进行匹配,以判断各第一存储数据中是否存在与原始数据匹配的参考存储数据。
[0140]
作为一种可能的实现方式,可以将更新指令中的原始数据的第一属性字段与目标数据库中第一存储数据的至少一个第二属性字段进行匹配;当第一存储数据的至少一个第二属性字段中存在目标属性字段与第一属性字段匹配(比如,目标属性字段与第一属性字段相同,或者,目标属性字段与第一属性字段之间的相似度高于设定相似度阈值(举例而言,第一属性字段为家庭地址,目标属性字段为家庭住址),或者,目标属性字段和第一属性字段语义匹配(举例而言,第一属性字段为addr或address,目标属性字段为地址))时,可以将目标属性字段的属性值与第一目标属性字段的属性值进行匹配;当目标属性字段的属性值与第一属性字段的属性值匹配时,则可以确定原始数据与第一存储数据匹配;当目标属性字段的属性值与第一属性字段的属性值不匹配时,则可以确定原始数据与第一存储数据不匹配。
[0141]
在本技术实施例中,原始数据中可以包括第一属性字段,其中,第一属性字段可以为原始数据的唯一键,或者也可以为原始数据的部分或全部属性字段等,本技术对此不做限制。
[0142]
比如,原始数据包括id(identity document,身份标识号)、name(姓名)、addr(address,地址)、description(说明)属性字段,第一属性字段可以为id,或者也可以为该原始数据的部分或全部属性字段,比如,第一属性字段可以同时包括id、name、addr和description。
[0143]
需要说明的是,上述对原始数据的属性字段的举例说明仅是示例性的,在实际应用中,可以根据需要对原始数据的属性字段进行设置,比如,原始数据的属性字段还可以包括生日、性别、工作单位、爱好等,本技术对此不做限制。
[0144]
在本技术实施例中,第二属性字段可以为第一存储数据的属性字段,且第二属性字段可以为但不限于为一个,本技术对此不做限制。
[0145]
在本技术实施例中,可以将更新指令中的原始数据的第一属性字段与目标数据库中第一存储数据的至少一个第二属性字段进行匹配,当第一存储数据的至少一个第二属性字段中存在与第一属性字段匹配的属性字段,比如第一存储数据的至少一个第二属性字段中存在与第一属性字段相同的属性字段时,可以将该与第一属性字段匹配的第二属性字段作为目标属性字段。
[0146]
比如,假设原始数据的第一属性字段包括id,目标数据库中第一存储数据的第二属性字段分别为id、name和addr,将第一属性字段id与该第一存储数据的各第二属性字段进行匹配,确定上述各第二属性字段中存在与第一属性字段id相同的属性字段,可以将该与第一属性字段相同的第二属性字段id作为目标属性字段。
[0147]
再比如,假设原始数据的第一属性字段为原始数据的全部属性字段,即id、name和addr,目标数据库中第一存储数据的第二属性字段分别为id、name、addr和description,将第一属性字段与第一存储数据的第二属性字段进行匹配,确定各第二属性字段中存在与第一属性字段相同的属性字段(即id、name和addr),则可以将该与第一属性字段相同的第二属性字段id、name和addr作为目标属性字段。
[0148]
在本技术实施例中,当第一存储数据的至少一个第二属性字段中存在目标属性字段与第二属性字段匹配时,则可以将目标属性字段的属性值与第一目标属性字段的属性值进行匹配;当目标属性字段的属性值与第一属性字段的属性值匹配时,则可以确定原始数
据与第一存储数据匹配;当目标属性字段的属性值与第一属性字段的属性值不匹配时,则可以确定原始数据与第一存储数据不匹配。
[0149]
比如,仍以上述示例进行说明,原始数据的第一属性字段为id,目标数据库中第一存储数据的第二属性字段分别为id、name和addr,其中,第二属性字段id为目标属性字段,可以将目标属性字段id的属性值与第一属性字段id的属性值进行匹配;当目标属性字段id的属性值与第一属性字段id的属性值相同时,则可以确定原始数据与该第一存储数据匹配;当目标属性字段id的属性值与第一属性字段id的属性值不相同时,则可以确定原始数据与该第一存储数据不匹配。
[0150]
再比如,原始数据的第一属性字段为原始数据的全部属性字段,即id、name和addr,目标数据库中第一存储数据的第二属性字段分别为id、name、addr和description,其中,第二属性字段id、name和addr为目标属性字段,可以将目标属性字段id、name和addr的属性值分别与第一属性字段id、name和addr进行匹配;当目标属性字段中id的属性值与第一属性字段中id的属性值相同,和/或,目标属性字段中name的属性值与第一属性字段中name的属性值相同,和/或,目标属性字段中addr的属性值与第一属性字段中addr的属性值相同时,则可以确定原始数据与该第一存储数据匹配;当目标属性字段中id的属性值与第一属性字段中id的属性值不同,且,目标属性字段中name的属性值与第一属性字段中name的属性值不同,且,目标属性字段中addr的属性值与第一属性字段中addr的属性值不同时,则可以确定原始数据与该第一存储数据不匹配。
[0151]
从而本技术中,可以将目标数据库的各第一存储数据中与原始数据匹配的第一存储数据作为参考存储数据;而当目标数据库的各第一存储数据均与原始数据不匹配时,则目标数据库中不存在参考存储数据。
[0152]
在本技术实施例中,当目标数据库中存在参考存储数据时,则可以将参考存储数据作为与待处理数据匹配的第一目标存储数据;当目标数据库中不存在参考存储数据时,则可以确定不存在与待处理数据匹配的第一目标存储数据。
[0153]
由此,通过将待处理数据对应的原始数据与目标数据库中的数据进行匹配的方式,来有效地确定目标数据库中是否存在与待处理数据匹配的数据。
[0154]
在本技术实施例的另一种可能的实现方式中,当待处理数据和目标数据库中的第一存储数据存在唯一键时,可以将待处理数据与目标数据库中的第一存储数据进行匹配,以判断目标数据库中是否存在与待处理数据匹配的第一目标存储数据。
[0155]
作为一种示例,当待处理数据和目标数据库中的第一存储数据存在唯一键时,可以将待处理数据的唯一键与目标数据库中的任一第一存储数据的唯一键进行匹配;当确定待处理数据的唯一键与该任一第一存储数据的唯一键相同或匹配时,则可以将该任一第一存储数据作为第一目标存储数据,即可以确定目标数据库中存在与待处理数据匹配的第一目标存储数据;当确定待处理数据的唯一键与目标数据库中各第一存储数据的唯一键均不相同或均不匹配时,则可以确定目标数据库中不存在与待处理数据匹配的第一目标存储数据。
[0156]
由此,通过将待处理数据与目标数据库中的数据进行匹配放入方式,来有效地确定目标数据库中是否存在与待处理数据匹配的数据。
[0157]
在本技术实施例的又一种可能的实现方式中,还可以将待处理数据的属性字段
(本技术中记为第三属性字段)与目标数据库中第一存储数据的至少一个第二属性字段进行匹配的方式,来确定目标数据库中是否存在与待处理数据匹配的第一目标存储数据。
[0158]
作为一种示例,可以将待处理数据的第三属性字段与目标数据库中的第一存储数据进行匹配,以判断各第一存储数据中是否存在与第三属性字段匹配的候选存储数据,响应于存在候选存储数据,将该候选存储数据作为与待处理数据匹配的第一目标存储数据;响应于不存在该候选存储数据,确定不存在与待处理数据匹配的第一目标存储数据。
[0159]
一种示例,针对目标数据库中的任意一个第一存储数据,可以将待处理数据的第三属性字段与该第一存储数据的至少一个第二属性字段进行匹配,若上述至少一个第二属性字段中的候选属性字段与待处理数据的第三属性字段匹配,则将该候选属性字段的属性值与待处理数据的第三属性字段的属性值进行匹配,在该候选属性字段的属性值与待处理数据的第三属性字段的属性值匹配的情况下,可以确定待处理数据与该第一存储数据匹配,即确定该第一存储数据为与待处理数据匹配的候选存储数据,而在该候选属性字段的属性值与待处理数据的第三属性字段的属性值不匹配的情况下,可以确定待处理数据与该第一存储数据不匹配,即确定目标数据库中不存在与待处理数据匹配的候选存储数据。在本技术实施例中,当目标数据库中存在第一目标存储数据时,则可以执行步骤s203;当目标数据库中不存在第一目标存储数据时,则可以执行步骤s204至步骤s206。
[0160]
步骤s203,响应于更新指令,对目标数据库中的第一目标存储数据进行更新。
[0161]
在本技术实施例中,当目标数据库中不存在与待处理数据匹配的第一目标存储数据时,则可以响应于更新指令,对目标数据库中的第一目标存储数据进行更新。
[0162]
作为一种可能的实现方式,可以根据待处理数据中的第三属性字段,从第一目标存储数据中确定与第三属性字段匹配的第四属性字段;并可以判断第三属性字段的属性值和第四属性字段的属性值是否匹配;在第三属性字段的属性值和第四属性字段的属性值不匹配时,将第四属性字段的属性值更新为第三属性字段对应的属性值。
[0163]
在本技术实施例中,第三属性字段为待处理数据中的属性字段。
[0164]
在本技术实施例中,第四属性字段为第一目标存储数据中的属性字段,且第四属性字段与待处理数据中的第三属性字段相同或匹配。
[0165]
作为一种示例,假设存在一条待处理数据1,比如,该待处理数据1如表5所示:
[0166]
表5
[0167][0168][0169]
目标数据库中的第一目标存储数据1如表6所示:
[0170]
表6
[0171]
属性字段名称属性字段对应的属性值id1name路人甲addrb市
descriptionx国xx省人
[0172]
根据待处理数据1的第三属性字段id、name和addr,从第一目标存储数据1中确定与上述第三属性字段匹配的第四属性字段id、name和addr,并可以判断第三属性字段id和第四属性字段id的属性值是否匹配(即是否相同)、第三属性字段name和第四属性字段name的属性值是否匹配、第三属性字段addr和第四属性字段addr的属性值是否匹配,显然的,根据表5和表6可以确定:第三属性字段name的属性值与第四属性字段name的属性值不匹配、第三属性字段addr的属性值与第四属性字段addr的属性值不匹配,则可以将第四属性字段name的属性值更新为第三属性字段name的属性值、将第四属性字段addr的属性值更新为第三属性字段addr的属性值,即更新后的第一目标存储数据1可以如表7所示:
[0173]
表7
[0174]
属性字段名称属性字段对应的属性值id1name路人乙addra市descriptionx国xx省人
[0175]
在本技术实施例的一种可能的实现方式中,当待处理数据中第三属性字段的属性值和第四属性字段的属性值匹配时,表明待处理数据包含的内容与第一目标存储数据重复,此时,为了避免数据的无效更新,可以丢弃该待处理数据。
[0176]
作为一种示例,假设待处理数据1如表5所示,第一目标存储数据2如表8所示,
[0177]
表8
[0178]
属性字段名称属性字段对应的属性值id1name路人乙addra市出生日期2022年5月1日
[0179]
根据待处理数据1的第三属性字段id、name和addr,从第一目标存储数据2中确定与上述第三属性字段匹配的第四属性字段id、name和addr,并可以判断第三属性字段id和第四属性字段id的属性值是否匹配(即是否相同)、第三属性字段name和第四属性字段name的属性值是否匹配、第三属性字段addr和第四属性字段addr的属性值是否匹配,显然的,根据表5和表8可以确定:第三属性字段id的属性值与第四属性字段id的属性值匹配,第三属性字段name的属性值与第四属性字段name的属性值匹配、第三属性字段addr的属性值与第四属性字段addr的属性值匹配,即待处理数据1的任一第三属性字段的属性值和与该任一第三属性字段匹配的第四属性字段的属性值匹配,此时无需再根据待处理数据1对目标数据库中的第一目标存储数据2进行更新,可以丢弃该待处理数据1。
[0180]
步骤s204,返回更新失败记录。
[0181]
在本技术实施例中,当目标数据库中不存在与待处理数据匹配的第一目标存储数据时,则可以返回更新失败记录。
[0182]
步骤s205,在更新失败的情况下,将待处理数据缓存至目标内存中。
[0183]
步骤s206,在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的
缓存数据导入目标数据库。
[0184]
步骤s205至s206的解释说明可以参见本技术任一实施例中的相关描述,在此不做赘述。
[0185]
本技术实施例的数据同步方法,通过根据更新指令,判断目标数据库中是否存在与待处理数据匹配的第一目标存储数据;若存在第一目标存储数据,则响应于更新指令,对目标数据库中的第一目标存储数据进行更新;若不存在第一目标存储数据,则返回更新失败记录。由此,可以实现根据更新指令,有效确定目标数据库中与待处理数据匹配的数据,从而可以根据该待处理数据对目标数据库中与该待处理数据匹配的数据进行更新,提升目标数据库中数据更新的准确性和有效性。
[0186]
为了清楚说明本技术任一实施例中,当目标内存中的缓存数据量达到设定的数据量阈值时,是如何将目标内存中的缓存数据导入目标数据库的,本技术还提出一种数据同步方法。
[0187]
图3为本技术实施例提供的另一种数据同步方法的流程示意图。
[0188]
如图3所示,该数据同步方法可以包括以下步骤:
[0189]
步骤s301,获取至少一条待处理数据。
[0190]
步骤s302,响应于待处理数据对应的更新指令对目标数据库进行更新。
[0191]
步骤s303,在更新失败的情况下,将待处理数据缓存至目标内存中。
[0192]
步骤s301至s303的解释说明可以参见本技术任一实施例中的相关描述,在此不做赘述。
[0193]
步骤s304,响应于目标内存的缓存数据量达到设定的数据量阈值,根据目标内存中的多条缓存数据,生成第一执行脚本文件中对应的至少一条执行语句。
[0194]
需要说明的是,步骤s104中对缓存数据量和设定的数据量阈值的解释说明同样适用于本技术实施例,在此不做赘述。
[0195]
在本技术实施例中,当目标内存的缓存数据量达到设定的数据量阈值时,可以根据目标内存中的多条缓存数据,生成第一执行脚本文件中对应的至少一条执行语句,即,第一执行脚本文件中包含至少一条执行语句,其中,第一执行脚本文件中的执行语句的数量可以为但不限于为一条,本技术对此不做限制。
[0196]
作为一种示例,当目标内存的缓存数据量达到设定的数据量阈值时,可以根据目标内存中的多条缓存数据,生成第一执行脚本文件中对应的一条执行语句。即,一条执行语句与多条缓存数据对应。
[0197]
作为再一种示例,当目标内存中的缓存数据量达到设定的数据量阈值时,可以根据目标内存中的多条缓存数据,生成第一执行脚本文件中对应的多条执行语句。比如,每条执行语句与一条缓存数据对应,即执行语句与缓存数据之间为一一对应的关系。例如,可以根据目标内存中的多条缓存数据,生成第一执行脚本文件中对应的多条sql语句。
[0198]
步骤s305,执行第一执行脚本文件中的至少一条执行语句,以将目标内存中的多条缓存数据导入目标数据库。
[0199]
在本技术实施例中,可以执行第一执行脚本文件中的至少一条执行语句,以将目标内存中的多条缓存数据导入目标数据库中。
[0200]
在本技术实施例的一种可能的实现方式中,为了降低目标数据库中的存储开销,
以及,提升导入至目标数据库中的各数据的准确性和可靠性,在本技术中,当目标内存中的缓存数据量达到设定的数据量阈值时,可以检测目标内存中是否存在重复的存储数据。如果目标内存中存在重复的缓存数据,则可以仅保留重复的缓存数据中的其中一个,比如,可以保留重复的缓存数据中最先缓存的数据,或者,可以保留重复的缓存数据中最后缓存的数据,或者可以保留重复的缓存数据中所占字节数最大的数据等等。由此,可以实现删除其他相同的缓存数据,以提升后续的数据导入效率。最后可以根据目标内存中保留的各缓存数据,生成第二执行脚本文件中对应的至少一条执行语句。从而可以执行第二执行脚本文件中的至少一条执行语句,以将目标内存中保留的各缓存数据导入目标数据库。
[0201]
需要说明的是,第二执行脚本文件中的执行语句的数量可以为但不限于为一个,本技术对此不做限制。
[0202]
为了检测目标内存中是否存在重复的缓存数据,在本技术实施例的一种可能的实现方式中,可以采用以下三种方法:
[0203]
方法一:可以将目标内存中各缓存数据的第五属性字段进行匹配;在确定各缓存数据中存在至少两个第一缓存数据的第五属性字段匹配(或相同)之后,可以判断该至少两个第一缓存数据的第五属性字段的属性值是否匹配;在至少两个第一缓存数据的第五属性字段的属性值匹配的情况下,可以将该至少两个第一缓存数据作为重复的缓存数据。
[0204]
在本技术实施例中,第五属性字段可以是各缓存数据的部分或全部属性字段,或者也可以是各缓存数据的主键等,本技术对此不做限制。
[0205]
方法二:在缓存数据存在唯一键的情况下,可以将各缓存数据的唯一键进行匹配;当各缓存数据中存在至少两个第二缓存数据的唯一键匹配(或相同)时,则可以将该至少两个第二缓存数据作为重复的缓存数据。
[0206]
方法三:在缓存数据不存在唯一键,且缓存数据存在对应的信息摘要算法md5(message-digest algorithm5)值的情况下,可以将各缓存数据对应的md5值进行匹配;当各缓存数据中存在至少两个第三缓存数据对应的md5值匹配时,则可以将至少两个第三缓存数据作为重复的缓存数据。
[0207]
需要说明的是,md5值可以是根据各待处理数据(即各缓存数据)对应的初始数据或原始数据计算得到的,可以建立md5值与初始数据对应的待处理数据之间的对应关系,并将该对应关系保存在目标内存中,比如,可以以map结构构建上述对应关系,其中,map结构中键key为md5值,值value为待处理数据。
[0208]
其中,初始数据可以是在数据新增事件中捕获的数据,并可以根据该初始数据计算得到该初始数据对应的md5值,并保存该md5值,且对后续的数据更新事件中,在该初始数据的基础上更新得到的更新数据,均可以为更新数据赋予该初始数据对应的md5值,即建立更新数据与该初始数据对应的md5值之间的对应关系,从而可以便于后续根据md5值追踪更新数据最原始的初始数据。
[0209]
比如,在数据新增事件中捕获初始数据1,根据该初始数据1计算得到对应的md5值;后续的数据更新中,初始数据1更新为更新数据2、更新数据2更新为更新数据3、更新数据3更新为更新数据4,其中,更新数据2、更新数据3和更新数据4均可以称为在初始数据1的基础上更新得到的更新数据,在上述每一次数据更新事件中,均可以建立更新数据与该初始数据1对应的md5值之间的对应关系,比如,在初始数据1更新为更新数据2事件中,建立更
新数据2与该初始数据1对应的md5值之间的对应关系。
[0210]
由此,可以实现根据不同方式,对目标内存中重复的缓存数据进行有效检测,提升该方法的灵活性和适用性。
[0211]
本技术实施例的数据同步方法,通过响应于目标内存的缓存数据量达到设定的数据量阈值,根据目标内存中的多条缓存数据,生成执行脚本文件中对应的至少一条执行语句;执行上述执行脚本文件中的至少一条执行语句,以将目标内存中的多条缓存数据导入目标数据库。由此,可以实现将目标内存中的缓存数据批量导入至目标数据库,在目标数据库不存在待处理数据(即缓存数据)的情况下,可以避免待处理数据丢失的问题,且可以提升目标数据库的导入性能,进一步地,可以提升数据存储的准确性和有效性。
[0212]
需要说明的是,可能存在以下一种场景,假设存在数据1,且目标数据库中不存在该数据1。在数据更新事件中,数据1更新为数据2,数据2即为本技术的待处理数据,在根据数据2对应的更新指令对目标数据库进行更新时,因为目标数据库中不存在数据1,故更新失败,因此,需要将数据2缓存至目标内存中。在目标内存中的数据2导入目标数据库之前,可能存在将数据2更新为数据3的数据更新事件,此时在根据数据3对应的更新指令对目标数据库进行更新时,因为目标数据库中不存在数据2,故更新失败,因此,需要将数据3缓存至目标内存中。如果直接将数据3缓存至目标内存中,则会导致目标内存中存在匹配的数据2和数据3,进而在将目标内存中的缓存数据导入目标数据库中,会导致目标数据库中存在匹配的多条数据。
[0213]
因此,针对上述情况,在本技术实施例的一种可能的实现方式中,在将待处理数据缓存至目标内存中之前,可以根据待处理数据对目标内存进行检测,以检测目标内存中是否存在与待处理数据匹配的缓存数据;在存在与待处理数据匹配的缓存数据的情况下,可以根据待处理数据对与待处理数据匹配的缓存数据进行更新,以使目标内存中仅保留最后更新的待处理数据。下面结合图4,对上述过程进行详细说明。
[0214]
图4为本技术实施例提供的另一种数据同步方法的流程示意图。
[0215]
如图4所示,在以上任一实施例的基础上,将待处理数据缓存至目标内存中,可以包括以下步骤:
[0216]
步骤s401,在将待处理数据缓存至目标内存之前,判断目标内存中是否存在与待处理数据匹配的第四缓存数据。
[0217]
在本技术实施例中,在将待处理数据缓存至目标内存之前,可以判断目标内存中是否存在与待处理数据匹配的第四缓存数据。
[0218]
作为一种可能的实现方式,可以根据待处理数据的第六属性字段,确定目标内存中是否存在第四缓存数据,其中,第四缓存数据的第七属性字段与第六属性字段匹配或相同,且第七属性字段的属性值与第六属性字段的属性值匹配或相同。
[0219]
在本技术实施例中,第六属性字段可以是待处理数据的部分或全部属性字段,或者也可以是待处理数据的主键等,本技术对此不做限制。
[0220]
作为另一种可能的实现方式,当待处理数据和目标内存中的各缓存数据存在唯一键时,可以根据待处理数据的唯一键,确定目标内存中是否存在第四缓存数据,其中,第四缓存数据的唯一键可以与待处理数据的唯一键匹配或相同。
[0221]
作为再一种可能的实现方式,当待处理数据和目标内存中的各缓存数据均存在对
应的md5值时,可以根据待处理数据对应的md5值,确定目标内存中是否存在第四缓存数据,其中,第四缓存数据对应的md5值与待处理数据对应的md5值匹配。
[0222]
需要说明的是,步骤s305中对md5值解释说明同样适用于本技术实施例,在此不做赘述。
[0223]
在本技术实施例中,在将待处理数据缓存至目标内存中之前,可以将该待处理数据对应的md5值与目标内存中的各缓存数据的md5值进行匹配,当目标内存中存在md5值与待处理数据对应的md5值匹配或相同的缓存数据时,可以将该缓存数据作为第四缓存数据。
[0224]
由此,可以准确判断目标内存中是否存在与待处理数据匹配的第四缓存数据。
[0225]
步骤s402,在目标内存中存在第四缓存数据的情况下,根据待处理数据对目标内存中的第四缓存数据进行更新。
[0226]
在本技术实施例中,当目标内存中存在第四缓存数据时,可以根据待处理数据对目标内存中的第四缓存数据进行更新。
[0227]
步骤s403,在目标内存未存在第四缓存数据的情况下,将待处理数据缓存至目标内存中。
[0228]
在本技术实施例中,在目标内存未存在第四缓存数据的情况下,可以将待处理数据缓存至目标内存中。
[0229]
本技术实施例的数据同步方法,通过在将待处理数据缓存至目标内存之前,判断目标内存中是否存在与待处理数据匹配的第四缓存数据;在目标内存中存在第四缓存数据的情况下,根据待处理数据对目标内存中的第四缓存数据进行更新;在目标内存未存在第四缓存数据的情况下,将待处理数据缓存至目标内存中。由此,可以使得目标内存中缓存的缓存数据均为最新更新且互不匹配的数据,并可以提升后续将缓存数据导入目标数据库的导入效率。
[0230]
在本技术一种可能的实现方式中,为了清楚说明是如何将目标内存中的缓存数据导入目标数据库的,本技术还提出一种数据同步的方法。
[0231]
图5为本技术实施例提供的另一种数据同步方法的流程示意图。
[0232]
如图5所示,该数据同步方法还可以包括以下步骤:
[0233]
步骤s501,获取至少一条待处理数据。
[0234]
步骤s502,响应于待处理数据对应的更新指令对目标数据库进行更新。
[0235]
步骤s503,在更新失败的情况下,将待处理数据缓存至目标内存中。
[0236]
步骤s501至s503的解释说明可以参见本技术任一实施例中的相关描述,在此不做赘述。
[0237]
步骤s504,在目标内存的缓存数据量达到设定的数据量阈值时,根据目标内存中各缓存数据对应的时间戳,设置各缓存数据的编号,其中,编号与时间戳呈正相关关系。
[0238]
需要说明的是,步骤s104对缓存数据量和数据量阈值的解释说明同样适用于本技术实施例,在此不做赘述。
[0239]
在本技术实施例中,缓存数据可以有对应的时间戳,比如,该时间戳用于指示缓存数据缓存至目标内存的时刻。
[0240]
在本技术实施例中,当目标内存的缓存数据量达到设定的数据量阈值时,可以根据目标内存中各缓存数据对应的时间戳,设置各缓存数据的编号,其中,编号可以与时间戳
所指示的时刻呈正相关关系,即时间戳所指示的时刻越晚,编号越大。
[0241]
步骤s505,将携带编号的各缓存数据导入目标数据库。
[0242]
在本技术实施例中,可以将携带编号的各缓存数据导入目标数据库。
[0243]
仍以上述场景进行说明,在将携带编号的各缓存数据按顺序导入目标数据库时,数据2先导入目标数据库,在导入数据3时,由于数据3与目标数据库中的数据2匹配,或返回导入失败记录,即会出现数据导入错误。因此,在本技术实施例的一种可能的实现方式中,为了提升导入目标数据库中数据的准确性,以及避免相似数据的重复导入,可以将携带编号的各缓存数据与目标数据库中的第二存储数据进行匹配,以判断各第二存储数据中是否存在与各缓存数据匹配的第二目标存储数据;当存在第二目标存储数据时,可以返回导入失败记录;当不存在第二目标存储数据时,可以将各缓存数据导入目标数据库。
[0244]
在本技术实施例中,第二存储数据可以是目标数据库中的任一数据。
[0245]
作为一种可能的实现方式,可以通过以下几种方式,确定各第二存储数据中是否存在与各缓存数据匹配的第二目标存储数据:
[0246]
第一种,针对目标缓存中的任一缓存数据,可以根据该任一缓存数据的第八属性字段,确定目标数据库中是否存在第二目标存储数据,其中,第二目标存储数据的第九属性字段可以与该任一缓存数据的第八属性字段匹配或相同,且第九属性字段的属性值可以与该任一缓存数据的第八属性字段的属性值匹配或相同。
[0247]
其中,第八属性字段可以为缓存数据的部分或全部属性字段,或者也可以为缓存数据的主键等,本技术对此不做限制。
[0248]
第二种,针对目标缓存中的任一缓存数据,可以根据该任一缓存数据的唯一键,确定目标数据库中是否存在第二目标存储数据,其中,第二目标存储数据的唯一键与该任一缓存数据的唯一键匹配。
[0249]
从而本技术中,在确定目标数据库中存在第二目标存储数据的情况下,可以返回导入失败记录;当不存在第二目标存储数据时,可以将该任一缓存数据直接导入目标数据库,由此,可以提升数据存储或数据同步的准确性。
[0250]
在本技术实施例的一种可能的实现方式中,在各缓存数据中存在目标缓存数据导入失败的情况下,可以从目标数据库中获取与目标缓存数据匹配的第三目标存储数据,并可以判断目标内存中是否存在与目标缓存数据匹配的第五缓存数据,其中,第五缓存数据与目标缓存数据不同;在存在第五缓存数据的情况下,可以判断目标缓存数据的编号是否大于第五缓存数据的编号;在目标缓存数据的编号大于第五缓存数据的编号的情况下,根据目标缓存数据对第三目标存储数据进行更新;在目标缓存数据的编号未大于第五缓存数据的编号的情况下,丢弃目标缓存数据,以根据第五缓存数据对第三目标存储数据进行更新。
[0251]
也就是说,当各缓存数据中存在目标缓存数据导入失败时,表明目标数据库中存在与该目标缓存数据匹配的第二存储数据,即第三目标存储数据,可以获取该第三目标存储数据;并可以根据目标缓存数据,判断目标内存中是否还存在与目标缓存数据匹配的第五缓存数据,且第五缓存数据可以与目标缓存数据不同;如果目标内存中存在该第五缓存数据,表明第五缓存数据、目标缓存数据均与第三目标缓存数据匹配,此时,可以将第五缓存数据的编号与目标缓存数据的编号进行比较,当目标缓存数据的编号大于第五缓存数据
的编号时,表明目标缓存数据写入缓存的时间比第五缓存数据写入缓存的时间晚,目标缓存数据是最新更新的数据,此时可以根据目标缓存数据对第三目标存储数据进行更新;而当目标缓存数据的编号未大于第五缓存数据的编号时,表明目标缓存数据写入缓存的时间比第五缓存数据写入缓存的时间早,第五缓存数据是最新更新的数据,此时可以根据第五缓存数据对第三目标存储数据进行更新,并可以丢弃目标缓存数据。
[0252]
需要说明的是,判断目标内存中是否存在与目标缓存数据匹配的第五缓存数据与上述判断目标数据库中各第二存储数据中是否存在与各缓存数据匹配的第二目标存储数据的方法类似,在此不做赘述。
[0253]
本技术实施例的数据同步方法,通过根据目标内存中各缓存数据对应的时间戳,设置各缓存数据的编号,其中,编号与时间戳呈现的时刻呈正相关关系;将携带编号的各缓存数据导入目标数据库。由此,通过对目标内存中的各缓存数据设置编号,可以实现数据的顺序导入,且可以便于后续对导入目标数据库的缓存数据的检测,以提升数据同步的准确性和有效性。
[0254]
作为一种示例,在对目标数据库中目的表中不存在的数据进行数据同步的场景中,在不侵入源数据库设备、不影响源数据库业务的前提下,可以采用本技术的数据同步方法,其中,数据同步方法的具体流程如图6所示。
[0255]
该方法可以包括以下步骤:
[0256]
1.源数据库的数据增量抽取输入,例如通过日志解析的增量输入,采用触发器的增量输入等,可以产生源数据库的数据更新事件产生的待处理数据,并可以获取源数据库的数据更新事件所产生的待处理数据;
[0257]
2.根据待处理数据对应的更新指令对目标数据库中的目的表进行更新,其中,针对待处理数据,可以基于该待处理数据对应的更新指令中的原始数据,对目标数据库中的目的表中与原始数据匹配的存储数据的查找,依次匹配目的表中的任一存储数据;其中,待处理数据是对原始数据进行更新得到的;
[0258]
3.当匹配成功时,可以根据该待处理数据更新目的表中与该待处理数据对应的原始数据匹配的第一目标存储数据,更新有效;
[0259]
4.当匹配不成功时,表明目的表中不存在与该待处理数据对应的原始数据匹配的第一目标存储数据,可以返回更新失败记录,并可以将该待处理数据缓存至目标内存中;
[0260]
5.每结束一次缓存操作,可以判断目标缓存中的缓存数据量是否达到预先设定的数据量阈值,若达到,则可以将目标内存中的缓存数据直接批量提交至目标数据库,以实现数据存储的同步性。
[0261]
需要说明的是,在将目标内存中的缓存数据批量提交至目标数据库之前,可以对目标内存中的缓存数据进行检测,以检测是否存在重复的存储数据,若存在重复的存储数据,仅保留重复的缓存数据中的其中一个,从而,可以将目标内存中保留的缓存数据提交至目标数据库。
[0262]
或者,也可以在待处理数据缓存至目标内存中之前,可以检测目标内存中是否存在与待处理数据匹配的缓存数据,在确定存在与待处理数据匹配的缓存数据(在本技术中记为第四缓存数据)的情况下,可以根据该待处理数据更新目标内存中与待处理数据匹配的缓存数据。
[0263]
或者,也可以根据待处理数据缓存至目标内存的时间设置各缓存数据对应的编号,时间越晚,编号越大,从而可以将携带编号的缓存数据顺序导入目标数据库中。在导入缓存数据时,根据缓存数据判断目标数据库中是否存在与缓存数据匹配的存储数据;在目标数据库中存在与缓存数据匹配的第二目标存储数据的情况下,返回导入失败记录;而在目标数据库中不存在与缓存数据匹配的第二目标存储数据的情况下,可以直接将缓存数据导入目标数据库。
[0264]
其中,响应于各缓存数据中存在目标缓存数据导入失败,可以从目标数据库中获取与目标缓存数据匹配的第三目标存储数据,并可以判断目标内存中是否存在与目标缓存数据匹配的第五缓存数据,其中,第五缓存数据与目标缓存数据不同;在存在第五缓存数据的情况下,可以判断目标缓存数据的编号是否大于第五缓存数据的编号;在目标缓存数据的编号大于第五缓存数据的编号的情况下,根据目标缓存数据对第三目标存储数据进行更新;在目标缓存数据的编号未大于第五缓存数据的编号的情况下,丢弃目标缓存数据,以根据第五缓存数据对第三目标存储数据进行更新。
[0265]
综上,本技术的数据同步方法,无需人工参与,可以自动完成将目标数据库中目的表中不存在的数据,导入至目标数据库中,可以避免对源数据库解析到的待处理数据丢失的情况,且在采用单表执行数据更新事务时,通过采用缓存机制,先缓存目标数据库中不存在的数据,将批量的缓存数据导入目标数据库,可以提高目标数据库的导入性能;为etl工具做数据增量同步场景提供一种有效且准确的数据同步的方式。
[0266]
与上述几种实施例提供的数据同步方法相对应,本技术的一种实施例还提供一种数据同步装置。由于本技术实施例提供的数据同步装置与上述几种实施例提供的数据同步方法相对应,因此在数据同步方法的实施方式也适用于本实施例提供的数据同步装置,在本实施例中不再详细描述。
[0267]
图7为根据本技术一个实施例的数据同步装置的结构示意图。
[0268]
如图7所示,该数据同步装置700,可以包括:第一获取模块710、第一更新模块720、缓存模块730及导入模块740。
[0269]
其中,第一获取模块710,用于获取至少一条待处理数据。
[0270]
第一更新模块720,用于响应于待处理数据对应的更新指令对目标数据库进行更新。
[0271]
缓存模块730,用于在更新失败的情况下,将待处理数据缓存至目标内存中。
[0272]
导入模块740,用于在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的缓存数据导入目标数据库。
[0273]
作为本技术实施例的一种可能实现方式,第一更新模块720具体用于,根据更新指令,判断目标数据库中是否存在与待处理数据匹配的第一目标存储数据;若存在第一目标存储数据,则响应于更新指令,对目标数据库中的第一目标存储数据进行更新;若不存在第一目标存储数据,则返回更新失败记录。
[0274]
作为本技术实施例的一种可能实现方式,第一更新模块720具体用于,将更新指令中的原始数据与目标数据库中的第一存储数据进行匹配,以判断各第一存储数据中是否存在与原始数据匹配的参考存储数据;其中,待处理数据是对原始数据进行更新得到的;响应于存在参考存储数据,将参考存储数据作为与待处理数据匹配的第一目标存储数据;响应
于不存在参考存储数据,确定不存在与待处理数据匹配的第一目标存储数据。
[0275]
作为本技术实施例的一种可能实现方式,第一更新模块720具体用于,将更新指令中的原始数据的第一属性字段与目标数据库中第一存储数据的至少一个第二属性字段进行匹配;响应于第一存储数据的至少一个第二属性字段中存在目标属性字段与第一属性字段匹配,将目标属性字段的属性值与第一目标属性字段的属性值进行匹配;响应于目标属性字段的属性值与第一属性字段的属性值匹配,确定原始数据与第一存储数据匹配;响应于目标属性字段的属性值与第一属性字段的属性值不匹配,确定原始数据与第一存储数据不匹配。
[0276]
作为本技术实施例的一种可能实现方式,第一更新模块720具体用于,根据待处理数据中的第三属性字段,从第一目标存储数据中确定与第三属性字段匹配的第四属性字段;判断第三属性字段的属性值和第四属性字段的属性值是否匹配;在第三属性字段的属性值和第四属性字段的属性值不匹配时,将第四属性字段的属性值更新为第三属性字段对应的属性值。
[0277]
作为本技术实施例的一种可能实现方式,该数据同步装置700还包括:
[0278]
第一丢弃模块,用于在待处理数据中第三属性字段的属性值和第四属性字段的属性值匹配时,丢弃待处理数据。
[0279]
作为本技术实施例的一种可能实现方式,该数据同步装置700还包括:
[0280]
清空模块,用于清空目标内存中的缓存数据。
[0281]
作为本技术实施例的一种可能实现方式,导入模块740具体用于:响应于目标内存的缓存数据量达到设定的数据量阈值,根据目标内存中的多条缓存数据,生成第一执行脚本文件中对应的至少一条执行语句;执行第一执行脚本文件中的至少一条执行语句,以将目标内存中的多条缓存数据导入目标数据库。
[0282]
作为本技术实施例的一种可能实现方式,导入模块740具体用于:响应于目标内存的缓存数据量达到设定的数据量阈值,检测目标内存中是否存在重复的缓存数据;在目标内存中存在重复的缓存数据时,仅保留重复的缓存数据中的其中一个;根据目标内存中保留的各缓存数据,生成第二执行脚本文件中对应的至少一条执行语句;执行第二执行脚本文件中的至少一条执行语句,以将目标内存中保留的各缓存数据导入目标数据库。
[0283]
作为本技术实施例的一种可能实现方式,导入模块740具体用于:将目标内存中各缓存数据的第五属性字段进行匹配;在各缓存数据中存在至少两个第一缓存数据的第五属性字段匹配的情况下,判断至少两个第一缓存数据的第五属性字段的属性值是否匹配;在至少两个第一缓存数据的第五属性字段的属性值匹配的情况下,将至少两个第一缓存数据作为重复的缓存数据;或者,将各缓存数据的唯一键进行匹配;在各缓存数据中存在至少两个第二缓存数据的唯一键匹配的情况下,将至少两个第二缓存数据作为重复的缓存数据;或者,将各缓存数据对应的信息摘要算法md5值进行匹配;在各缓存数据中存在至少两个第三缓存数据对应的md5值匹配的情况下,将至少两个第三缓存数据作为重复的缓存数据。
[0284]
作为本技术实施例的一种可能实现方式,缓存模块730具体用于:在将待处理数据缓存至目标内存之前,判断目标内存中是否存在与待处理数据匹配的第四缓存数据;在目标内存中存在第四缓存数据的情况下,根据待处理数据对目标内存中的第四缓存数据进行更新;在目标内存未存在第四缓存数据的情况下,将待处理数据缓存至目标内存中。
[0285]
作为本技术实施例的一种可能实现方式,缓存模块730具体用于:根据待处理数据的第六属性字段,确定目标内存中是否存在第四缓存数据,其中,第四缓存数据的第七属性字段与第六属性字段匹配,且第七属性字段的属性值与第六属性字段的属性值匹配;或者,根据待处理数据的唯一键,确定目标内存中是否存在第四缓存数据,其中,第四缓存数据的唯一键与待处理数据的唯一键匹配;或者,根据待处理数据的md5值,确定目标内存中是否存在第四缓存数据,其中,第四缓存数据的md5值与待处理数据的md5值匹配。
[0286]
作为本技术实施例的一种可能实现方式,导入模块740具体用于:根据目标内存中各缓存数据对应的时间戳,设置各缓存数据的编号,其中,编号与时间戳呈正相关关系;将携带编号的各缓存数据导入目标数据库。
[0287]
作为本技术实施例的一种可能实现方式,导入模块740具体用于:将携带编号的各缓存数据与目标数据库中的第二存储数据进行匹配,以判断各第二存储数据中是否存在与各缓存数据匹配的第二目标存储数据;响应于存在第二目标存储数据,返回导入失败记录;响应于不存在第二目标存储数据,将各缓存数据导入目标数据库。
[0288]
作为本技术实施例的一种可能实现方式,该数据同步装置700还包括:
[0289]
第二获取模块,响应于各缓存数据中存在目标缓存数据导入失败,从目标数据库中获取与目标缓存数据匹配的第三目标存储数据。
[0290]
第一判断模块,用于判断目标内存中是否存在与目标缓存数据匹配的第五缓存数据,其中,第五缓存数据与目标缓存数据不同。
[0291]
第二判断模块,用于在存在第五缓存数据的情况下,判断目标缓存数据的编号是否大于第五缓存数据的编号。
[0292]
第二更新模块,用于在目标缓存数据的编号大于第五缓存数据的编号的情况下,根据目标缓存数据对第三目标存储数据进行更新。
[0293]
第二丢弃模块,用于在目标缓存数据的编号未大于第五缓存数据的编号的情况下,丢弃目标缓存数据,以根据第五缓存数据对第三目标存储数据进行更新。
[0294]
作为本技术实施例的一种可能实现方式,导入模块740具体用于:根据任一缓存数据的第八属性字段,确定目标数据库中是否存在第二目标存储数据,其中,第二目标存储数据的第九属性字段与第八属性字段匹配,且第九属性字段的属性值与第八属性字段的属性值匹配;或者,根据缓存数据的唯一键,确定目标数据库中是否存在第二目标存储数据,其中,第二目标存储数据的唯一键与缓存数据的唯一键匹配。
[0295]
作为本技术实施例的一种可能实现方式,第一获取模块710具体用于:获取日志文件,并对日志文件进行解析,以从日志文件中提取至少一条待处理数据;和/或,从源数据库中获取与目标事件匹配的至少一条待处理数据。
[0296]
本技术实施例中的数据同步装置,通过获取至少一条待处理数据;响应于待处理数据对应的更新指令对目标数据库进行更新;在更新失败的情况下,将待处理数据缓存至目标内存中;在目标内存的缓存数据量达到设定的数据量阈值时,将目标内存中的缓存数据导入目标数据库。由此,可以实现在无需人工参与的情况下,自动对目标数据库中的存储数据进行更新,且通过采用缓存机制,先缓存目标数据库中不存在的数据,将缓存的批量数据导入目标数据库,可以提高目标数据库的导入性能。
[0297]
为了实现上述实施例,本技术还提出一种电子设备,图8为本技术实施例提供的一
种电子设备的结构示意图。该电子设备包括:
[0298]
存储器801、处理器802及存储在存储器801上并可在处理器802上运行的计算机程序。
[0299]
处理器802执行所述程序时实现上述实施例中提供的数据同步方法。
[0300]
进一步地,电子设备还包括:
[0301]
通信接口803,用于存储器801和处理器802之间的通信。
[0302]
存储器801,用于存放可在处理器802上运行的计算机程序。
[0303]
存储器801可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0304]
处理器802,用于执行所述程序时实现上述实施例所述的数据同步方法。
[0305]
如果存储器801、处理器802和通信接口803独立实现,则通信接口803、存储器801和处理器802可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0306]
可选的,在具体实现上,如果存储器801、处理器802及通信接口803,集成在一块芯片上实现,则存储器801、处理器802及通信接口803可以通过内部接口完成相互间的通信。
[0307]
处理器802可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0308]
为了实现上述实施例,本技术实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例中提供的数据同步方法。
[0309]
为了实现上述实施例,本技术实施例还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,实现上述实施例中提供的数据同步方法。
[0310]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0311]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0312]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部
分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0313]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0314]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0315]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0316]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0317]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1