一种数据同步方法、系统和设备转让专利
申请号 : CN200710182239.5
文献号 : CN101409614B
文献日 : 2011-04-13
发明人 : 王睿 , 李克鹏
申请人 : 华为技术有限公司
摘要 :
权利要求 :
1.一种数据同步方法,其特征在于,该方法包括:
通过比较需要进行数据同步双方的数据库中的数据指纹,确定需要同步的数据;
对所述确定的需要同步的数据进行数据同步;
上述所有步骤之前进一步包括:根据需要进行数据同步的双方所存储或设置的指纹特性信息确定指纹产生方式。
2.如权利要求1所述的方法,其特征在于,该方法在所述确定需要同步的数据之前进一步包括:比较需要进行数据同步的双方的数据库指纹,在所述双方的数据库指纹不一致时,执行所述确定需要同步的数据的步骤。
3.如权利要求2所述的方法,其特征在于,该方法在比较所述双方的数据库指纹之前进一步包括:计算所述双方的数据库指纹;
所述计算数据库指纹包括:对于该数据库中的每个叶子节点,通过对该叶子节点中的内容进行指纹运算而获得该叶子节点的指纹;对于该数据库中的每个中间节点,通过将该中间节点的所有子节点的指纹顺序排列后进行指纹运算而获得该中间节点的指纹;
通过将该数据库根节点的所有子节点的指纹顺序排列后进行指纹运算而获得该数据库的指纹。
4.如权利要求3所述的方法,其特征在于,所述将子节点的指纹顺序排列包括:根据所述各子节点的标识,将子节点顺序排列。
5.如权利要求1至4中任一项所述的方法,其特征在于,所述通过比较需要进行数据同步双方的数据库中的数据指纹,确定需要同步的数据包括:从数据库根节点的指纹开始逐级比较双方数据库中的各个节点的指纹,当一个节点的双方指纹一致且该节点为中间节点时,则不再比较该中间节点的下级节点的指纹。
6.如权利要求5所述的方法,其特征在于,所述从数据库根节点的指 纹开始逐级比较双方数据库中的各个节点的指纹,当一个节点的双方指纹一致且该节点为中间节点时,则不再比较该中间节点的下级节点的指纹具体包括:步骤A,判断所述双方的数据库中的根节点的指纹是否一致,在不一致时执行步骤B;
步骤B,进入未进行指纹比较的任一下一级节点,并比较该下一级节点的指纹是否一致,是则执行步骤E,否则执行步骤C;
步骤C,判断所述下一级节点是否为中间节点,是则执行步骤B;否则执行步骤D;
步骤D,确定所述下一级节点的数据为需要同步的数据,执行步骤E;
步骤E,返回上一级节点,判断该上一级节点是否还有其它未进行指纹比较过的下一级节点,是则执行步骤B,否则执行步骤F;
步骤F,判断所述上一级节点是否为根节点,是则结束,否则执行步骤E。
7.如权利要求1至4中任一项所述的方法,其特征在于,所述通过比较需要进行数据同步双方的数据库中的数据指纹,确定需要同步的数据包括:从数据库根节点的指纹开始逐层比较双方数据库中的每层节点的指纹,当一个节点的双方指纹一致且该节点为中间节点时,则不再比较该节点的下级节点的指纹。
8.如权利要求7所述的方法,其特征在于,所述从数据库根节点的指纹开始逐层比较双方数据库中的每层节点的指纹,当一个节点的双方指纹一致且该节点为中间节点时,则不再比较该节点的下级节点的指纹具体包括:步骤a,判断所述双方的数据库中的根节点的指纹是否一致,在不一致时执行步骤b;
步骤b,进入下一层节点;
步骤c,比较所述下一层节点中的任一未进行指纹比较的节点的双方指 纹,并判断该节点的双方指纹是否一致,是则执行步骤e,否则执行步骤d;
步骤d,记录该节点为需要同步的节点,执行步骤e;
步骤e,判断所述下一层节点中是否还有未进行指纹比较的节点,是则执行步骤c,否则执行步骤f;
步骤f,确定所述记录节点中的叶子节点的数据为需要同步的数据,并判断所记录的节点中是否有中间节点,是则进入所述的任一中间节点的下一层节点,执行步骤c,否则结束。
9.如权利要求1所述的方法,其特征在于,所述的指纹特性信息包括:是否支持指纹的信息,和/或所支持的指纹算法的信息,和/或指纹算法的唯一性信息。
10.如权利要求1或9所述的方法,其特征在于,
所述指纹特性信息的存储方式包括:存储在设备信息中,或存储在管理对象中;
所述指纹特性信息的设置方式包括:修改设备信息中的指纹特性信息,或设置管理对象中的指纹特性信息,或通过发送通知消息或同步会话消息来设置指纹特性信息。
11.如权利要求1至4中任一项所述的方法,其特征在于,
服务器获取客户端所支持的指纹算法集,并判断自身是否支持所述算法集中的至少一种算法,是则确定指纹产生方式为单向或双向,否则确定指纹产生方式为单向;服务器将所确定的指纹产生方式告知客户端。
12.如权利要求11所述的方法,其特征在于,所述服务器获取客户端所支持的指纹算法集,以及所述服务器将所确定的指纹产生方式告知客户端包括:服务器读取客户端的管理对象中保存的客户端所支持的指纹算法集,并将所确定的指纹产生方式写入客户端的管理对象中;或者服务器向客户端发送指示上报设备信息的通知消息,从客户端上报的设备信息中获取客户端所支持的指纹算法集,并将所确定的指纹产生方式通过 通知消息告知客户端。
13.如权利要求1至4中任一项所述的方法,其特征在于,所述确定指纹产生方式包括:当计算数据指纹所使用的算法对于需要进行数据同步的双方所保存的同一数据所分别计算出的指纹一致时,确定指纹产生方式为单向或双向;
当计算数据指纹所使用的算法对于需要进行数据同步的双方所保存的同一数据所分别计算出的指纹不一致时,确定指纹产生方式为单向。
14.如权利要求13所述的方法,其特征在于,所述确定指纹产生方式为单向或双向,是将数据库中所有叶子节点的指纹产生方式确定为单向,将除叶子节点以外的节点的指纹产生方式确定为单向或双向。
15.如权利要求1至4中任一项所述的方法,其特征在于,
所述通过比较需要进行数据同步双方的数据库中的数据指纹,确定需要同步的数据包括:需要进行数据同步的双方中第一方将自身数据库中所有数据的指纹和相应的数据标识发送给第二方;第二方根据所述数据标识比较自身数据库中的数据指纹和所接收的数据指纹,将指纹不一致的数据确定为需要同步的数据;
所述对需要同步的数据进行数据同步包括:第二方将所有需要同步的数据的标识发送给第一方;第一方根据自身数据库的修改日志,将需要同步的数据区分为由第一方的修改导致需要同步的数据和由第二方的修改导致需要同步的数据,并将由第一方的修改导致需要同步的数据和相应的数据标识发送给第二方;第二方根据所接收的数据标识将所接收的由第一方的修改导致需要同步的数据同步到自身数据库中。
16.如权利要求15所述的方法,其特征在于,所述第二方将所有需要同步的数据的标识发送给第一方的同时,进一步将自身数据库中的需要同步的数据发送给第一方;所述第一方在将需要同步的数据区分为由第一方的修改导致需要同步的数据和由第二方的修改导致需要同步的数据后,进一步将由第二方的修改导致需要同步的数据同步到自身数据库中。
17.如权利要求1至4中任一项所述的方法,其特征在于,
所述通过比较需要进行数据同步双方的数据库中的数据指纹,确定需要同步的数据包括:需要进行数据同步的双方中的第一方向第二方发送指示消息,该指示消息指示第二方发送其数据库中的所有数据的指纹或发送其数据库中修改过的数据的指纹;第二方依据指示消息向第一方发送自身数据库中的所有数据的指纹或者修改过的数据的指纹;
第一方将所接收的指纹与自身数据库中的指纹进行比较,并根据冲突检测策略确定自身需要同步的数据;
所述对需要同步的数据进行数据同步包括:第一方将所确定的自身需要进行同步的数据的标识或指纹发送给第二方;第二方根据所接收的数据标识或指纹将自身数据库中的相应数据发送给第一方;第一方将所接收到数据同步到自身数据库中。
18.如权利要求17所述的方法,其特征在于,在所述第一方向第二方发送指示消息之前进一步包括:第一方接收第二方发送的同步协商参数,并根据所述同步协商参数确定第二方是否需要发送指纹,是则进一步并确定指示第二方发送其数据库中的所有数据的指纹或修改过的数据的指纹。
19.如权利要求18所述的方法,其特征在于,
所述同步协商参数包括:指示第二方的数据标识是否有效的参数、指示第二方的修改日志是否有效的参数,以及指示第二方的指纹算法是否唯一的参数;
所述根据同步协商参数确定第二方是否需要发送指纹包括:
如果第二方的数据标识无效,并且指纹算法不唯一,则第二方不需要发送指纹;
所述确定指示第二方发送其数据库中的所有数据的指纹或修改过的数据的指纹包括:在第二方的修改日志有效时,指示第二方发送修改过数据或者是其指纹;如果第二方的修改日志无效,指示第二方发送所有的数据或者是其指纹;
或者,在第二方的数据标识有效时,指示第二方发送数据和相应的数据 标识或者是数据指纹和相应的数据标识;在第二方的数据标识无效时,指示第二方只发送数据或者是其指纹;
或者,在第二方的数据标识无效时,指示第二方发送其所有的数据或是其指纹。
20.一种数据同步系统,其特征在于,该系统包括需要相互进行数据同步的第一设备和第二设备,其中,第一设备,用于将自身数据库中的所有数据指纹和相应的数据标识发送给第二设备;用于在接收到第二设备发送的需要同步的数据的标识后,根据自身数据库的修改日志,将需要同步的数据区分为由第一设备的修改导致需要同步的数据和由第二设备的修改导致需要同步的数据,并将由自身的修改导致需要同步的数据和相应的数据标识发送给第二设备;
第二设备,用于根据所接收的数据标识比较自身数据库中的数据指纹和所接收的数据指纹,将指纹不一致的数据确定为需要同步的数据,并将所有需要同步的数据的标识发送给第一设备;用于根据所接收的数据标识将同时所接收的由第一设备的修改导致需要同步的数据同步到自身数据库中;
所述第一设备和第二设备进一步用于协商指纹产生方式。
21.如权利要求20所述的系统,其特征在于,
所述第二设备,将所有需要同步的数据的标识发送给第一设备的同时,进一步用于将自身数据库中的需要同步的数据发送给第一设备;
所述第一设备,在将需要同步的数据区分为由第一设备的修改导致需要同步的数据和由第二设备的修改导致需要同步的数据后,进一步用于将由第二设备的修改导致需要同步的数据同步到自身数据库中。
22.如权利要求20所述的系统,其特征在于,
所述第二设备,进一步用于将自身的数据库指纹发送给第一设备;
所述第一设备,进一步用于判断自身的数据库指纹是否与第二设备的数据库指纹一致,并在不一致时将自身数据库中的所有数据指纹和相应的数据标识发送给第二设备。
23.一种数据同步设备,其特征在于,该设备包括:确定模块和同步模块,其中,确定模块,用于接收对端设备发送的数据指纹和相应的数据标识,根据所接收的数据标识比较自身数据库中的数据指纹和所接收的数据指纹,将指纹不一致的数据确定为需要同步的数据,将所有需要同步的数据的标识发送给对端设备;
同步模块,用于接收对端设备发送的由对端设备的修改导致的需要同步的数据,并将所接收的数据同步到自身数据库中;
该设备进一步包括协商模块,用于同对端设备进行协商,并确定指纹产生方式。
24.如权利要求23所述的数据同步设备,其特征在于,
所述确定模块,将所有需要同步的数据的标识发送给对端设备的同时,进一步用于将自身数据库中的需要同步的数据发送给对端设备。
25.如权利要求23所述的数据同步设备,其特征在于,该设备进一步包括数据库指纹模块,用于将自身所在数据同步设备的数据库指纹发送给对端设备,以供对端设备判断是否进行数据同步。
说明书 :
一种数据同步方法、系统和设备
技术领域
背景技术
和执行应用程序的结果需要存储到终端设备中,也需要与其他终端设备中的同一类型的
数据保持一致。 比如,在手机和个人数字助理(PDA,Personal Digital Assistant)中都存
有通讯录,在办公室和家里的PC机或者笔记本也都存有相同的通讯录,人们希望这些终
端设备中的通讯录信息能保持一致,当其中一个设备中保存的数据发生变化时,可以操
作其他设备中的数据做相应的改变,这就是数据同步。
操作的数据可以是任一种网络数据。 同步标记语言(SyncML,Synchronization Makeup
Language)协议就是为了实现这个目标而应运而生的一个通用标准。
同步协议主要定义数据同步操作会话过程中的数据流程,同步双方的握手过程,数据同
步操作的类型等;SyncML表示协议主要涉及同步过程所支持的数据类型、命令格式以
及能够在各种网络传输的SyncML消息格式;SyncML消息可以在任何一种有线和无线
的网络连接上 传输,在SyncML协议的传输绑定中定义了可以在基于超文本传输协议
(HTTP,Hyper-Text Transfer Protocol)、无线会话协议(WSP,WirelessSession Protocol)
和对象交换协议(OBEX,Object Exchange Protocol)三种协议的网络连接上传输SyncML
包和消息,这三种传输协议基本上含盖了所有的远程和短程连接;图1是现有技术中
SyncML数据同步协议的框架结构图,如图1所示,虚线框内部表示的是SyncML标准讨
论的SyncML框架结构,虚线框外部是数据同步协议,SyncML框架由SyncML数据格
式、SyncML适配器和SyncML功能接口三部分组成。
作服务可以利用HTTP协议、WSP协议和OBEX协议等公用网络连接。 ″同步引擎″
负责管理整个同步数据的操作。 应用″A″的数据同步操作基于数据同步协议,由″
同步引擎″负责管理整个操作过程。 ″同步服务代理”管理″同步引擎″对网络的访
问,管理客户端和服务器端的应用进行数据同步的相互通信过程。 ″同步服务代理″
通过调用″SyncML接口″或在此接口上的函数完成这些功能。 ″SyncML接口″是面
向″SyncML适配器″的应用程序接口。 ″SyncML适配器″负责消息的收发过程,在
这个过程中收发双方相互通信,收发SyncML格式文档。 ″SyncML适配器″同时负责
创建和维护应用″A″和应用″B″之间的网络连接。 通过调用″SyncML接口″的函
数,应用″B″用一个″同步客户代理″访问网络和它的″SyncML适配器″。
同步。
步骤:
语来表示该位置,这样下次进行同步时需要同步给服务器的数据就是Anchor之后的日志
中所记载的信息,参考日志信息格式如表1所示:
1110 555 增加(Add)
1111 168 更新(Replace)
1112 123 删除(Delete)
1113 556 增加(Add)
库中自上次同步完成之后发生过变更的所有数据封装到PKG4中返回给客户端。
器。
据条目对应起来,服务器端还需要维护一个映射表(Server Mapping Table),用于关联客
户端维护的数据库(Client Database)和服务器维护的数据库(Server Database),如表2所
示:
常,则此次同步成功,结束流程。
后进行更新,如果在操作过程中发生通信中断,如未收到同步响应消息等,则Anchor和
执行操作的记录可能不匹配,从而不同正确确定哪些数据发生了变化。 因此出现了一种
指纹技术,通过数据指纹可以实现对数据条目进行标识,比如,通过对某个数据条目作
摘要,得到数据条目的指纹。指纹可以只由客户端产生,也可以由双方产生。 指纹的用
途是服务器用于来判别从终端收到的数据与自身存储的数据是否相同,进而判断数据是
否发生了变化,因为无论服务器和客户端哪一边修改了数据,指纹都会不一致。
是指服务器和客户端双方都计算指纹,并保存自身计算的指纹。
发明内容
日志,将需要同步的数据区分为由第一设备的修改导致需要同步的数据和由第二设备的
修改导致需要同步的数据,并将由自身的修改导致需要同步的数据和相应的数据标识发
送给第二设备;
标识发送给第一设备;用于根据所接收的数据标识将同时所接收的由第一设备的修改导
致需要同步的数据同步到自身数据库中;
定为需要同步的数据,将所有需要同步的数据的标识发送给对端设备;
明实施例的技术方案利用数据指纹实现数据同步,避免了需要进行数据同步的双方之间
通过传送大量的数据。
具体实施方式
同步的数据,因此,服务器和客户端双方数据的指纹必须是使用同一种指纹算法计算而
来的。 如果服务器和客户端使用单向指纹产生方式,即客户端计算数据指纹,服务器只
保存客户端计算的指纹,则双方保存的同一数据的指纹是相同的;如果服务器和客户端
使用双向指纹产生方式,即服务器和客户端分别计算指纹,且保存各自计算的指纹,则
双方需要使用同一种指纹计算方法,才能保证双方保存的同一数据的指纹是相同的。
方式的选择是通过默认的约定进行的,即约定单向或是双向。 这种约定的方式限制了指
纹运用的灵活性,更主要的,现有技术中没有给出何种情况下使用的何种指纹产生方式
才能正确高效地实现数据同步的方案。
务器保存客户端提供的指纹,服务器中未保存有指纹的数据用空指纹表示该数据;如果
FPMethod的值为假(false),则表示使用双向指纹产生方式,即指纹由客户端和服务器同
时计算,并各自保存自身计算的指纹。 FPMethod的缺省值可以为false。 当服务器与终
端协商后的指纹计 算方法不在服务器的指纹计算方法集中,则将FPMethod设置为true。
所接收的指纹不同,则要求服务器将FPMethod设置为true。该验证工作更好的可以在服
务器侧完成,即服务器接收客户端发送的同步数据和指纹,保存所接收的数据后计算其
指纹,将计算所得的指纹与所接收指纹进行比较。
服务器和客户端采用该算法对同一数据计算出的指纹不会产生偏差,因此在使用Change
Log算法计算指纹的情况下可以采用双向指纹产生方式;而Hash算法在同一数据的保
存格式不同时所计算出的指纹也会不同,由于客户端和服务器保存数据的方式可能不一
致,所以在使用Hash算法计算指纹的情况下采用单向指纹产生方式。
算的方式,至于使用单向还是双向方式,可以根据上述方式中所示的方法来确定,此时
FPMethod的含义为目录和文件夹是否采用单向产生指纹的方式。
要通知终端协商后的单双向标识,或通知终端其支持的指纹算法集等。 本发明实施例中
给出三种服务器和客户端进行协商的通信方式:Notification通知法、DS MO设置法和
Device Info指示法。 下面分别介绍。
集,客户端将这两个参数保存在与该服务器ID相关的条目中。 PKG0为Notification通
知消息。 服务器仅当上述指纹特性以及其所支持的指纹算法集等参数发生变化时再次通
过通知(Notification)消息通知客户端。 图5是本发明实施例Notification消息的格式示意
图,如图5所示,Notification消息体(Notification-body)中的“Actionl”字段又包括四个
字段,分别为:“Action-type”字段、“Action-specific”字段、“URI-length”字段和
“URI”字段。 在本发明实施例中将上述四个字段分别定义为“0101”、“Specific”、
“Algorithm-length”和“Algorithm”,其中:
串的长度由Algorithm-length设定。
Management)的方式对客户端的DS MO其进行读写、修改。客户端也可以把自身关于指
纹的信息保存在DS MO中。
面是对图6所示的MO节点的描述:
REQUIRED One Node Get
节点是必须的;该节点的出现次数(Occurrence)是“One”,表示该节点在图6所示的树
结构中只出现一次;该节点的格式(Format)是“Node”,表示该节点是中间节点;该节
点内容的接入方式(Access)是“Get”,表示该节点的内容是可获取的,即可读的。
REQUIRED ZeroOrOne Node Get
“ZeroOrOne”,表示该节点在图6所示的树结构中出现零次或一次。
REQUIRED ZeroOrMore Node Get
中该节点的出现次数(Occurrence)是“ZeroOrMore”,表示该节点在图6所示的树结构
中出现零次或多次。
REQUIRED One Chr Get
“Chr”,表示该节点是叶子节点且为字符串类型。
变
改
示
表
1
,
变
改
未
示
表 改
0 修 纹
,纹指其为作变改否是值 纹指其为作数次的变 纹指其为作值hsaH将 被段字些哪示指以可息信 纹指其为作值要摘将,要 指其为作值的CRC将,C 纹指其为作戳间时的改其将 改将 ,hs 纹指 摘5 RC 更后
,目 ,目 aH ,目 DM 作目 最目
条 条 作 条 作 条 条
据 据 目 据 目 据 据
)noitanalp 数个一对, 数个一对, 条据数对, 数对,法算 条据数对, 数对,法算 数对将,法 用备
xE(释 法算记 法算数 法算hsa 定特段 法算要 余冗环 算戳间 后以作
解 标 计 H 字 摘 循 时 留
c
)eulaV( galFdegnah tnuoCdegnah hsa fiicepsmetI-bu 5D CR pmatsemi devrese
值 C C H S M C T R
REQUIRED ZeroOrMore Chr Get
REQUIRED One Node Get
REQUIRED One Chr Get
REQUIRED One Chr Get
REQUIRED One Bool Get
True 支持指纹特性
False 不支持指纹特性
REQUIRED ZeroOrOne Bool Get
True 客户端单向产生指纹
False 客户端与服务器双向产生指纹
REQUIRED ZeroOrOne Chr Get
REQUIRED ZeroOrOne Bool Get
True 唯一
False 不唯一
取
需要同步的数据库的指纹特性信息,如采用单向指纹产生方式还双向指纹产生方式,采
用哪种指纹计算方法等,并将确定的信息保存到客户端MO中的如图6所示树型结构中
的
器将协商结果通知客户端的目的。
元素的数据模型(Schema):
器中未保存有指纹的数据用空指纹表示该数据;如果该变量的值为false,则表示指纹由
客户端和服务器同时计算,并保存各自计算的指纹。 FPMethod的缺省值可以为false。
该FPMethod值保存在与设备相关的Device Info中,Schema可以类似于:
持指纹以及所支持的指纹算法集等信息;服务器向客户端下发Notification通知消息,以
通知客户端上报Device Info中的关于指纹特性的信息;客户端接收到Notification通知消
息后将自身Device Info中的关于指纹特性的信息上报给服务器;服务器根据客户端的上
报信息以及自身的指纹特征信息,确定指纹产生方式以及指纹计算方法等,例如,服务
器从上报信息中查看自己是否支持客户端所支持的指纹算法集中的一种,是则选择服务
器和客户端都支持的一种指纹计算方法,并确定指纹产生方式为单向或双向,否则确定
指纹产生方式为单向;服务器将所确定的结果通过Notification通知消息发送给客户端;
客户端根据Notification通知消息获知协商结果,如果Notification通知消息中指示为单向
产生指纹,则客户端从自身所支持的指纹算法集中选择一种指纹计算方法即可。
过Notification通知消息通知客户端。
可以协商好数据同步过程中所涉及的指纹产生方式和指纹计算方法等。 接下来给出本发
明中实现数据同步的一个具体实施例。
则PKG1中还可以包含一个布尔型的参数FPSupport,指示客户端是否支持指纹特性。
则向客户端下发PKG2,PKG2中包含服务器数据库中所有数据条目的指纹和标识(ID)。
的指纹计算方法,如果不支持则将布尔型参数FPMethod的值设为true,表示指纹产生方
式为单向,并将FPMethod通过PKG2下发给客户端。
目,向服务器发送PKG3,PKG3中包含需同步的数据条目的ID。
需要同步的数据条目的指纹。
同步的,以及哪些由于客户端数据库中的数据发生改变而导致需要同步的,并在PKG4
中向客户端下发由于服务器数据库中的数据发生改变而导致需要同步的数据条目ID和对
应的数据条目内容。
的数据条目内容,将由于客户端数据库中的数据发 生改变而导致需要同步的数据,同步
到自身数据库中。 如果是单向指纹产生方式,PKG3中携带了所述需要同步的数据条目
的指纹,则本步骤中,服务器在同步完自身数据库中的数据的同时保存PKG3中带来的
与所同步的数据对应的指纹。
据的完整性。
步时直接结束流程的方案,节省了不必要的数据发送流程,提高了效率。 并且在如图7
所示的同步流程中,服务器和客户端可以互换角色,即步骤701中可以是服务器向客户
端发送PKG1,之后客户端向服务器发送PKG2,以此类推。
行同步的数据条目。这里数据条目的指纹是指数据库中叶子节点的指纹。 如果数据库中
叶子节点较多,则步骤703中一一比较叶子节点指纹的方法比较消耗时间,因此接下来
结合图8和图9给出本发明实施例提供的比较服务器数据库和客户端数据库中节点的指纹
确定同步数据的方法。
为FP02,根节点的指纹FP00即是数据库的指纹Container。 每个中间节点的指纹由其下
面的子节点的指纹计算获得,如中间节点Contacts的指纹FP01是通过对其子节点的指纹
FP05、FP06和FP07进行指纹计算得到的;而叶子节点的指纹由叶子节点中的数据条目
内容计算而得。
级节点,并获取该下级节点的指纹,比对客户端和服务器数据库中与该节点对应的的指
纹,判定该节点是否需要同步,如果需要同步,则将该节点的UID记录下来,然后判
断该节点是否为中间节点,即是否为目录或文件夹,如果是中间节点,则进入该中间节
点,重复上面的操作。 完成该节点的判定后,再检查该节点的上级节点是否还有其它下
级节点,执行相同的操作直至完成对整个数据库的判定。 最后获得的UID记录表即是这
个数据库中需要同步的节点。 与图7所示的同步流程对应,服务器在接收的PKG1后执
行步骤901和步骤902中的过程,而客户端在接收到PKG2后执行步骤903至步骤910的
过程,并在PKG3中将所记录的需要同步的数据条目ID,即需要同步的叶子节点ID发送
给服务器。
对的次数。 例如,当一个中间节点下没有更改的节点时,则检查完这一中间节点的指纹
一致后即可替代对其下所有节点的检查,即无需再对该中间节点下的众多叶子节点进行
比较。
节点是其父节点的下级,是其子节点的上级,这是两个节点间的关系。 所有以根节点为
父节点的节点为1层节点,所有以任一n层节点为父节点的节点为n+1层节点,这是数据
库内的一种关系。
不同指纹的节点ID,并在PKG3中上报需同步的节点的ID,如果这些节点中存在中间节
点,则同时上报这些中间节点的所有下级节点(二层节点)的ID和指纹;服务器继续比
对这些二层节点,然后在PKG4中将需要进行同步的二层节点的ID下发给客户端,如果
这些二层节点中存在中间节点,则同时在PKG4中下发这些中间节点的所有下级节点(三
层节点)的ID和指纹,以此类推,直至完成数据库中的所有节点的指纹比较操作。 数据
同步操作,可以在服务器和客户端完成数据库的全部节点的指纹比较操作后,根据最终
得到的需要同步的数据条目ID列表,即叶子节点ID列表一次性执行;可选择地,也可以
在服务器和客户端在确定每一层的需要同步的叶子节点后,便对这些叶子节点执行数据
同步过程。
上需要同步的节点;在图10所示的逐层比较节点指纹的方法中以该中间节点作为根节点
分层进行比较操作。
点的指纹按照ID排列顺序再次进行指纹运算获得的。现有技术的这种方法在叶子节点个
数较多,运算费时费力。因此在本发明实施例中给出计算数据库指纹Container的方法。
算而得,每个中间节点的指纹通过将其所有子节点的指纹按 照ID排列顺序再次进行指纹
运算获得,Container等于数据库根节点的指纹值,即对根节点下的所有子节点的指纹按
照ID排列顺序再次进行指纹运算获得。
点的指纹计算之上,并不会由于子节点的排列顺序导致计算结果不同;而Hash算法以
及Sub-Item specific算法计算结果与子节点指纹的排列顺序相关,所以利用这两种算法计
算父节点的指纹时,必须先约定子节点的排列顺序,比如,一种约定的排序方法可以是
按照UID的顺序排列,客户端和服务器都会记录节点的UID值,可按照值的大小进行排
序,如果服务器中有一个节点没有UID值,则可以将该节点置于所有节点之后或之前。
发送上来的数据,但自身数据的修改仍然保留。 例如,同步之前,客户端增加了数据条
目A,服务器增加了数据条目B,如果客户端发起单向刷新同步,则服务器上增加的数据
条目B会被删掉,而如果客户端发起单向保存同步,则服务器上增加的数据条目B不会
被删掉。
是否一致,如果一致,两者不需要同步,服务器可以拒绝同步会话,如果不一致,则两
者继续同步会话。 如果客户端明确知道双方的数据不一致,则不需要发送此指纹信息,
比如,客户端的Change Log有效且显示有数据被修改,则双方的数据不会保持一致,此
时,客户端不需要发送此指纹信息。
示客户端是否发送指纹,以及发送哪些指纹。
太大的意义。
的映射表无效,即使客户端发送LUID,服务器侧也无法进行正确的匹配、识别。
有效时,指示客户端发送修改过数据条目和相应的ID或者是其指纹和相应的ID;修改日
志有效,ID无效时,指示客户端发送所有的数据条目或者是其指纹;修改日志无效,ID
有效时,指示客户端发送所有的数据条目和相应ID或者是所有数据条目的指纹和相应的
ID;修改日志无效,且ID无效时,指示客户端发送所有的数据条目或者是其指纹。
素:LUID001、LUID003、LUID005,但只有LUID005属于待同步目录,则客户端只发
送LUID005的指纹。
相同。 如果指纹不一样,服务器可以根据冲突检测策略确定客户端是否需要发送数据条
目,如果冲突检测策略是服务器端赢,则将以服务器的修改为准,客户端没有必要发送
数据条目,否则客户端需要发送数据条目。 比较完后,服务器将客户端需要发送的数据
条目的标识或指纹通过PKG4返回给客户端。 本步骤中,指纹的作用与数据标识相同,
即服务器通过在PKG4中发送指纹来告知客户端发送哪些数据条目。
日志,将需要同步的数据区分为由第一设备的修改导致需要同步的数据和由第二设备的
修改导致需要同步的数据,并将由自身的修改导致需要同步的数据和相应的数据标识发
送给第二设备;
标识发送给第一设备;用于根据所接收的数据标识将同时所接收的由第一设备的修改导
致需要同步的数据同步到自身数据库中。
中的需要同步的数据发送给第一设备;第一设备,在将需要同步的数据区分为由第一设
备的修改导致需要同步的数据和由第二设备的修改导致需要同步的数据后,进一步用于
将由第二设备的修改导致需要同步的数据同步到自身数据库中。
步用于将自身的数据库指纹发送给第一设备;第一设备,进一步用于判断自身的数据库
指纹是否与第二设备的数据库指纹一致,并在 不一致时将自身数据库中的所有数据指纹
和相应的数据标识发送给第二设备。
据确定为需要同步的数据,将所有需要同步的数据的标识发送给对端设备。
步。
要同步的数据和由对端设备的修改导致需要同步的数据,并将由自身所在设备的修改导
致需要同步的数据和相应的数据标识发送给对端设备。
端设备的修改导致需要同步的数据后,进一步用于将由第二设备的修改导致需要同步的
数据同步到自身数据库中。
断是否进行数据同步。
用数据指纹实现数据同步,避免了需要进行数据同步的双方之间通过传送大量的数据来
确定需要同步的数据的过程。 此外,本发明实施例中该给出了需要进行数据同步的双
方如何协商指纹产生方式的多种方法,以及如何比较双方数据库中的数据指纹的具体方
法。
的保护范围之内。