CN101551801A - 数据同步的方法和系统 - Google Patents
数据同步的方法和系统 Download PDFInfo
- Publication number
- CN101551801A CN101551801A CNA2008100886233A CN200810088623A CN101551801A CN 101551801 A CN101551801 A CN 101551801A CN A2008100886233 A CNA2008100886233 A CN A2008100886233A CN 200810088623 A CN200810088623 A CN 200810088623A CN 101551801 A CN101551801 A CN 101551801A
- Authority
- CN
- China
- Prior art keywords
- data
- change type
- data record
- variation position
- data recording
- 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.)
- Granted
Links
Images
Abstract
本发明公开一种数据同步的方法和系统,该数据同步的方法包括:未同步时记录数据记录的变化历史;响应于接收到的同步请求,合并所述数据记录的变化历史;发送所述合并结果。本发明通过高效的合并方法合并数据记录的合并历史,各自将变化的字段从一端发送到另一端,从而提高同步效率。
Description
发明领域
本发明涉及数据同步的方法和系统,特别涉及增量数据同步的方法和系统。
发明背景
近年来,随着各类移动设备(如智能手机,个人数字助理,笔记本电脑等)的广泛使用,在机场、高级写字楼、图书馆、餐馆或咖啡馆里,移动办公的人士比比皆是。移动设备的用户实际上可以作为系统服务器的一个客户机,客户机所取得的现场资料需要与系统服务器数据库同步,当存在数据的多个副本时,这些副本需要保持一致性,一旦断开连接,服务器与每个客户机都可以修改各自的数据。为了获得数据的一致性,必须建立连接并且使各个客户机与服务器保持同步。数据库同步技术可以实现不同数据库之间的数据交换,并确保保持所有数据库中数据的一致性。
一种提高数据库同步效率的方法是增量数据同步,即,在客户机与服务器同步时只需交换变化的数据,而无需交换全部数据。增量数据同步的方法在数据库庞大而内容变化较小的情况下极为有利。例如,如果数据库包含500,000个产品订单,并且每天只增加200个或变化200个产品订单,那么每天将全部产品订单(即500,000)从合并了所有变化的数据库发送到另一个要求同步的数据库将浪费大量的通信资源。
为了支持增量数据同步,传统的数据同步系统在服务器端维护一个或多个版本号来跟踪发生变化的时间点。当客户机执行同步时,从服务器端取出相对于最后一次同步的版本的增量数据变化。然而,变化的数据将在行级别同步,这意味着不管这行有多少列发生变化,整行数据都将被取出并且被发送出去。这样产生的问题是:在多数情况下该行中只有部分列被更新,然而在有限带宽的情况下,未发生变化的列也将被发送出去。因此在一个表包含很多列或未发生变化的列包含诸如LOG,BINARY或者XML等当前越来越常见的大数据类型的情况下,极大地降低了同步性能。
目前存在一种在服务器与客户机之间的数据库进行增量数据同步方法,该方法主要包括:在客户机端保存客户机端上一次同步的数据副本,在客户机与服务器同步时,在客户端通过比较客户端数据与上一次同步的数据副本来确定自从上一次同步客户端数据发生的数据列变化,并将该数据列变化广播到服务器,从而来确定自从上一次同步服务器上发生的数据变化。但是该方法有两个主要缺点,一是在同步时需要大量时间实时比较现有数据和原有数据,增加了同步延迟,降低了同步效率;二是需要在每一个需要同步的计算机上另外维护一个上一次同步的数据副本,增加了大量的存储需求。因此这种增量数据同步方法的效率是一种传统的效率低下的方法。
因此,需要一种改进的、提高同步效率的方法来支持服务器与客户机之间的增量数据同步。
发明内容
为了解决上述问题,本发明设计了一种数据同步的方法和系统。
根据本发明的一个方面,提供一种数据同步的方法,包括:未同步时记录数据记录的变化历史;响应于接收到的同步请求,合并所述数据记录的变化历史;发送所述合并结果。
根据本发明的另一方面,提供一种数据同步系统,包括:记录装置,用于未同步时记录数据记录的变化历史;同步引擎,响应于接收到的同步请求,合并所述数据记录的变化历史,并发送所述合并结果。
本发明的方法在未同步时记录数据记录的变化历史,在进行同步时使用高效的合并方法合并数据记录的变化历史,从而在同步时节省了大量新旧版本的比较计算资源,并且不同于将相同数据记录的所有变化数据记录发送到对方,而仅仅相互交换数据记录中变化的字段,同步双方各自将变化的字段从一端发送到另一端,从而提高同步效率。
附图简述
结合附图,通过参考下列详细的示例性实施例的描述,将会更好地理解本发明本身、优选的实施方式以及本发明的目标和优点,其中
图1示出本发明的数据同步方法的流程图;
图2示出根据本发明的服务器与客户机之间进行数据同步的系统示意图;
图3示出根据本发明的服务器与客户机之间进行数据同步的流程图;
图4A示出服务器端源数据表的示例;
图4B示出服务器端的历史表模式;
图4C示出服务器端第一次加载源数据表的历史表的示例;
图5A示出服务器端第一次发生变化之后的源数据表的示例;
图5B示出服务器端第二次加载源数据表的历史表的示例;
图6A示出服务器端第五次加载源数据表之前的源数据表的示例;
图6B示出服务器端在第五次加载源数据表之后的历史表的示例;
图7示出根据本发明的利用数据记录的变化历史进行合并的方法流程图;
图8详细描述了图7中合并数据记录的工作过程流程图;
图9示出使用图8中的方法进行合并的示例;
图10A示出客户机数据表的模式;
图10B示出客户机数据表的示例;
图10C示出经过一些变化之后的图10B的客户机数据表的示例;
图11示出根据本发明的处理服务器与客户机之间冲突的方法示意图;
图12示出本发明的同步系统示意图。
发明详述
下面结合附图详细描述本发明的数据同步方法和系统。
本发明的数据同步方法涉及存储在任何存储介质的数据记录,数据记录包括多个表示数据记录属性、特征的字段。根据本发明的数据记录能够利用某种属性或特征来唯一标识,例如可以在数据记录中创建一个字段,这个字段的值是某种形式的唯一数值(如时间戳),用这个数值来唯一标识数据记录。
参照图1描述根据本发明的数据同步的方法,在步骤101,未同步时记录数据记录的变化历史;在步骤102,响应于接收到的同步请求,合并所述数据记录的变化历史;在步骤103发送所述合并结果。
根据本发明的实施例,所述数据记录的变化历史为数据字段的变化历史。所述变化历史通过变化类型、变化位以及版本号来记录,所述变化类型用于记录所述数据记录变化的变化类型,所述变化位用于记录与所述数据记录的变化类型对应的字段变化状态,并且所述版本号用于标记所述数据记录的有效时间点。
本发明的数据同步的方法可以应用于服务器与一个客户机之间以及服务器与多个客户机之间的计算机网络系统,在服务器与客户机中存储有数据记录,每个数据记录包括多个表示数据记录属性、特征的字段。图2示出根据本发明的服务器与客户机之间进行数据同步的系统示意图,该系统包括服务器200和多个客户机204,207,210,服务器侧存储有需要与客户机同步的数据记录表201,对于数据记录表中的每个数据记录,存在记录该数据记录变化历史的历史表202。在客户机204、207、210分别存储有数据记录表205、208、211,所述客户机端数据记录表包含与服务器侧的数据记录表相同或部分相同的数据。历史表202和数据记录表205、208、211分别记录服务器端和客户机端数据记录的变化类型和变化位,从而记录服务器端和客户机端数据记录的变化状态。服务器包括同步引擎103,用于合并服务器端数据记录的变化历史以及识别服务器与客户机以及客户机与客户机之间的冲突,客户机204、207、210分别包括同步引擎206、209、212,用于合并客户机端数据记录。服务器同步引擎与客户机同步引擎可以进行通信来执行双向数据同步,各自将数据记录中变化的字段发送给对方。
图3示出根据本发明的在服务器与客户机之间进行数据同步的流程图。在步骤301,在服务器端记录数据记录的变化历史,例如,存在有一个记录数据记录的变化历史的历史表,其中所述历史表中包括变化类型、变化位以及版本号,所述变化类型用来记录所述数据记录变化的变化类型,而所述变化位用来记录与所述数据记录的变化类型对应的字段变化状态,并且所述版本号用于标记所述数据记录的有效时间点。在步骤303,响应于接收到的客户机的同步请求,服务器合并数据记录的变化历史,利用历史表合并相同数据记录的多个变化数据记录的变化类型和变化位并产生对于客户机的增量变化字段。服务器将根据合并结果产生一个或两个发送操作并将所述发送操作发送给客户机。在步骤302,在客户机端记录当前时刻的数据记录相对于上一次同步的变化状态,所述客户机包含的数据记录与服务器端的数据记录全部或部分相同,所述客户机利用变化类型和变化位来记录当前时刻的数据记录相对于上一次同步的变化状态,其中所述变化类型用于记录当前时刻客户机的数据记录相对于上一次同步的变化类型,所述变化位用于记录与所述客户机的数据记录的变化类型对应的字段变化状态。在步骤304,在服务器与客户机进行双向通信时仅仅相互交换变化的字段,各自将变化的字段从一端发送到另一端。在步骤305,服务器将来自不同客户端的变化位进行比较来识别服务器与客户机以及客户机与客户机之间的冲突。
如果添加数据记录,则设置所述数据记录的变化类型为添加并且标记所述数据记录的变化位;如果删除数据记录,则设置所述数据记录的变化类型为删除并且标记所述数据记录的变化位;如果更新数据记录,则设置所述数据记录的变化类型为更新并且标记所述数据记录的变化位。
根据本发明的实施例,服务器端和客户机端的数据记录可以存储在数据库中,图4A示出服务器端源数据表的示例,该源数据表中有三列整数类型(C1,C2,C3),一列可变字符串类型(CCHAR),以及一列二进制大数据类型(CBLOB),其中C1是主关键字列,其余C2,C3,CCHAR以及CBLOB是非主关键字列。在源数据表中存在初始化的两行数据。
图4B示出历史表模式,历史表记录了服务器端源数据表中源数据行的变化历史,源数据行的变化将被定时捕捉,并将每个源数据行的变化用历史表中的一个变化行来表示。历史表模式包含主关键字列PK column,非主关键字列Non-PK Column,From版本号,To版本号,变化类型ChangeType以及变化位ChangeBits。From版本号和to版本号是用于标记源数据行的变化行在两个相对时间点有效的版本号,from版本号表示变化行开始存在的时间点,而to版本号表示变化行有效届满的时间点,即意味着该变化行要出现新的变化。源数据表的所有变化行都将被捕获并被周期地加载到历史表中。根据本发明的实施例,如果添加源数据行,则可以设置所述源数据行的变化类型ChangeType为“I”(添加)并且标记变化位Changebits,例如将变化位Changebits的所有位置为1;如果删除源数据行,则可以设置所述源数据行的变化类型ChangeType为“D”(删除)并且标记变化位Changebits,例如将变化位Changebits的所有位置为0;如果更新源数据行,则可以设置所述源数据行的变化类型ChangeType为更新“U”并且标记变化位Changebits,例如可以将与所述源数据行的更新的列相对应的变化位Changebits置为1以及将与所述源数据行的未更新的列相对应的变化位Changebits置为0。
图4C示出第一次加载源数据表的历史表,所有数据列与源数据表相同。历史表中的每一行用来记录源数据表中的源数据行的每个变化行,对于源数据行的每一个变化行,例如主关键字列C1为1的源数据行,from版本号是该源数据行开始存在的当前版本号1,to版本号是该源数据行有效届满的版本号∞(最大值∞表示该变化行对应源数据表中当前行)。ChangeType为“I”表明该源数据行的变化类型为“I”(添加),ChangeBits是二进制数据类型(1111),它的位数是该源数据表中非主关键字列的数目,因此对于源数据表中的四个非主关键列字,ChangeBits是四位二进制数,其从左至右每一位表示主关键字列C1为1、变化类型为“I”(添加)的源数据行所对应的该源数据行的非主关键字列从左至右每列的变化状态。
图5A-5B示出第一次发生变化之后的源数据表和历史表,其中图5A示出第一次发生变化之后的源数据表,该源数据表中存在多个变化,主关键字列C1为1的源数据行的C2列被更新为“11”,并且添加了主关键字列C1为3的源数据行。图5B示出第二次加载源数据表的历史表,相应地,在历史表中存在一个主关键字列C1为3的新变化行,from版本号是该源数据行开始存在的当前版本号2,to版本号是该源数据行有效届满的版本号∞,其中ChangeType是“I”(添加)并且ChangeBits是(1111),以此来标记新添加的源数据行。此外还存在另一个主关键字列C1为1的新变化行,from版本号是该源数据行开始存在的当前版本号2,to版本号是该源数据行有效届满的版本号∞,其中ChangeType是“U”(更新)并且ChangeBits是(1000),以此来标记源数据表中主关键字列C1为1的源数据行的第一个非主关键字列被更新。同时原历史表中主关键字列C1为1的变化行对应的to版本号被更新为1,表示该源数据行的变化在版本号1之前生效。
图6A-6B示出多次变化之后的源数据表和历史表,图6A示出第五次加载源数据表之前的源数据表,由于源数据表在第一次变化之后没有变化,因此第二次至第四次加载源数据表之后的历史表没有变化,在第五次加载源数据表之前,源数据表存在一些变化,主关键字列C1为1的源数据行的第一行的CCHAR列被更新为’aaaaaa’并且将主关键字列C1为2的源数据行删除。图6B示出在第五次加载源数据表之后的历史表,相应地,在历史表中增加了两个新的变化行,一个是主关键字列C1为1的新变化行,from版本号为该源数据行开始存在的当前版本号“5”,to版本号为该源数据行有效届满的版本号“∞”,ChangeType是“U”并且ChangeBits是(0010),以此来标记源数据表中主关键字列C1为1的源数据行的第三个非主关键字列CCHAR被更新。此外还存在另一个主关键字列C1为2的新变化行,from版本号为该源数据行开始存在的当前版本号“5”,to版本号为该源数据行有效届满的版本号“∞”,ChangeType是“D”并且ChangeBits是(0000),表示源数据表中主关键字列C1为2的行被删除。同时将原历史表中主关键字列C1为2的变化行的to版本号修改为“4”,表示该源数据行的变化在版本4之前生效,并将原历史表中主关键字列为1的第二变化行的to版本号修改为“4”,表示该源数据行的变化在版本4之前生效。
图7示出根据本发明的利用数据记录的变化历史进行合并的方法流程图。在步骤701,取出自上一次同步之后数据记录的变化历史;在步骤702,创建两个变量合并后的变化类型MergedChangeType和合并后的变化位MergedChangeBits;在步骤703,判断是否存在相同数据记录的下一个变化数据记录,判断为“是”,则前进到步骤704,否则过程结束。在步骤704,将相同源数据行的变化行合并,并将得到的合并后的变化类型MergedChangeType和合并后的变化位MergedChangeBits存储在变量MergedChangeType和MergedChangeBits中;在步骤705,取出MergedChangeType的值,该值可以是以下四个值的其中之一:“D”(删除),“DI”(删除后添加),“U”(更新)以及“I”(添加)。如果该值为“D”,那么前进到步骤706,生成删除行操作。如果该值为“DI”,则前进到步骤707,对所有字段产生先删除,然后添加的操作;如果该值为“U”,则前进到步骤708,生成更新操作,其中包含MergedChangeBits中标记变化的字段;如果该值为“I”,则前进到步骤709,对所有要添加的列生成添加操作。在步骤610,判断是否存在下一个数据记录的变化数据记录,如果判断为“是”,则过程返回到步骤703再次循环,否则前进到步骤711结束过程。
图8详细描述了图7中的合并变化数据记录的工作过程,即,如何高效地计算出对于相同数据记录的多个变化数据记录的合并后的变化类型MergedChangeType和合并后的变化位MergedChangeBits。流程的输入是自从上一次同步之后相同数据记录的所有变化数据记录,将所有变化数据记录按照由近及远的时间顺序排序,后发生的变化行将排在在序列的前面。在步骤801,根据最近变化数据记录的ChangeType怕进行不同的步骤。
如果最近变化数据记录的ChangeType是“D”(删除),那么过程进行到步骤802,由于不管在之前发生多少次变化,效果都等同于当前的删除操作,因此MergedChangeType被设置为“D”以及标记MergedChangeBits,例如将MergedChangeBits设置为全零,并且下一步前行到步骤813。
如果最近变化数据记录的ChangeType是“I”(添加),那么过程进行到步骤803,如果在最近变化数据记录之前不存在相同数据记录的变化数据记录,则只进行添加操作,过程进行到804,MergedChangeType被设置为添加“I”以及标记MergedChangeBits,例如将MergedChangeBits设置为全1;如果在最近变化数据记录之前存在相同数据记录的变化数据记录,则该变化数据记录的ChangeType一定是删除,因为添加操作一定伴随一个删除操作,不管在删除操作和添加操作之前有多少次变化,最后都等同于删除后添加的效果,过程进行到步骤805,MergedChangeType被设置为“DI”(删除后添加)以及标记MergedChangeBits,例如将MergedChangeBits设置为全1。
如果最近变化数据记录的ChangeType是“U”(更新),那么前进到步骤806,首先将变量MergedChangeType和MergedChangeBits的值设置为最近变化数据记录的ChangeType和ChangeBits;在步骤807,检查在最近变化数据记录之前是否存在相同数据记录的变化数据记录,如果在最近变化数据记录之前不存在相同数据记录的变化数据记录,则过程前进到步骤813,返回当前的MergedChangeType和MergedChangeBits;如果在最近变化数据记录之前存在相同数据记录的变化数据记录,在步骤808进一步判断该变化数据记录的ChangeType,如果该变化数据记录的ChangeType是“U”(更新),则前进到步骤809,该MergedChangeType仍旧是更新“U”并且MergedChangeBits将是当前MergedChangeBits和该变化数据记录ChangeBits的按位或逻辑运算结果,并且过程返回到808直到将相同数据记录的所有变化数据记录处理完;如果该变化数据记录的ChangeType是添加“I”,则在步骤810,进一步检查在该变化数据记录之前是否存在相同数据记录的下一个变化数据记录,如果存在相同数据记录的下一个变化数据记录,则在步骤811,该下一个变化数据记录的ChangeType一定是删除,将MergedChangeType设置为“DI”(删除后添加)以及标记MergedChangeBits,例如将MergedChangeBits设置为全1;否则如果不存在相同数据记录的下一个变化数据记录,则在步骤812,将MergedChangeType设置为添加“I”并且标记MergedChangeBits,例如将MergedChangeBits设置为全1;在步骤811和步骤812之后,过程前进到步骤813以返回MergedChangeType和MergedChangeBits。
图9示出使用图8中的方法进行变化合并的示例,为了简单、清楚起见,以数据库为例,在示例(1)中,具有相同主关键字列的相同源数据行的最近变化行的ChangeType是“D”(删除),则不管之前存在多少变化,合并结果都将是一个删除操作,因此合并后的MergedChangeType是删除“D”以及MergedChangeBits是(0000)。
在示例2中,具有相同主关键字列的相同源数据行的最近变化行的ChangeType是添加“I”,并且在添加之前的变化行的ChangeType是删除,则在删除之前的所有变化都可以被忽略,因此合并后的MergedChangeType是删除后添加“DI”以及MergedChangeBits是(1111)。
在示例3中,具有相同主关键字列的相同源数据行的所有变化行的ChangeType都是更新“U”,因此三个更新被合并,MergedChangeType是更新“U”,以及MergedChangeBits是三个ChangeBits的按位或逻辑运算结果(0111)。
在示例4中,具有相同主关键字列的相同源数据行的变化行的ChangeType是两个更新“U”和一个添加“I”,因此MergedChangeType是添加“I”以及MergedChangeBits是(1111)。
图10A-10C示出客户机数据表的示例,图10A示出客户机数据表模式,客户机数据表模式包含主关键字列PK column,非主关键字列Non-PKColumn,变化类型ChangeType以及变化位ChangeBits。图10B示出客户机数据表的示例,该源数据表中有三列整数类型(C1,C2,C3),一列可变字符串类型(CCHAR),以及一列二进制大数据类型(CBLOB),其中C1是主关键字列,其余C2,C3,CCHAR以及CBLOB是非主关键字列。图10C示出经过一些变化之后的图10B的客户机数据表的示例,例如,关键字C1为1的数据行由于第三个非关键字列被更新为‘aaaaa’,因此ChangeType是“U”并且ChangeBits是(0010);关键字列C1为2的数据行被删除,因此ChangeType是“D”并且ChangeBits是(0000);关键字列C1为4的行被添加,因此ChangeType是“I”并且ChangeBits是(1111)。
如果基于上一次同步之后的客户机数据表的数据行的变化还有新的变化,则客户机将旧的变化和新的变化合并:
在上一次同步之后的数据行的ChangeType为“U”(更新)的情况下,如果该数据行的新的ChangeType是“D”(删除),则合并后的ChangeType将是“D”(删除)并且标记合并后的ChangeBits,例如将其标记为(0000);如果该数据行的新的ChangeType仍旧是“U”(更新),那么合并后的ChangeType将是“U”(更新),并且合并后的ChangeBits将是该数据行上一次同步的ChangeBits与当前ChangeBits的按位或逻辑运算结果。
在上一次同步之后的数据行的ChangeType为“D”(删除)的情况下,该数据行的新的ChangeType只能是“I”(添加),那么合并后的变化类型是“U”(更新),将上一次同步的数据行与添加后的数据行逐列进行比较,如果相应的列值被改变,则标记ChangeBits的相应位。
在上一次同步之后的数据行的ChangeType为“I”(添加)的情况下,如果该数据行的新的ChangeType是更新,那么合并后的ChangeType将是添加“I”以及标记合并后的ChangeBits,例如将其标记为全1;如果该数据行的新的ChangeType是删除“D”,则在客户机数据表中该数据行将被整行删除。
图11示出在服务器端和客户机端都存在更新操作的情况下通过使用来自不同端的ChangeBits处理冲突的过程。在步骤1101,得到来自服务器端和客户机端的对于相同数据记录的ChangeBits。在步骤1102,所有客户端的ChangeBits进行按位或逻辑运算,服务器端的ChangeBits与所得到的或逻辑运算结果进行按位与逻辑运算;如果按位与逻辑运算结果不全为零,那么在步骤1104,报告服务器与客户机之间发生冲突;如果按位与逻辑运算结果为全零,那么在步骤1103,检查所有客户机的ChangeBits的按位与逻辑运算结果,如果所有客户机的ChangeBits的按位与逻辑运算结果不全为零,那么在步骤1105,报告客户机与客户机之间发生冲突;如果所有客户机的ChangeBits的按位与逻辑运算结果为全零,那么在步骤1106,报告客户机与客户机之间没有冲突发生。
图12示出本发明的数据同步系统1200,包括:记录装置1201,用于未同步时记录数据记录的变化历史;同步引擎1202,响应于接收到的同步请求,合并所述数据记录的变化历史,并发送所述合并结果。
该记录装置用于:如果添加数据记录,则记录所述数据记录的变化类型为添加并且标记所述数据记录的变化位;如果删除数据记录,则记录所述数据记录的变化类型为删除并且标记所述数据记录的变化位;如果更新数据记录,则记录所述数据记录的变化类型为更新并且标记所述数据记录的变化位。
所述同步引擎还包括合并装置,所述合并装置用于分别将对应于相同数据记录的所有变化的变化类型和变化位进行合并,得到合并后的变化类型和合并后的变化位。其中合并装置还包括:删除合并装置,如果所述相同数据记录的最近变化类型为删除,则将合并后的变化类型设置为删除并标识合并后的变化位;添加合并装置,如果所述相同数据记录的最近变化数据记录的变化类型为添加,则在所述最近数据记录之前不存在相同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为添加并标识合并后的变化位,否则在所述最近数据记录之前存在相同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为删除后添加并标识合并后的变化位;更新合并装置,在所述相同数据记录的最近变化记录的变化类型为更新的情况下,如果在所述最近变化数据记录之前不存在相同数据记录的下一个变化数据记录,则将所述最近变化数据记录的变化类型和变化位分别设置为合并后的变化类型和合并后的变化位;如果在所述最近变化数据记录之前存在相同数据记录的下一个变化数据记录并且所述下一个变化数据记录的变化类型是更新,则合并后的变化类型是更新,合并后的变化位是当前合并后的变化位与所述下一个变化数据记录的变化位的按位或逻辑运算结果。如果在所述最近变化数据记录之前存在相同数据记录的下一个变化数据记录并且所述下一个变化数据记录的变化类型是添加,则进一步检查在该变化数据记录之前是否存在相同数据记录的下一个变化数据记录,如果存在相同数据记录的下一个变化数据记录,则将合并后的变化位设置为删除后添加并且标记合并后的变化位;否则如果不存在相同数据记录的下一个变化数据记录,则将合并后的变化位设置为添加并且标记合并后的变化位。
当数据同步系统用于服务器与多个客户机之间进行数据同步时同步引擎还包括冲突检测装置,所述冲突检测装置用于:1)分别接收来自服务器端和多个客户端的对于相同数据记录的变化位;2)对所有来自客户机端的变化位进行按位或逻辑运算;3)对来自服务器端的变化位以及所述客户机端的按位或逻辑运算结果进行按位与逻辑运算;4)根据所述按位与逻辑运算结果来判断所述服务器与客户机之间是否发生冲突。
本发明的数据同步系统中合并装置的具体实现方法可以参照图8和图9的合并方法的流程来实现,在此不一一赘述。
本发明可以硬件、软件、固件或其组合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。优选地,本发明以计算机软件和通用计算机硬件的组合的方式实现,在这种实现方式中,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,或构成本发明的系统。
上面出于举例说明的目的,给出了本发明的优选实施例的说明。优选实施例的上述说明不是穷尽的,也不打算把本发明局限于公开的明确形式,显然鉴于上述教导,许多修改和变化是可能的。对本领域的技术人员来说显而易见的这种修改和变化包括在由附加的权利要求限定的本发明的范围内。
Claims (18)
1.一种数据同步的方法,包括:
未同步时记录数据记录的变化历史;
响应于接收到的同步请求,合并所述数据记录的变化历史;
发送所述合并结果。
2.如权利要求1所述的方法,其中所述数据记录的变化历史为数据记录的字段的变化历史。
3.如权利要求2所述的方法,其中所述变化历史通过变化类型、变化位以及版本号来记录,所述变化类型用于记录所述数据记录变化的变化类型,所述变化位用于记录与所述数据记录的变化类型对应的字段变化状态,并且所述版本号用于标记所述数据记录的有效时间点。
4.如权利要求3所述的方法,其中合并所述变化历史的步骤包括:分别将对应于相同数据记录的所有变化的变化类型和变化位进行合并,得到合并后的变化类型和合并后的变化位。
5.如权利要求4所述的方法,其中记录数据记录的变化历史的步骤还包括:
如果添加数据记录,则设置所述数据记录的变化类型为添加并且标记所述数据记录的变化位;
如果删除数据记录,则设置所述数据记录的变化类型为删除并且标记所述数据记录的变化位;
如果更新数据记录,则设置所述数据记录的变化类型为更新并且标记所述数据记录的变化位。
6.如权利要求5所述的方法,其中所述合并相同数据记录的所有变化数据记录的变化类型和变化位的步骤还包括:
如果所述相同数据记录的最近变化数据记录的变化类型为删除,则将合并后的变化类型设置为删除并标识合并后的变化位;
如果所述相同数据记录的最近变化数据记录的变化类型为添加,则在所述最近数据记录之前不存在相同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为添加并标识合并后的变化位,否则在所述最近数据记录之前存在相同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为删除后添加并标识合并后的变化位;
在所述相同数据记录的最近变化记录的变化类型为更新的情况下,如果在所述最近变化数据记录之前不存在相同数据记录的下一个变化数据记录,则将所述最近变化数据记录的变化类型和变化位分别设置为合并后的变化类型和合并后的变化位;如果在所述最近变化数据记录之前存在相同源数据记录的下一个变化数据记录并且所述下一个变化数据记录的变化类型是更新,则合并后的变化类型是更新,合并后的变化位是当前合并后的变化位与所述下一个变化数据记录的变化位的按位或逻辑运算结果。
7.如权利要求3所述的方法,当所述方法用于服务器与多个客户机之间进行数据同步时还包括冲突判断步骤,该步骤包括:
1)分别接收来自服务器端和多个客户端的对于相同数据记录的变化位;
2)对所有来自客户机端的变化位进行按位或逻辑运算;
3)对来自服务器端的变化位以及所述客户机端的按位或逻辑运算结果进行按位与逻辑运算;
4)根据所述按位与逻辑运算结果来判断所述服务器与客户机之间是否发生冲突。
8.如权利要求9所述的方法,进一步包括:在所述服务器与客户机之间没有冲突发生的情况下,对所有来自客户机端的变化位进行按位与逻辑运算,根据所述客户机端的的按位与逻辑运算结果判断客户机与客户机之间是否发生冲突。
9.如权利要求1-3所述的方法,其中所述数据记录存储在数据库中。
10.一种数据同步系统,包括:
记录装置,用于未同步时记录数据记录的变化历史;
同步引擎,响应于接收到的同步请求,合并所述数据记录的变化历史,并发送所述合并结果。
11.如权利要求10所述的系统,其中所述数据记录的变化历史为数据记录的字段的变化历史。
12.如权利要求11所述的系统,其中所述变化历史通过变化类型、变化位以及版本号来记录,所述变化类型用于记录所述数据记录变化的变化类型,所述变化位用于记录与所述数据记录的变化类型对应的字段变化状态,并且所述版本号用于标记所述数据记录的有效时间点。
13.如权利要求12所述的系统,其中所述同步引擎还包括合并装置,所述合并装置用于分别将对应于相同数据记录的所有变化的变化类型和变化位进行合并,得到合并后的变化类型和合并后的变化位。
14.如权利要求13所述的系统,其中所述记录装置还用于:
如果添加数据记录,则记录所述数据记录的变化类型为添加并且标记所述数据记录的变化位;
如果删除数据记录,则记录所述数据记录的变化类型为删除并且标记所述数据记录的变化位;
如果更新数据记录,则记录所述数据记录的变化类型为更新并且标记所述数据记录的变化位。
15.如权利要求14所述的系统,其中所述同步引擎还包括:
删除合并装置,如果所述相同数据记录的最近变化类型为删除,则将合并后的变化类型设置为删除并标识合并后的变化位;
添加合并装置,如果所述相同数据记录的最近变化数据记录的变化类型为添加,则在所述最近数据记录之前不存在相同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为添加并标识合并后的变化位,否则在所述最近数据记录之前存在相同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为删除后添加并标识合并后的变化位;
更新合并装置,在所述相同数据记录的最近变化记录的变化类型为更新的情况下,如果在所述最近变化数据记录之前不存在相同数据记录的下一个变化数据记录,则将所述最近变化数据记录的变化类型和变化位分别设置为合并后的变化类型和合并后的变化位;如果在所述最近变化数据记录之前存在相同数据记录的下一个变化数据记录并且所述下一个变化数据记录的变化类型是更新,则合并后的变化类型是更新,合并后的变化位是当前合并后的变化位与所述下一个变化数据记录的变化位的按位或逻辑运算结果。
16.如权利要求13所述的系统,当所述系统用于服务器与多个客户机之间进行数据同步时所述同步引擎还包括冲突检测装置,所述冲突检测装置用于
1)分别接收来自服务器端和多个客户端的对于相同数据记录的变化位;
2)对所有来自多个客户机端的变化位进行按位或逻辑运算;
3)对来自服务器端的变化位以及所述客户机端的的按位或逻辑运算结果进行按位与逻辑运算;
4)根据所述按位与逻辑运算结果来判断所述服务器与客户机之间是否发生冲突。
17.如权利要求16所述的方法,其中所述冲突检测装置还用于在所述服务器与客户机之间没有冲突发生的情况下,对所有来自客户机端的对于相同数据记录的变化位进行按位与逻辑运算,根据所述客户机端的变化位的按位与逻辑运算结果判断客户机与客户机之间是否发生冲突。
18.如权利要求10-13所述的方法,其中所述数据记录存储在数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810088623 CN101551801B (zh) | 2008-03-31 | 2008-03-31 | 数据同步的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810088623 CN101551801B (zh) | 2008-03-31 | 2008-03-31 | 数据同步的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101551801A true CN101551801A (zh) | 2009-10-07 |
CN101551801B CN101551801B (zh) | 2013-05-22 |
Family
ID=41156049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810088623 Expired - Fee Related CN101551801B (zh) | 2008-03-31 | 2008-03-31 | 数据同步的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101551801B (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848274A (zh) * | 2010-03-12 | 2010-09-29 | 深圳市同洲电子股份有限公司 | 移动终端中记录备份的方法和装置、及恢复的方法和装置 |
CN101719149B (zh) * | 2009-12-03 | 2012-02-08 | 联动优势科技有限公司 | 数据同步方法及装置 |
CN102789475A (zh) * | 2012-05-08 | 2012-11-21 | 华为技术有限公司 | 数据库服务器端结果集缓存的数据同步方法及装置 |
CN102904887A (zh) * | 2012-09-26 | 2013-01-30 | 东软集团股份有限公司 | 一种Web客户端与服务器的数据同步方法和系统 |
CN102932383A (zh) * | 2011-08-08 | 2013-02-13 | 联想(北京)有限公司 | 一种数据传输方法、终端及终端系统 |
CN103186614A (zh) * | 2011-12-30 | 2013-07-03 | 鼎捷软件股份有限公司 | 电子数据同步方法及电子数据同步处理系统 |
CN103501337A (zh) * | 2013-09-29 | 2014-01-08 | 方正国际软件有限公司 | 多级数据节点更新同步系统和方法 |
US8655836B2 (en) | 2009-10-23 | 2014-02-18 | Zte Corporation | Method, device and system for implementing data synchronization between source database and target database |
CN101741911B (zh) * | 2009-12-18 | 2014-04-30 | 中兴通讯股份有限公司 | 基于多副本协同的写操作方法、系统及节点 |
CN103916423A (zh) * | 2012-12-31 | 2014-07-09 | 华为技术有限公司 | 数据同步方法及设备 |
CN104885071A (zh) * | 2012-10-17 | 2015-09-02 | 纽昂斯通信有限公司 | 多设备智能语言模型同步 |
CN105005499A (zh) * | 2015-06-19 | 2015-10-28 | 上海久云信息科技有限公司 | 多客户端协同分组及显示方法 |
CN105072153A (zh) * | 2015-07-10 | 2015-11-18 | 成都品果科技有限公司 | 一种移动设备上基于增量更新的异构数据同步方案 |
CN106156094A (zh) * | 2015-04-01 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据同步方法和装置 |
CN106325933A (zh) * | 2016-08-24 | 2017-01-11 | 明算科技(北京)股份有限公司 | 批量数据同步方法和装置 |
CN106339408A (zh) * | 2016-08-10 | 2017-01-18 | 深圳中兴网信科技有限公司 | 数据同步方法、数据同步装置和服务器 |
CN108197155A (zh) * | 2017-12-08 | 2018-06-22 | 深圳前海微众银行股份有限公司 | 信息数据同步方法、装置及计算机可读存储介质 |
CN108512948A (zh) * | 2018-03-21 | 2018-09-07 | 平安普惠企业管理有限公司 | 通讯录更新方法、装置、计算机设备和存储介质 |
CN108874884A (zh) * | 2018-05-04 | 2018-11-23 | 广州多益网络股份有限公司 | 数据同步更新方法、装置和系统、服务器设备 |
CN109428399A (zh) * | 2017-08-28 | 2019-03-05 | 神华集团有限责任公司 | 储能系统监测方法、装置及系统 |
CN110674213A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 一种数据同步方法及装置 |
CN111813859A (zh) * | 2020-07-14 | 2020-10-23 | 积成电子股份有限公司 | 一种基于时间片段的变电站历史事项主辅双机同步方法 |
CN112463786A (zh) * | 2020-12-10 | 2021-03-09 | 上海携宁计算机科技股份有限公司 | 数据同步方法、系统、服务器及存储介质 |
CN113064919A (zh) * | 2021-03-31 | 2021-07-02 | 北京达佳互联信息技术有限公司 | 数据处理方法、数据存储系统、计算机设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798127A (zh) * | 2017-11-14 | 2018-03-13 | 中国银行股份有限公司 | 一种银行大型主机与个人计算机的数据同步方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1099638C (zh) * | 2000-06-07 | 2003-01-22 | 北京和利时系统工程股份有限公司 | 一种实现计算机系统容错的方法 |
US7421438B2 (en) * | 2004-04-29 | 2008-09-02 | Microsoft Corporation | Metadata editing control |
KR100762629B1 (ko) * | 2003-08-26 | 2007-10-01 | 삼성전자주식회사 | 휴대단말기의 백업서비스 처리방법 |
DE602004011942T2 (de) * | 2004-10-22 | 2009-02-19 | Research In Motion Ltd., Waterloo | Einrichtung und Verfahren zum Integrieren kontinuierlicher Synchronisation an tragbaren Endgeräten |
-
2008
- 2008-03-31 CN CN 200810088623 patent/CN101551801B/zh not_active Expired - Fee Related
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8655836B2 (en) | 2009-10-23 | 2014-02-18 | Zte Corporation | Method, device and system for implementing data synchronization between source database and target database |
CN101719149B (zh) * | 2009-12-03 | 2012-02-08 | 联动优势科技有限公司 | 数据同步方法及装置 |
CN101741911B (zh) * | 2009-12-18 | 2014-04-30 | 中兴通讯股份有限公司 | 基于多副本协同的写操作方法、系统及节点 |
CN101848274A (zh) * | 2010-03-12 | 2010-09-29 | 深圳市同洲电子股份有限公司 | 移动终端中记录备份的方法和装置、及恢复的方法和装置 |
CN102932383A (zh) * | 2011-08-08 | 2013-02-13 | 联想(北京)有限公司 | 一种数据传输方法、终端及终端系统 |
CN102932383B (zh) * | 2011-08-08 | 2015-07-29 | 联想(北京)有限公司 | 一种数据传输方法、终端及终端系统 |
CN103186614A (zh) * | 2011-12-30 | 2013-07-03 | 鼎捷软件股份有限公司 | 电子数据同步方法及电子数据同步处理系统 |
CN103186614B (zh) * | 2011-12-30 | 2016-04-13 | 鼎捷软件股份有限公司 | 电子数据同步方法及电子数据同步处理系统 |
CN102789475B (zh) * | 2012-05-08 | 2015-07-29 | 华为技术有限公司 | 数据库服务器端结果集缓存的数据同步方法及装置 |
CN102789475A (zh) * | 2012-05-08 | 2012-11-21 | 华为技术有限公司 | 数据库服务器端结果集缓存的数据同步方法及装置 |
CN102904887A (zh) * | 2012-09-26 | 2013-01-30 | 东软集团股份有限公司 | 一种Web客户端与服务器的数据同步方法和系统 |
CN104885071A (zh) * | 2012-10-17 | 2015-09-02 | 纽昂斯通信有限公司 | 多设备智能语言模型同步 |
CN103916423A (zh) * | 2012-12-31 | 2014-07-09 | 华为技术有限公司 | 数据同步方法及设备 |
CN103501337A (zh) * | 2013-09-29 | 2014-01-08 | 方正国际软件有限公司 | 多级数据节点更新同步系统和方法 |
CN106156094B (zh) * | 2015-04-01 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据同步方法和装置 |
US10877990B2 (en) | 2015-04-01 | 2020-12-29 | Advanced New Technologies Co., Ltd. | Remote database synchronization |
CN106156094A (zh) * | 2015-04-01 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据同步方法和装置 |
CN105005499B (zh) * | 2015-06-19 | 2019-11-12 | 上海久云信息科技有限公司 | 多客户端协同分组及显示方法 |
CN105005499A (zh) * | 2015-06-19 | 2015-10-28 | 上海久云信息科技有限公司 | 多客户端协同分组及显示方法 |
CN105072153A (zh) * | 2015-07-10 | 2015-11-18 | 成都品果科技有限公司 | 一种移动设备上基于增量更新的异构数据同步方案 |
CN105072153B (zh) * | 2015-07-10 | 2018-10-09 | 成都品果科技有限公司 | 一种移动设备上基于增量更新的异构数据同步方法 |
CN106339408B (zh) * | 2016-08-10 | 2019-08-23 | 深圳中兴网信科技有限公司 | 数据同步方法、数据同步装置和服务器 |
CN106339408A (zh) * | 2016-08-10 | 2017-01-18 | 深圳中兴网信科技有限公司 | 数据同步方法、数据同步装置和服务器 |
CN106325933B (zh) * | 2016-08-24 | 2019-07-02 | 明算科技(北京)股份有限公司 | 批量数据同步方法和装置 |
CN106325933A (zh) * | 2016-08-24 | 2017-01-11 | 明算科技(北京)股份有限公司 | 批量数据同步方法和装置 |
CN109428399A (zh) * | 2017-08-28 | 2019-03-05 | 神华集团有限责任公司 | 储能系统监测方法、装置及系统 |
CN109428399B (zh) * | 2017-08-28 | 2022-02-08 | 国家能源投资集团有限责任公司 | 储能系统监测方法、装置及系统 |
CN108197155A (zh) * | 2017-12-08 | 2018-06-22 | 深圳前海微众银行股份有限公司 | 信息数据同步方法、装置及计算机可读存储介质 |
CN108512948A (zh) * | 2018-03-21 | 2018-09-07 | 平安普惠企业管理有限公司 | 通讯录更新方法、装置、计算机设备和存储介质 |
CN108512948B (zh) * | 2018-03-21 | 2022-05-17 | 平安普惠企业管理有限公司 | 通讯录更新方法、装置、计算机设备和存储介质 |
CN108874884A (zh) * | 2018-05-04 | 2018-11-23 | 广州多益网络股份有限公司 | 数据同步更新方法、装置和系统、服务器设备 |
CN108874884B (zh) * | 2018-05-04 | 2021-05-04 | 广州多益网络股份有限公司 | 数据同步更新方法、装置和系统、服务器设备 |
CN110674213A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 一种数据同步方法及装置 |
CN111813859A (zh) * | 2020-07-14 | 2020-10-23 | 积成电子股份有限公司 | 一种基于时间片段的变电站历史事项主辅双机同步方法 |
CN112463786B (zh) * | 2020-12-10 | 2021-08-13 | 上海携宁计算机科技股份有限公司 | 数据同步方法、系统、服务器及存储介质 |
CN112463786A (zh) * | 2020-12-10 | 2021-03-09 | 上海携宁计算机科技股份有限公司 | 数据同步方法、系统、服务器及存储介质 |
CN113064919A (zh) * | 2021-03-31 | 2021-07-02 | 北京达佳互联信息技术有限公司 | 数据处理方法、数据存储系统、计算机设备及存储介质 |
CN113064919B (zh) * | 2021-03-31 | 2022-11-22 | 北京达佳互联信息技术有限公司 | 数据处理方法、数据存储系统、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101551801B (zh) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101551801B (zh) | 数据同步的方法和系统 | |
CN102682052B (zh) | 过滤数据存储上的查询数据 | |
CN107515878B (zh) | 一种数据索引的管理方法及装置 | |
CN102349062B (zh) | 浏览器缓存与远程仓库同步的方法和系统 | |
CN101593185A (zh) | 利用同步进行数据恢复的方法和系统 | |
CN103390041A (zh) | 一种基于中间件提供数据服务的方法和系统 | |
CN101681344A (zh) | 带同步的双向数据修改 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN102291416A (zh) | 一种客户端与服务器端双向同步的方法及系统 | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
CN111008521B (zh) | 生成宽表的方法、装置及计算机存储介质 | |
CN105740337A (zh) | 一种基于内容的发布订阅系统中的事件快速匹配方法 | |
CN103152390A (zh) | 分布式存储系统的节点配置方法、装置、节点及系统 | |
CN102937964A (zh) | 基于分布式系统的智能数据服务方法 | |
CN114329096A (zh) | 一种原生图数据库处理方法及系统 | |
CN102724301B (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
CN110008284A (zh) | 基于数据页预加载及回滚的数据库数据同步方法及设备 | |
CN111753019A (zh) | 一种应用于数据仓库的数据分区方法和装置 | |
CN102780780B (zh) | 云计算模式下的数据处理方法、设备和系统 | |
CN109684331A (zh) | 一种基于Kudu的对象存储元数据管理装置及方法 | |
CN112163024B (zh) | 一种基于层级关联结构的配置信息导出和导入方法 | |
JP4914117B2 (ja) | データ処理システム | |
CN111506646B (zh) | 数据同步方法、装置、系统、存储介质及处理器 | |
CN111400598A (zh) | 信息推送方法、服务器、多端口转发器和存储介质 | |
CN102314505A (zh) | 基于偏序关系的缓冲区版本产生方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130522 Termination date: 20210331 |
|
CF01 | Termination of patent right due to non-payment of annual fee |