CN108897863A - 数据同步方法及其系统以及服务器集群 - Google Patents
数据同步方法及其系统以及服务器集群 Download PDFInfo
- Publication number
- CN108897863A CN108897863A CN201810705478.2A CN201810705478A CN108897863A CN 108897863 A CN108897863 A CN 108897863A CN 201810705478 A CN201810705478 A CN 201810705478A CN 108897863 A CN108897863 A CN 108897863A
- Authority
- CN
- China
- Prior art keywords
- data
- memory space
- metadata
- stored
- comparison
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据同步方法,该方法包括:获取来自数据源的用于描述内容数据对象的第一数据;获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,第二数据和已存储元数据对应,第二数据的数据量小于已存储元数据的数据量;比较第一数据和第二数据的差异,得到差异比较结果;以及基于差异比较结果对已存储元数据进行更新。本公开还提供了一种数据同步系统以及一种服务器集群。
Description
技术领域
本公开涉及一种数据同步方法及其系统以及服务器集群。
背景技术
元数据,又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能,追踪资源在使用过程中的变化。
元数据同步一般都是使用定时任务实现,通常情况下元数据的同步不能用数据库主从方式来实现,而是使用简单的sql查询方式来实现。
但是,在实现本公开构思的过程中,发明人发现相关技术中至少存在以下缺陷:简单的sql查询方式非常消耗时间,尤其是在数据量比较大的情况下,同步性能问题就更加突出。
发明内容
本公开的一个方面提供了一种数据同步方法,包括:获取来自数据源的用于描述内容数据对象的第一数据;获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,上述第二数据和已存储元数据对应,上述第二数据的数据量小于上述已存储元数据的数据量;比较上述第一数据和上述第二数据的差异,得到差异比较结果;以及基于上述差异比较结果对上述已存储元数据进行更新。
可选地,上述方法还包括:在上述差异比较结果表征上述第一数据和上述第二数据存在差异的情况下,基于第三数据更新上述第一存储空间中的上述第二数据,其中,上述第三数据包括上述第一数据中不同于上述第二数据的部分。
可选地,基于上述差异比较结果对上述已存储元数据进行更新,包括:获取来自上述数据源的与上述第三数据对应的第一元数据;以及基于上述第一元数据对存储在第二存储空间中的上述已存储元数据进行更新。
可选地,基于第三数据更新上述第一存储空间中的上述第二数据,包括:在上述第三数据包括处于已删除状态的第四数据的情况下,将上述第四数据更新到上述第一存储空间中并在上述第一存储空间中对上述第四数据进行标记处理;和/或在上述第三数据包括新增的和/或修改的第五数据的情况下,以覆盖或者非覆盖方式将上述第五数据更新到上述第一存储空间中。
可选地,上述方法还包括:创建临时存储空间;以及将获取的上述第一数据保存在上述临时存储空间中,其中,比较上述第一数据和上述第二数据的差异包括:比较上述临时存储空间中的数据与上述第一存储空间中的数据的差异。
可选地,上述方法还包括:在创建上述临时存储空间之前如果已存在一临时存储空间,则先删除该已存在的临时存储空间再重新创建一新的临时存储空间。
本公开的另一个方面提供了一种数据同步系统,包括:第一获取模块,用于获取来自数据源的用于描述内容数据对象的第一数据;第二获取模块,用于获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,上述第二数据和已存储元数据对应,上述第二数据的数据量小于上述已存储元数据的数据量;比较模块,用于比较上述第一数据和上述第二数据的差异,得到差异比较结果;以及第一更新模块,用于基于上述差异比较结果对上述已存储元数据进行更新。
可选地,上述系统还包括:第二更新模块,用于在上述差异比较结果表征上述第一数据和上述第二数据存在差异的情况下,基于第三数据更新上述第一存储空间中的上述第二数据,其中,上述第三数据包括上述第一数据中不同于上述第二数据的部分。
可选地,上述第一更新模块包括:获取单元,用于获取来自上述数据源的与上述第三数据对应的第一元数据;以及更新单元,用于基于上述第一元数据对存储在第二存储空间中的上述已存储元数据进行更新。
可选地,上述第二更新模块还用于:在上述第三数据包括处于已删除状态的第四数据的情况下,将上述第四数据更新到上述第一存储空间中并在上述第一存储空间中对上述第四数据进行标记处理;和/或在上述第三数据包括新增的和/或修改的第五数据的情况下,以覆盖或者非覆盖方式将上述第五数据更新到上述第一存储空间中。
可选地,上述系统还包括:创建模块,用于创建临时存储空间;以及存储模块,用于将获取的上述第一数据保存在上述临时存储空间中,其中,比较上述第一数据和上述第二数据的差异包括:比较上述临时存储空间中的数据与上述第一存储空间中的数据的差异。
可选地,上述创建模块还用于:在创建上述临时存储空间之前如果已存在一临时存储空间,则先删除该已存在的临时存储空间再重新创建一新的临时存储空间。
本公开的另一方面提供了一种服务器集群,包括一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的数据同步方法及其系统的应用场景;
图2示意性示出了根据本公开实施例的数据同步方法的流程图;
图3示意性示出了根据本公开实施例的实现数据同步的示意图;
图4示意性示出了根据本公开另一实施例的数据同步方法的流程图;
图5示意性示出了根据本公开实施例的更新词典表的示意图;
图6示意性示出了根据本公开的更新元数据的方法的流程图;
图7示意性示出了根据本公开另一实施例的数据同步方法的流程图;
图8示意性示出了根据本公开实施例的数据同步系统的框图;
图9示意性示出了根据本公开另一实施例的数据同步系统的框图;
图10示意性示出了根据本公开实施例的第一更新模块的框图;以及
图11示意性示出了根据本公开实施例的适于实现数据同步方法及其系统计算机设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本公开的实施例提供了一种数据同步方法以及能够实现该方法的数据同步系统。该方法包括获取来自数据源的用于描述内容数据对象的第一数据;获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,该第二数据和已存储元数据对应,该第二数据的数据量小于该已存储元数据的数据量;比较该第一数据和该第二数据的差异,得到差异比较结果;以及基于该差异比较结果对该已存储元数据进行更新。
图1示意性示出了根据本公开实施例的数据同步方法及其系统的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,基于Hive、mysql、oracle、……等数据源更新内容数据,一般需要先同步用于描述这些内容数据的元数据。目前,元数据同步一般都是使用定时任务实现,通常情况下元数据的同步不能用数据库主从方式来实现,而是使用简单的sql查询方式来实现。但是,在实现本公开构思的过程中,发明人发现简单的sql查询方式一般都是全量更新方式,非常消耗时间,尤其是在数据量比较大的情况下,同步性能问题就更加突出。
图2示意性示出了根据本公开实施例的数据同步方法的流程图。
如图2所示,该方法包括操作S201~操作S204,其中:
在操作S201,获取来自数据源的用于描述内容数据对象的第一数据。
在本公开实施例中,数据源可以包括各种类型的数据库,如Hive、mysql、oracle、……等,在此不做限定。第一数据可以包括元数据在特定字段的信息,例如第一数据至少可以包括库名、表名和表名最后更新时间。本公开将以第一数据包括库名、表名和表名最后更新时间为例进行详细阐述。
以Hive为例,获取第一数据的流程可以如下:定时从Hive中(如通过TBLS、TABLE_PARAMS、DBS这三张表,其他数据库可以去找相应的数据表导出)导出csv文件或者json文件,文件中保存有库名、表名和表名最后更新时间,因此从这个文件中读取的数据即为第一数据。
在操作S202,获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,该第二数据和已存储元数据对应,该第二数据的数据量小于该已存储元数据的数据量。
其中,第二数据与第一数据类似,也包括元数据在特定字段的信息。需要说明的是,在本公开实施例中,第二数据与第一数据对应着元数据的相同字段,因此第二数据至少可以包括库名、表名和表名最后更新时间。对应于第一数据,本公开将以第二数据包括库名、表名和表名最后更新时间为例进行详细阐述。此外,在第一存储空间中第二数据可以以文件或者数据表的形式存在,在此不做限定。需要特别说明的是,如果是第一次同步,第一存储空间中应该是空的。
由于元数据除了包括库名、表名和表名最后更新时间等字段之外,一般还包括表结构、表类型、表ID、表的创建时间等字段,因此第二数据的数据量小于与之对应的已存储元数据的数据量。
在操作S203,比较该第一数据和该第二数据的差异,得到差异比较结果。
例如,假设第一数据包含的内容如表1所示,第二数据包含的内容如表2所示,那么差异比较结果(即第一数据与第二数据相比差异的部分)如表3所示,其中,表3中第一行是在T1时刻删除的数据,第二行是在T4时刻修改的数据,第三行是在T6时刻新增的数据。
表1
库名 | 表名 | 表名最后更新时间 | 标记 |
Hive | 01 | T1 | 有 |
Hive | 02 | T2 | 无 |
mysql | 01 | T3 | 无 |
mysql | 02 | T4 | 无 |
oracle | 01 | T5 | 无 |
oracle | 02 | T6 | 无 |
表2
表3
库名 | 表名 | 表名最后更新时间 | 标记 |
Hive | 01 | T1 | 有 |
mysql | 02 | T4 | 无 |
oracle | 02 | T6 | 无 |
在操作S204,基于该差异比较结果对该已存储元数据进行更新。
基于上述示例,在进行元数据时,无需基于表1所示的内容对已存储的元数据进行全量更新,只需要基于表3所示的内容对已存储的元数据进行增量更新即可。
如图3所示,在数据同步时,可以先从数据源中导出保存有库名、表名和表名最后更新时间的相关文件,再将这些文件中保存的数据导入在元数据系统的临时表中,然后比较临时表与字典表中的数据,并基于临时表相对于字典表的差异数据更新已存储在元数据表中的元数据。
相比于现有技术的全量更新,本公开实施例的提供的增量更新方式,能够克服简单的sql查询方式非常消耗时的缺陷,如hive元数据2w张表的同步时间可以由原来的26分钟减少到2-3分钟,从而能够实现提高系统的数据同步性能的目的。
此外,本公开与相关技术相比,在同步过程中减少了对数据源和已存储元数据的查询,降低了资源消耗。
下面参考图4~图7,结合具体实施例对图2所示的数据同步方法做进一步说明。
作为一种可选的实施例,如图4所示,该方法除了包括上述实施例所示的操作S201~操作S204之外,还可以包括:
操作S205,在该差异比较结果表征该第一数据和该第二数据存在差异的情况下,基于第三数据更新该第一存储空间中的该第二数据,其中,该第三数据包括该第一数据中不同于该第二数据的部分。
需要说明的是,对于第一存储空间中的第二数据而言,可以更新,也可以不更新,与不更新相比,通过更新第一存储空间中的第二数据可以避免后续同步时需要对某些没有变化的数据进行重复同步而导致浪费时间。
例如,假设第一数据包含的内容如表1所示,第二数据包含的内容如表2所示,那么差异比较结果(即第一数据与第二数据相比差异的部分)如表3所示,其中,表3中的数据即为本实施例中的第三数据,基于表3中的数据更新表2中的数据可以得到如表4所示的数据。
表4
库名 | 表名 | 表名最后更新时间 | 标记 |
Hive | 01 | T0 | 无 |
Hive | 02 | T2 | 无 |
mysql | 01 | T3 | 无 |
mysql | 02 | T0 | 无 |
oracle | 01 | T5 | 无 |
Hive | 01 | T1 | 有 |
mysql | 02 | T4 | 无 |
oracle | 02 | T6 | 无 |
需要说明的是,在比较第一数据与第二数据的差异时,可以仅将第二数据中表名更新时间最近的数据作为第一数据的比较对象。例如,以表4为例,在后续同步时,可以仅仅将该表中的第七行、第八行、第九行、第二行、第三行和第五行作为新获取的第一数据的比较对象。
此外,如果是首次同步,在更新第一存储空间时,可以将第一数据全部写入第一存储空间中作为下次同步时的第二数据使用。
如图5所示,上述表1可以命名为临时表,上述的表2可以命名为词典表。
作为一种可选的实施例,如图6所示,基于该差异比较结果对该已存储元数据进行更新,包括如下操作S601和操作S602:
在操作S601,获取来自该数据源的与该第三数据对应的第一元数据。
例如,假设第一数据包含的内容如表1所示,第二数据包含的内容如表2所示,那么差异比较结果(即第三数据)如表3所示,对应地,与该第三数据对应的第一元数据如表5所示。
表5
第一元数据序号 | 库名字段 | 表名字段 | 表名最后更新时间字段 | 其他字段 |
1 | Hive | 01 | T1 | …… |
2 | mysql | 02 | T4 | …… |
3 | oracle | 02 | T6 | …… |
其中,“……”表示的数据可以根据实际数据确定(如可以包括表基本数据集和表结构数据等),但是,对于序号为“1”的第一元数据而言,其“库名字段”“表名字段”“表名最后更新时间字段”应该依次为“Hive”“01”“T1”,同样,对于序号为“2”的第一元数据而言,其“库名字段”“表名字段”“表名最后更新时间字段”应该依次为“mysql”“02”“T4”,对于序号为“3”的第一元数据而言,其“库名字段”“表名字段”“表名最后更新时间字段”应该依次为“oracle”“02”“T6”。
在操作S602,基于该第一元数据对存储在第二存储空间中的该已存储元数据进行更新。
基于上述示例,上述已存储的元数据应该与表2中的第二数据对应,如表6所示,基于表5所示的第一元数据更新表6可以得到表7。
表6
已存储的元数据序号 | 库名字段 | 表名字段 | 表名最后更新时间字段 | 其他字段 |
1 | Hive | 01 | T0 | …… |
2 | Hive | 02 | T2 | …… |
3 | mysql | 01 | T3 | …… |
4 | mysql | 02 | T0 | …… |
5 | oracle | 01 | T5 | …… |
表7
通过本公开实施例,对元数据进行增量更新,能够克服简单的sql查询方式非常消耗时的缺陷,如hive元数据2w张表的同步时间可以由原来的26分钟减少到2-3分钟,而且能够实现提高系统的数据同步性能的目的。
此外,通过本公开实施例还可以方便其他扩展,比如增加黑白名单。例如,如果用户仅仅关系数据库“Hive”中的数据,而不关心其他数据库中的数据,则进行元数据同步时可以仅仅将表5的第三行数据更新至表6中。
作为一种可选的实施例,基于第三数据更新该第一存储空间中的该第二数据包括:在该第三数据包括处于已删除状态的第四数据的情况下,将该第四数据更新到该第一存储空间中并在该第一存储空间中对该第四数据进行标记处理;和/或在该第三数据包括新增的和/或修改的第五数据的情况下,以覆盖或者非覆盖方式将该第五数据更新到该第一存储空间中。
例如,如表1所示,其中第一行数据表时库名为“Hive”,表名为“01”的元数据在“T1”时刻已被删除,这种情况下在更新表2是可以该条数据标记处,如表4所示,第七行数据具有特殊标记,表示该行数据对应的元数据实际上已经被删除了。
此外,表4中的第八行数据对应的元数据是在第五行数据对应的元数据的基础上修改得到的,具体修改时间为“T4”。表4中的第九行数据对应的元数据新添加的,具体添加时间为“T6”。
需要说明的是,表4是在表2的基础上以非覆盖的形式得到的。而在表2的基础上以覆盖的形式可以得到表8,即表2的第一行和第五行被覆盖,且增加了第七行。
表8
库名 | 表名 | 表名最后更新时间 | 标记 |
Hive | 01 | T1 | 有 |
Hive | 02 | T2 | 无 |
mysql | 01 | T3 | 无 |
mysql | 02 | T4 | 无 |
oracle | 01 | T5 | 无 |
oracle | 02 | T6 | 无 |
通过本公开实施例,在更新第一存储空间中的数据时,对已被删除的数据进行标记,可以便于数据追踪,该方法同样适用于更新如图3所示的元数据表时的操作,在此不再赘述,并且对新增的或者修改的数据进行非覆盖式更新,也可以实现追踪历史数据的目的,但是随着数据同步的不断进行,数据量会越来越大,需要占用较大的存储空间,而以覆盖的形式对新增的或者修改的数据进行追踪,虽然能够提高数据同步的性能,且能够节约存储空间,但是无法实现数据追踪。
作为一种可选的实施例,如图7所示,该方法除了包括上述实施例中的操作S201~操作S204之外,该方法还可以包括:
在操作S205,创建临时存储空间;以及
在操作S206,将获取的该第一数据保存在该临时存储空间中,其中,比较该第一数据和该第二数据的差异包括:比较该临时存储空间中的数据与该第一存储空间中的数据的差异。
如图3所示,在元数据系统的临时存储空间中可以创建临时表,并将第一数据存储在该表中,其中上述实施例中的表1可以作为临时表。
通过本公开实施例,通过比较临时表(如表1)和词典表(如表2)两个表中对应库名和表名的最后更新时间的来判断哪些元数据需要更新,然后再将需要更新的元数据从数据源同步到元数据系统(T)中,具体地可以同步到如图3所示的元数据表中。
进一步,作为一种可选的实施例,该方法还可以包括:在创建该临时存储空间之前如果已存在一临时存储空间,则先删除该已存在的临时存储空间再重新创建一新的临时存储空间。
通过本公开实施例,在创建一临时空间(包括创建临时空间中的临时表)之前先删除已有的临时空间(包括删除该已有的临时空间中的临时表),可以避免数据同步时的重复比较,进而避免重复同步,甚至同步不当。
图8示意性示出了根据本公开实施例的数据同步系统的框图。
作为一种可选的实施例,如图8所示,该系统800包括:第一获取模块801、第二获取模块802、比较模块803和第一更新模块804,其中:
第一获取模块801,用于获取来自数据源的用于描述内容数据对象的第一数据;第二获取模块802,用于获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,该第二数据和已存储元数据对应,该第二数据的数据量小于该已存储元数据的数据量;比较模块803,用于比较该第一数据和该第二数据的差异,得到差异比较结果;以及第一更新模块804,用于基于该差异比较结果对该已存储元数据进行更新。
相比于现有技术的全量更新,本公开实施例的提供的增量更新方式,能够克服简单的sql查询方式非常消耗时的缺陷,如hive元数据2w张表的同步时间可以由原来的26分钟减少到2-3分钟,从而能够实现提高系统的数据同步性能的目的。
作为一种可选的实施例,如图9所示,该系统800还包括:第二更新模块805,用于在该差异比较结果表征该第一数据和该第二数据存在差异的情况下,基于第三数据更新该第一存储空间中的该第二数据,其中,该第三数据包括该第一数据中不同于该第二数据的部分。
需要说明的是,对于第一存储空间中的第二数据而言,可以更新,也可以不更新,与不更新相比,通过更新第一存储空间中的第二数据可以避免后续同步时需要对某些没有变化的数据进行重复同步而导致浪费时间。
作为一种可选的实施例,如图10所示,该第一更新模块804包括:获取单元8041,用于获取来自该数据源的与该第三数据对应的第一元数据;以及更新单元8042,用于基于该第一元数据对存储在第二存储空间中的该已存储元数据进行更新。
通过本公开实施例,对元数据进行增量更新,能够克服简单的sql查询方式非常消耗时的缺陷,如hive元数据2w张表的同步时间可以由原来的26分钟减少到2-3分钟,而且能够实现提高系统的数据同步性能的目的。
作为一种可选的实施例,该第二更新模块还用于:在该第三数据包括处于已删除状态的第四数据的情况下,将该第四数据更新到该第一存储空间中并在该第一存储空间中对该第四数据进行标记处理;和/或在该第三数据包括新增的和/或修改的第五数据的情况下,以覆盖或者非覆盖方式将该第五数据更新到该第一存储空间中。
作为一种可选的实施例,该系统还包括:创建模块,用于创建临时存储空间;以及存储模块,用于将获取的该第一数据保存在该临时存储空间中,其中,比较该第一数据和该第二数据的差异包括:比较该临时存储空间中的数据与该第一存储空间中的数据的差异。
作为一种可选的实施例,该创建模块还用于:在创建该临时存储空间之前如果已存在一临时存储空间,则先删除该已存在的临时存储空间再重新创建一新的临时存储空间。
本公开的另一方面还提供了一种服务器集群,包括一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的方法。
本公开的另一方面还提供了一种非易失性存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提还供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例的模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块801、第二获取模块802、比较模块803和第一更新模块804中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块801、第二获取模块802、比较模块803和第一更新模块804中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块801、第二获取模块802、比较模块803和第一更新模块804中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图11示意性示出了根据本公开实施例的适于实现数据同步方法及其系统计算机设备的框图。图11示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图11所示,计算机设备1100包括处理器1110和计算机可读存储介质1120。该计算机设备1100可以执行根据本公开实施例的方法。
具体地,处理器1110例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1110还可以包括用于缓存用途的板载存储器。处理器1110可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质1120,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质1120可以包括计算机程序1121,该计算机程序1121可以包括代码/计算机可执行指令,其在由处理器1110执行时使得处理器1110执行根据本公开实施例的方法或其任何变形。
计算机程序1121可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1121中的代码可以包括一个或多个程序模块,例如包括1121A、模块1121B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1110执行时,使得处理器1110可以执行根据本公开实施例的方法或其任何变形。
根据本发明的实施例,第一获取模块801、第二获取模块802、比较模块803和第一更新模块804中的至少一个可以实现为参考图11描述的计算机程序模块,其在被处理器1110执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当该一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (10)
1.一种数据同步方法,包括:
获取来自数据源的用于描述内容数据对象的第一数据;
获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,所述第二数据和已存储元数据对应,所述第二数据的数据量小于所述已存储元数据的数据量;
比较所述第一数据和所述第二数据的差异,得到差异比较结果;以及
基于所述差异比较结果对所述已存储元数据进行更新。
2.根据权利要求1所述的方法,其中,所述方法还包括:
在所述差异比较结果表征所述第一数据和所述第二数据存在差异的情况下,基于第三数据更新所述第一存储空间中的所述第二数据,
其中,所述第三数据包括所述第一数据中不同于所述第二数据的部分。
3.根据权利要求2所述的方法,其中,基于所述差异比较结果对所述已存储元数据进行更新,包括:
获取来自所述数据源的与所述第三数据对应的第一元数据;以及
基于所述第一元数据对存储在第二存储空间中的所述已存储元数据进行更新。
4.根据权利要求2所述的方法,其中,基于第三数据更新所述第一存储空间中的所述第二数据,包括:
在所述第三数据包括处于已删除状态的第四数据的情况下,将所述第四数据更新到所述第一存储空间中并在所述第一存储空间中对所述第四数据进行标记处理;和/或
在所述第三数据包括新增的和/或修改的第五数据的情况下,以覆盖或者非覆盖方式将所述第五数据更新到所述第一存储空间中。
5.根据权利要求1所述的方法,其中,所述方法还包括:
创建临时存储空间;以及
将获取的所述第一数据保存在所述临时存储空间中,
其中,比较所述第一数据和所述第二数据的差异包括:比较所述临时存储空间中的数据与所述第一存储空间中的数据的差异。
6.根据权利要求5所述的方法,其中,所述方法还包括:
在创建所述临时存储空间之前如果已存在一临时存储空间,则先删除该已存在的临时存储空间再重新创建一新的临时存储空间。
7.一种数据同步系统,包括:
第一获取模块,用于获取来自数据源的用于描述内容数据对象的第一数据;
第二获取模块,用于获取存储在第一存储空间中用于描述内容数据对象的第二数据,其中,所述第二数据和已存储元数据对应,所述第二数据的数据量小于所述已存储元数据的数据量;
比较模块,用于比较所述第一数据和所述第二数据的差异,得到差异比较结果;以及
第一更新模块,用于基于所述差异比较结果对所述已存储元数据进行更新。
8.根据权利要求7所述的系统,其中,所述系统还包括:
第二更新模块,用于在所述差异比较结果表征所述第一数据和所述第二数据存在差异的情况下,基于第三数据更新所述第一存储空间中的所述第二数据,
其中,所述第三数据包括所述第一数据中不同于所述第二数据的部分。
9.根据权利要求8所述的系统,其中,所述第一更新模块包括:
获取单元,用于获取来自所述数据源的与所述第三数据对应的第一元数据;以及
更新单元,用于基于所述第一元数据对存储在第二存储空间中的所述已存储元数据进行更新。
10.一种服务器集群,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810705478.2A CN108897863A (zh) | 2018-06-29 | 2018-06-29 | 数据同步方法及其系统以及服务器集群 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810705478.2A CN108897863A (zh) | 2018-06-29 | 2018-06-29 | 数据同步方法及其系统以及服务器集群 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108897863A true CN108897863A (zh) | 2018-11-27 |
Family
ID=64347352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810705478.2A Pending CN108897863A (zh) | 2018-06-29 | 2018-06-29 | 数据同步方法及其系统以及服务器集群 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897863A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442585A (zh) * | 2019-06-21 | 2019-11-12 | 中国平安财产保险股份有限公司 | 数据更新方法、数据更新装置、计算机设备及存储介质 |
CN111506260A (zh) * | 2020-03-20 | 2020-08-07 | 新华三信息技术有限公司 | 一种数据处理方法、装置、设备及机器可读存储介质 |
CN112287028A (zh) * | 2020-10-30 | 2021-01-29 | 完美世界(重庆)互动科技有限公司 | 一种数据同步方法及装置、存储介质、计算设备 |
CN112612852A (zh) * | 2020-12-29 | 2021-04-06 | 中国农业银行股份有限公司 | 数据同步方法及装置、电子设备、存储介质 |
CN113050498A (zh) * | 2021-03-23 | 2021-06-29 | 北京和利时系统工程有限公司 | 一种cbtc系统中区域控制器的数据同步方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873908A (zh) * | 2017-01-17 | 2017-06-20 | 北京联想核芯科技有限公司 | 数据存储方法及装置 |
CN108153784A (zh) * | 2016-12-06 | 2018-06-12 | 北京京东尚科信息技术有限公司 | 同步数据处理方法和装置 |
-
2018
- 2018-06-29 CN CN201810705478.2A patent/CN108897863A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153784A (zh) * | 2016-12-06 | 2018-06-12 | 北京京东尚科信息技术有限公司 | 同步数据处理方法和装置 |
CN106873908A (zh) * | 2017-01-17 | 2017-06-20 | 北京联想核芯科技有限公司 | 数据存储方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442585A (zh) * | 2019-06-21 | 2019-11-12 | 中国平安财产保险股份有限公司 | 数据更新方法、数据更新装置、计算机设备及存储介质 |
CN110442585B (zh) * | 2019-06-21 | 2024-04-30 | 中国平安财产保险股份有限公司 | 数据更新方法、数据更新装置、计算机设备及存储介质 |
CN111506260A (zh) * | 2020-03-20 | 2020-08-07 | 新华三信息技术有限公司 | 一种数据处理方法、装置、设备及机器可读存储介质 |
CN112287028A (zh) * | 2020-10-30 | 2021-01-29 | 完美世界(重庆)互动科技有限公司 | 一种数据同步方法及装置、存储介质、计算设备 |
CN112612852A (zh) * | 2020-12-29 | 2021-04-06 | 中国农业银行股份有限公司 | 数据同步方法及装置、电子设备、存储介质 |
CN112612852B (zh) * | 2020-12-29 | 2024-06-11 | 中国农业银行股份有限公司 | 数据同步方法及装置、电子设备、存储介质 |
CN113050498A (zh) * | 2021-03-23 | 2021-06-29 | 北京和利时系统工程有限公司 | 一种cbtc系统中区域控制器的数据同步方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897863A (zh) | 数据同步方法及其系统以及服务器集群 | |
US10417188B2 (en) | Method and system for transferring trust across block chain segments | |
US10055216B2 (en) | Minimizing image copying during partition updates | |
CN107077483B (zh) | 共享文件夹和文件的同步 | |
EP2551854A1 (en) | System for updating an associative memory | |
US9940122B2 (en) | Dynamic data difference generation and distribution | |
US10803079B2 (en) | Timing-based system-period temporal table in a database system | |
US20130218837A1 (en) | Cloud data synchronization with local data | |
US11294958B2 (en) | Managing a distributed knowledge graph | |
CN103379159B (zh) | 一种分布式Web站点数据同步的方法 | |
CN106708891A (zh) | 一种网管数据同步方法及装置 | |
CN106164865A (zh) | 用于数据复制的依赖性感知的事务批处理 | |
US9940406B2 (en) | Managing database | |
CN110019062A (zh) | 数据同步方法和系统 | |
CN113010696A (zh) | 基于元数据模型的工程领域知识图谱构建方法 | |
US20200183604A1 (en) | Partitioning graph data for large scale graph processing | |
CN107346314A (zh) | 一种数据库单向同步方法 | |
CN108829746A (zh) | 一种基于内存数据库的主数据管理系统及装置 | |
US20150040144A1 (en) | Program, information processing apparatus, and event processing method | |
US20180336224A1 (en) | Hash-based synchronization of geospatial vector features | |
CN109359281A (zh) | 动态表单生成方法及装置 | |
CN104021210B (zh) | 以GeoJSON格式半结构化方式存储地理数据的MongoDB集群的地理数据读写方法 | |
CN111651426B (zh) | 数据迁移方法、装置及计算机可读存储介质 | |
US9037539B2 (en) | Data synchronization | |
CN112528090A (zh) | 图数据的存储方法和存储装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181127 |
|
RJ01 | Rejection of invention patent application after publication |