CN101313495B - 数据同步方法、***及装置 - Google Patents
数据同步方法、***及装置 Download PDFInfo
- Publication number
- CN101313495B CN101313495B CN2007800001981A CN200780000198A CN101313495B CN 101313495 B CN101313495 B CN 101313495B CN 2007800001981 A CN2007800001981 A CN 2007800001981A CN 200780000198 A CN200780000198 A CN 200780000198A CN 101313495 B CN101313495 B CN 101313495B
- Authority
- CN
- China
- Prior art keywords
- data
- client
- server
- characteristics information
- synchronization
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据同步方法、***及装置,其中,该方法还包括:A、客户端向服务器发送数据特征信息验证消息,该消息携带一个或一个以上为数据库中数据设定的数据特征信息;B、服务器将该消息携带的一个或一个以上数据特征信息与自身数据库中数据设定的数据特征信息相比较,根据比较的结果确定需要同步的数据,将指示该数据的信息携带在数据特征信息验证响应消息中发送给客户端;C、客户端根据该响应消息所携带的信息确定要进行同步的数据,向服务器发送要进行同步的数据,供服务器进行自身数据库中数据的同步。本发明提供的方法、***及装置能够降低数据传输量和提高数据同步的效率。
Description
技术领域
本发明涉及在网络中对数据的处理技术,特别涉及数据同步方法、***及装置。
发明背景
为了在多个平台及网络之间实现个人信息及企业的数据同步,于2000年2月份创建了SyncML。创建SyncML的目的在于,使用户、设备开发商、基础构件开发商、数据提供商、应用软件开发商以及服务提供商协同工作,真正实现使用任何客户端均可随时随地的访问任何网络数据。
SyncML的典型应用是移动设备和网络服务设备之间的数据同步,除此之外,还可以用于两台对等设备的数据同步,如在两台计算机之间进行数据同步。客户端与服务器之间进行数据同步的过程为:在经过同步初始化阶段的设备能力信息协商以后,客户端将自身修改的数据发送给服务器进行存储;服务器将自身修改的数据发送给客户端进行存储,以保证双方数据的同步。
目前,进行数据同步的同步类型主要有表1所示的几种。
表1数据同步的同步类型表
同步类型 | 描述信息 |
双向同步(Two-way sync) | 双向同步是通常所使用的一种同步方式。采用该方式,同步的客户端和服务器相互仅交换彼此设备中的数据修改信息,未修改的数据信息不交换。客户端首先发送其修改信息。 |
慢同步(Slow sync) | 慢同步是双向同步的一种特殊类型,不同之处在于必须 |
对数据进行逐条、逐个字段的进行比较处理。同步时,客户端必须把自身所有数据都发送到服务器,然后服务器对客户端发送的数据和服务器自身数据进行逐个字段的同步分析。 | |
客户端单向同步(One-way sync fromclient only) | 客户端单向同步是一种单边方式的同步。只有客户端发送其数据修改信息到服务器,而服务器并不把服务器的数据修改信息发给客户端。 |
客户端刷新(Refresh sync fromclient only) | 客户端刷新是一种单边方式的同步。客户端把自身所有数据都发送到服务器,服务器用客户端发送的数据来覆盖服务器中该用户的所有数据,即服务器中的数据和客户端的数据完全一致。 |
服务器单向同步(One-way sync fromserver only) | 服务器单向同步和客户端单向同步类似。只有服务器发送其数据修改信息到客户端,而客户端并不把自身的数据修改信息发给服务器。 |
服务器刷新(Refresh sync fromserver only) | 服务器刷新和客户端刷新类似。服务器把自身存储的用户所有数据都发送给客户端,客户端用服务器发送的数据来覆盖客户端自身的所有数据,即客户端中的数据和服务器中的用户数据完全一致。 |
服务器通知同步(Server Alerted Sync) | 服务器通知同步是指由服务器首先提醒客户端来执行同步操作,即由服务器指示客户端开始一个特定类型的同步操作,仅仅是服务器通知客户端,要求其发起某种同步,后续同步方式可能为以上六种同步方式。 |
以下采用双向同步的例子说明如何进行数据同步。其他同步类型的数据同步都是双向同步的特殊情况,例如,慢同步可以看成是客户端和服务器发送全部用户数据的双向同步、单项同步是单方向发送用户数据的双向同步、刷新同步是单方向发送用户数据的慢同步等。
采用双向同步类型在客户端与服务器之间进行数据同步的过程为:
第一步,客户端向服务器发送同步初始化包。
第二步,服务器向客户端发送同步初始化包。
第一步以及第二步主要进行同步初始化,同步初始化主要完成身份鉴权、需要同步的数据的协商以及设备能力信息的协商等,其中,设备能力信息的协商为支持同步哪些数据以及支持哪些同步类型等。
第三步、客户端向服务器发送同步数据。
第四步、服务器向客户端发送同步数据。
在第三步以及第四步中,客户端根据数据的状态,数据的状态可以为新增、更新、删除以及移动等,将发生修改的数据发送给服务器,服务器根据接收到的数据修改自身存储的数据以达到数据同步的目的后,也根据自身存储的数据的状态,将发生修改的数据发送给客户端,客户端根据接收到的数据修改自身存储的数据以达到数据同步的目的。
第五步、客户端接收到同步数据后,向服务器发送确认同步完成消息。
第六步、服务器接收到同步数据后,向客户端发送确认同步完成消息。
在上述方法中,很多步骤都使用了消息包,这是因为:客户端和服务器之间的具有相同功能的交互过程需要持续多次才能完成,而在表示时,只用了一来一回的两种消息包。
实现数据同步过程的***包括客户端和服务器,客户端可以与服务器进行消息交互。其中,在客户端侧还具有客户端数据库,用于存储客户端所属用户需要的数据,该客户端数据库可以设置在客户端中,也可以单独设置;在服务器侧还具有服务器数据库,用于存放服务器的数据,该服务器数据库可以设置在服务器中或者单独设置。
客户端通常可以为计算机、移动终端或个人数字助理(PDA)等智能终端。在客户端数据库存储的数据可以包括:通讯录、日程、便笺、短信和电子邮件等。这些数据均有标准规范定义其格式,客户端可以将所存储的数据转换成标准格式的数据发送给服务器,服务器对接收到的数据处理后可以将处理后的数据保存在服务器数据库中。
服务器通常可以为计算机或进行数据同步网络的网络服务器,可以接收来自客户端的数据同步消息或数据同步命令,也可以向客户端发送数据同步消息或数据同步命令。
图1为存储在客户端数据库数据的存储方式示意图:每一条数据用本地唯一标识(LUID)进行标识,该LUID的值可以是针对一种类型数据唯一,也可以是针对客户端唯一,其中,每一条数据项中还设置有记录数据状态的变更日志(Chang Log),如图中所示的状态值(Status)。
图2为存储在服务器数据库数据的存储方式示意图:每一条数据用进行数据同步网络的网络唯一标识(GUID)进行标识,并且设置同一数据的GUID与LUID之间的映射关系表。
客户端和服务器双方进行的对数据的操作都会分别导致客户端数据库中的数据项的状态和服务器数据库中的数据项的状态进行变更,客户端和服务器双方可以分别根据自身所保存的数据项的状态变更确定接收到了什么数据同步命令或/和数据同步消息。
客户端向服务器发送的数据同步命令或/和数据同步消息包括:增加数据,客户端将生成的数据及其对应的LUID发送给服务器,服务器对数据完成增加处理后为其生成GUID,并保存数据的LUID与GUID的映射关系;更新数据,客户端将要更新的数据及其对应的LUID发送给服务器,服务器根据映射关系确定该LUID对应的GUID,将GUID对应的数据进行更新并保存;删除数据,客户端将要删除的数据及其对应的LUID发送给服务器,服务器根据映射关系确定该LUID对应的GUID,将GUID对应的数据进行删除并删除该数据的LUID与GUID的映射关系条目;移动数据,客户端将要移动数据当前的LUID以及移动到目的LUID发送给服务器,服务器根据映射关系确定当前LUID以及目的LUID分别对应的当前GUID以及目的GUID,将当前GUID对应的数据移动到目的GUID对应的数据项中。
服务器向客户端发送的数据同步命令或/和数据同步消息包括:增加数据,服务器将生成的数据及其对应的GUID发送给客户端,客户端对数据完成增加处理后为其生成LUID并将生成的LUID返回给服务器,服务器保存数据的LUID与GUID的映射关系;更新数据,服务器将要更新的数据及其对应的LUID发送给客户端,客户端将LUID对应的数据进行更新并保存;删除数据,服务器将要删除的数据及其对应的LUID发送给客户端并删除该数据的LUID与GUID的映射关系条目,客户端将LUID对应的数据进行删除;移动数据,服务器将要移动数据当前的LUID以及移动到目的LUID发送给客户端,客户端将当前LUID对应的数据移动到目的LUID对应的数据项中。
目前,在同步数据的类型中客户端和服务器之间采用锚(Anchor)来分别标记上一次的数据同步,Anchor是数据库级别的,即当客户端和服务器之间完成一次数据同步时,在各自的数据库中分别设置相同的Anchor信息。在后续进行服务器和客户端之间的数据同步时,客户端或服务器判断自身的数据库设置的Anchor信息是否与对方数据库设置的Anchor信息相同,如果相同,就不再进行数据同步;否则,则发起慢同步或刷新同步。
在客户端和服务器之间进行更新Anchor信息的过程为:
第一步、客户端向服务器发送同步数据包,该同步数据包不仅携带同步数据,还携带上一次与服务器进行同步的Anchor信息以及本次进行同步的Anchor信息。
第二步、服务器接收到同步数据包,比较该数据包携带的上一次与服务器进行同步的Anchor信息与自身数据库存储的Anchor信息,如果相同,则根据该同步数据包携带的同步数据进行数据同步,并更新自身数据库的Anchor信息,更新为该同步数据包携带的本次进行同步的Anchor信息,向客户端返回携带同步数据的同步数据包,该同步数据是服务器数据库中有修改标记的数据;否则,则服务器发起慢同步类型或刷新同步类型。
在进行慢同步时,客户端必须把客户端数据库中的所有数据都发送到服务器上,然后服务器再将客户端数据库中的每一条数据项与服务器数据库存储的相应的数据项进行同步比较。目前,发生慢同步的原因包括:1)客户端数据库中的LUID混乱或者丢失,有些客户端会重用LUID或者LUID重新生成导致LUID混乱,那么服务器的LUID-GUID映射表就失去了作用,双方无法判断哪些数据项是对应的;2)客户端数据库中的Chang Log丢失,客户端数据库的数据项的Chang Log丢失后,就无法判断哪些数据已经完成数据同步了,哪些数据还需要继续进行数据同步;3)客户端和服务器的Anchor不一致,即使客户端主动发起快同步,服务器也会发现双方的Anchor不一致,从而不知道双方是否已经进行了数据同步,导致无法确定需要同步的数据,发起慢同步。
在上述1)~2)情况下,客户端主动发起慢同步,3)情况下可以由客户端发起慢同步或者服务器要求客户端发起慢同步。
采用慢同步在客户端和服务器之间进行数据同步,存在着缺点:
1、客户端需要将客户端数据库中的全部数据项发送到服务器上,其中可能大部分数据是已经完成同步的,导致数据传输量大,数据同步时间长。
2、服务器在进行数据同步时,需要对所接收的各个数据项进行同步比较,处理时间比较长。
3、采用Anchor技术的不合理性:在进行数据同步的网络中,发生慢同步类型的情况非常多,如进行数据同步的网络断连、使用客户端的用户取消客户端以及使用客户端的用户重置客户端都会引起客户端和服务器各自的Anchor信息不一致,而导致进行慢同步过程。但是,在实际中,客户端和服务器各自的Anchor信息不一致并不能表示双方各自数据库中的所有数据都不相同。例如,如果客户端和服务器同步100条数据,同步到第50条数据时进行数据同步的网络断连,那么这50条数据已经一致了,在下次数据同步时就不需要再发送了,但是由于客户端和服务器各自的Anchor信息不一致,要进行慢同步或刷新同步,还必须发送这50条数据,使这50条数据成为了垃圾数据。
因此,在同步数据的类型中,特别是慢同步类型中,客户端和服务器需要相互传送各自数据库中的所有数据,而其中有很多是一致的并且不需要传输的垃圾数据,例如:客户端和服务器都没有修改的数据、客户端和服务器已经同步的数据、客户端的修改和服务器的修改的相同数据等,这样网络流量特别大,其中包含了大部分不需要发送的垃圾数据,降低数据同步的效率,用户需要付出高额的费用。
发明内容
本发明实施例提供一种数据同步方法,该方法能够降低数据传输量和提高数据同步的效率。
本发明实施例还提供一种数据同步***,该***能够降低数据传输量和提高数据同步的效率。
本发明实施例还提供一种数据同步装置,该装置能够降低数据传输量和提高数据同步的效率。
本发明实施例是这样实现的:
一种数据同步方法,该方法还包括:A、客户端向服务器发送数据特征信息验证消息,该消息携带一个或一个以上为数据库中数据设定的数据特征信息;B、服务器将该消息携带的一个或一个以上数据特征信息与自身数据库中数据设定的数据特征信息相比较,根据比较的结果确定需要同步的数据,将指示该数据的信息携带在数据特征信息验证响应消息中发送给客户端;C、客户端根据该消息携带的信息,确定要进行同步的数据,与服务器之间进行所确定数据的同步。
一种数据同步***,包括客户端和与客户端进行数据同步的服务器,客户端和服务器各自连接数据库,客户端或服务器中还包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,还与服务器或客户端相连接,用于将服务器或客户端所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给服务器或客户端,接收来自服务器或客户端发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向服务器或客户端发送由数据特征信息处理模块得到的数据特征信息,接收来自服务器或客户端的验证结果,根据验证结果向服务器或客户端发送携带同步数据的数据同步消息使对方进行数据同步。
一种数据同步客户端,包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,用于将服务器所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给服务器,接收来自服务器发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向服务器发送由数据特征信息处理模块得到的数据特征信息,接收来自服务器的验证结果,根据验证结果向服务器发送携带同步数据的数据同步消息使服务器进行数据同步。
一种数据同步服务器,包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,用于将客户端所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给客户端,接收来自客户端发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向客户端发送由数据特征信息处理模块得到的数据特征信息,接收来自客户端的验证结果,根据验证结果向客户端发送携带同步数据的数据同步消息使客户端进行数据同步。
本发明实施例提供的方法、***及装置,为在客户端和服务器各自数据库存储的数据设定数据特征信息,客户端数据库中的数据特征信息是客户端计算得到的,服务器数据库中的数据特征信息是服务器计算得到的或接收由客户端发送并存储的。当在双方进行数据同步时,客户端将为自身数据库存储数据设定的数据特征信息发送给服务器,服务器进行自身数据库存储的相应数据的数据特征信息验证,并将验证不能通过的数据的信息发送给客户端,客户端再根据该信息进行不能通过验证数据的数据同步过程。由于数据特征信息的长度比较短,在客户端传送数据特征信息给服务器进行验证时,数据传输量低于将自身数据库存储的所有数据都发送给服务器进行数据同步的数据传输量;既使在验证后,加上发送未通过验证的需要同步的数据的过程,也比直接发送自身数据库存储的所有数据所传输的数据量小。因此,本发明实施例提供的***、方法及装置在数据同步过程中,降低了数据传输量,节省了网络带宽和提高了数据同步的效率。
附图简要说明
图1为现有技术存储在客户端数据库数据的存储方式示意图;
图2为现有技术存储在服务器数据库数据的存储方式示意图;
图3为本发明实施例进行数据同步的方法流程图;
图4为本发明实施例协商采用单方计算智能数据同步类型的方法流程图;
图5为本发明实施例出现表4的第一种情况时服务器采用a)方式后进行数据指纹的比较方法流程图;
图6为本发明实施例出现表4的第一种情况时服务器采用b)方式后进行数据指纹的比较方法流程图;
图7为本发明实施例出现表4的第二种情况时服务器判定需要进行同步的数据项的方法流程图;
图8a为本发明实施例1的客户端数据库和服务器数据库中的数据项的初始状态示意图;
图8b为本发明实施例1的客户端数据库和服务器数据库中的数据项的修改状态示意图;
图8c为本发明实施例1的客户端数据库中数据项的Change Log丢失后客户端数据库和服务器数据库中的数据项的修改状态示意图;
图8d为本发明实施例1进行数据同步后客户端数据库和服务器数据库中的数据项的修改状态示意图;
图9a为本发明实施例2的客户端数据库和服务器数据库中的数据项的修改状态示意图;
图9b为本发明实施例2进行数据同步后客户端数据库和服务器数据库中的数据项的修改状态示意图;
图10a为本发明实施例3的客户端数据库和服务器数据库中的数据项的初始状态示意图;
图10b为本发明实施例3的客户端数据库和服务器数据库中的数据项的修改状态示意图;
图10c为本发明实施例3的客户端数据库中数据项的Change Log丢失后客户端数据库和服务器数据库中的数据项的修改状态示意图;
图11a为本发明实施例4的客户端数据库和服务器数据库中的数据项的修改状态示意图;
图12为本发明实施例采用单方计算智能数据同步类型进行数据同步的方法流程图;
图13为本发明实施例协商采用双方计算智能数据同步类型的方法流程图;
图14为本发明实施例采用双方计算智能数据同步类型进行数据同步的方法流程图;
图15为本发明实施例在客户端数据库分层存储数据实施例的示意图;
图16为本发明实施例客户端和服务器进行分级数据指纹的验证方法流程图;
图17为本发明实施例客户端和服务器进行不分级数据指纹的验证方法流程图;
图18为本发明实施例客户端的数据库存储数据的数据结构实施例示意图;
图19为本发明实施例服务器数据库存储数据的数据结构实施例示意图;
图20为本发明实施例中进行数据库的数据指纹验证示意图;
图21为本发明实施例中进行第二级数据的数据指纹验证示意图;
图22为本发明实施例中进行第二级数据以下级别的数据指纹验证示意图;
图23为本发明实施例进行数据同步的***示意图。
实施本发明的方式
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。
在客户端和服务器之间进行数据同步过程中,垃圾数据是指客户端自身数据库当前存储的与服务器自身数据库当前存储的相同数据。垃圾数据包括:客户端和服务器在各自数据库中都没有修改的数据、客户端和服务器已经进行同步的数据以及客户端在自身数据库修改的和服务器在自身数据库修改的相同数据等。
为了在同步数据过程中,特别是慢同步数据过程,客户端和服务器需要相互传送各自数据库中的数据时,不相互传送已经相同的垃圾数据,本发明实施例提出了一种优化数据同步的类型,即智能同步类型,该类型的核心思想为:为客户端和服务器各自数据库中的各个数据都设定数据特征信息,在同步数据过程中,首先验证数据特征信息,即通过对比客户端和服务器各自数据库所存储的数据设定的数据特征信息来区分需要同步的数据和垃圾数据,从而在后续数据同步阶段只传输需要同步的数据,避免垃圾数据的传送,能够降低数据传输量和提高数据同步的效率。
在本发明实施例中,数据特征信息可以为数据指纹,数据指纹能够准确并且唯一标识数据的内容,其含义是指不同的数据有不同的数据指纹,相同的数据有相同的指纹。本发明实施例可以采用摘要算法,如消息摘要算法(MD5)和安全散列算法(SHA)等;或者可以采用循环冗余校验算法,如循环冗余校验算法(CRC)等;或者可以采用普通散列算法,如哈希(HASH)算法等;或者可以采用时间戳算法,如创建或修改的时间标记等。
以下用数据特征信息为数据指纹举例说明本发明实施例。
在本发明实施例中,为客户端和服务器各自数据库中的各个数据设定的数据指纹,是通过客户端和服务器协商或预先设定的数据指纹算法获得的一个较短的字符串,该字符串具有的性质为:长度较短,一般只有十几个字节;不同数据计算得出不同的字符串,即不同数据的数据指纹具有唯一性。由于数据指纹的长度比较短,在客户端传送数据指纹给服务器进行验证时,数据传输量远远低于将自身数据库存储的所有数据都发送给服务器进行数据同步的数据传输量,既使在验证后,加上发送未通过验证的需要同步的数据的过程,也比直接发送自身数据库存储的所有数据的数据传输量小。
在本发明实施例中,为客户端和服务器各自数据库中的各个数据设定的数据指纹可以是预先设定并对应于用LUID标识的数据存储在数据库中,或者是在客户端和服务器进行数据指纹验证阶段动态设定的,即对用LUID标识的数据进行动态设定,这种方式可以称为双方计算智能数据同步类型。
在本发明实施例中,还可以采用客户端将计算的各个数据的数据指纹发送给服务器,服务器针对各个数据存储数据指纹,在服务器比较数据指纹时,就可以不用计算,而直接与自身存储的数据指纹进行比较。在这种情况下,客户端计算数据指纹的时机可以采用以下几种方式:1)在数据同步开始时,客户端计算客户端数据库中各个数据项的数据指纹,这种方案不需要客户端保存各个数据项的数据指纹;2)客户端数据库存储各个数据项的数据指纹,一旦数据项进行了修改,则客户端重新计算修改的数据项的数据指纹并更新。这种方式可以称为单方计算智能数据同步类型。
图3为本发明实施例进行数据同步的方法流程图,其具体步骤为:
数据同步初始化阶段
步骤300、客户端和服务器之间进行数据同步初始化过程。
在本发明实施例中,可以在进行数据同步初始化过程时,进行数据同步类型的协商,即协商是否采用智能数据同步类型,还是其他数据同步类型。在这里,假设协商为采用智能数据同步类型。
在协商采用智能数据同步类型的过程中还可以包括协商是否采用单方计算智能数据同步类型还是采用双方计算的智能数据同步类型。
在本发明实施例中,对于双方计算的智能数据同步类型客户端和服务器之间在数据同步初始化过程中还可以进行数据指纹算法的确定,从而使双方采用确定的数据指纹算法为各自数据库存储的数据进行数据指纹的设定,也可以采用现有技术进行数据同步初始化过程。
在本发明实施例中,对于单方计算的智能数据同步类型,在数据同步初始化过程中可以不进行数据指纹算法的确定。
数据指纹验证阶段
步骤301、客户端向服务器发送携带对应于自身数据库存储数据的数据指纹的数据指纹验证消息。
步骤302、服务器将该消息携带的一个或一个以上数据特征信息与自身数据库中数据设定的数据特征信息相比较,根据比较的结果确定客户端数据的状态,例如是否作修改或是否是客户端新增的等,以及服务器端数据的状态,例如,是否作修改,是否是服务器端新增等,服务器根据双方在同步初始化时协商的同步类型,结合上述的比较结果,确定需要同步的数据,将标识需要同步数据的信息携带在数据特征信息验证响应消息中发送给客户端。
标识需要同步数据的信息可以为需要同步数据对应的LUID,或者为需要同步数据对应的数据指纹,或者为需要同步数据的数据指纹对应的状态码。
当标识需要同步的数据的信息为LUID时,本发明实施例可以将客户端数据库中LUID对应的数据作为需要同步的数据;当标识需要同步数据的信息为数据指纹时,本发明实施例可以将客户端数据库中的数据指纹对应的数据作为需要同步数据;当标识需要同步数据的信息为状态码时,本发明实施例中客户端可以根据客户端数据库中状态码确定对应的数据是否需要同步,由于状态码一般和LUID对应,因此将客户端数据库中LUID对应的数据作为需同步数据。
数据同步阶段
步骤303、客户端根据该响应消息所携带的信息确定要进行同步的数据,向服务器发送要进行同步的数据,供服务器进行自身数据库中数据的同步。
步骤304、服务器向客户端返回同步完数据的响应消息,该响应消息携带需要客户端同步的数据。
步骤305、客户端根据服务器端返回的响应消息所携带的数据同步自身数据库中的数据。
数据同步完成阶段
步骤306、客户端向服务器发送确认数据同步完成消息,该消息携带本次同步完成的状态信息,可以为Anchor信息,或者对应于自身数据库设定的数据指纹等等。
步骤307、服务器接收到该消息后,保存同步完成的状态信息,向客户端发送确认数据同步完成的响应消息,完成数据同步过程;或将接收到的客户端的同步完成状态信息与自身数据库的同步完成状态信息进行比较,如果不相同,则转入步骤302,继续执行本流程(图中未示出);否则,向客户端返回确认数据同步完成的响应消息,完成数据同步过程(图中未示出)。
在本发明实施例中,也可以不进行步骤306和步骤307,而直接完成客户端和服务器之间的数据同步过程。
为了保证在客户端数据库中数据的数据指纹和在服务器中相应数据的数据指纹相同,本发明实施例可以采用几种方式。第一种方式,单方计算智能数据同步类型,由客户端将数据库中各个数据的数据指纹计算后发送给服务器,服务器对应存储到服务器数据库中相应数据中;第二种方式,双方计算智能数据同步类型,客户端和服务器采用相同的数据指纹算法计算各自数据库中数据项的数据指纹。以下分别对这两种方式进行详细说明。
单方计算智能数据同步类型
对于某些数据类型,采用数据指纹由客户端计算,服务器进行保存方式的原因为:客户端和服务器所保存的同一数据项的字段顺序、编码方式或存储格式可能不同,那么所计算的同一数据项的数据指纹也是不相同的,导致在进行数据同步时指纹校验失效,例如在vCard中,电话号码“+86-755-28974150”,在客户端存储时可能变成“86-755-28974150”;还例如时间数据,06/04/05和06-04-05表示的是相同的时间,但由于存储格式不同,计算得到的数据指纹也不同。
在这种方式中,客户端会将所计算的数据指纹对应于数据项通过Add、Replace、Copy或者Move等同步命令发送给服务器,服务器将这些数据指纹与对应的数据项保存在服务器数据库中。
为了采用单方计算智能数据同步类型进行数据同步,客户端和服务器之前需要进行数据同步类型的协商,该协商过程可以在数据同步的初始化阶段或其他阶段。
图4为本发明实施例协商采用单方计算智能数据同步类型的方法流程图,其具体步骤为:
步骤400、客户端根据自身数据库中数据的状态确定要发起的数据同步类型,向服务器上报上一次数据同步的状态信息以及本次确定要发起的数据同步类型。
步骤401、服务器根据接收到的客户端数据库的上一次数据同步的状态信息,确定是否采用接收到的要发起的数据同步类型后,将所确定的数据同步类型发送给客户端。
步骤402、客户端判断接收到的数据同步类型是否为单方计算智能数据同步类型,如果是,转入步骤403;否则,转入步骤404。
步骤403、客户端采用单方计算智能数据同步类型进行本次数据同步过程。
步骤404、客户端按照协商后确定的数据同步类型进行数据同步或者进行重新协商。
在本发明实施例中,客户可以随意选择一种数据同步类型通知客户端,客户端需要检测当前自身数据库中数据的状态然后再确定是发起客户要求的数据同步类型,还是发起一种能够解决数据库状态混乱的数据同步类型(可以为单方计算智能数据同步类型和慢数据同步类型)。
客户端检测当前自身数据库中数据的状态包括检测自身数据库中数据的数据指纹的生成方式是否发生了改变、自身数据库中的LUID混乱或/和重新生成、自身数据库中数据的修改状态丢失。
如果客户端检测到自身数据库中数据的数据指纹的生成方式发生了改变,即计算数据指纹的算法或计算数据指纹的方式发生了改变,则不管客户发起的是何种数据同步类型,客户端发起慢数据同步类型。如果客户端检测到自身数据库中数据的数据指纹的生成方式未发生改变,客户端可进一步判定数据库的状态,确定是发起单方计算智能数据同步类型或采用客户发起的数据同步类型。
如果客户端检测到自身数据库中数据的数据指纹的生成方式未发生改变,但自身数据库中的LUID混乱或/和重新生成、或/和自身数据库中数据的修改状态丢失,客户端可以发起单方计算智能数据同步类型。
如果客户端检测到自身数据库中数据的数据指纹的生成方式未发生改变,且自身数据库中的未LUID混乱或/和未重新生成、且自身数据库中数据的修改状态未丢失,客户端可以发起单方计算智能数据同步类型或采用客户发起的数据同步类型。
服务器检测服务器数据库中的映射表未丢失、保存的指纹未丢失,且客户端指纹生成方式没有发生改变,则服务器进一步根据接收到的客户端数据库的上一次数据同步的状态信息检测到上一次数据同步是否失败,如果是,则服务器可以在响应消息中要求客户端发起单方计算智能数据同步类型。
服务器检测到服务器数据库中的映射表丢失、或/和服务器数据库中仅修改状态丢失,且服务器数据库中的数据指纹未丢失,可以在响应消息中要求客户端发起单方计算智能数据同步类型。
服务器检测到服务器数据库中的映射表丢失且服务器数据库中的数据特征信息丢失,可以在响应消息中要求客户端发起慢同步数据类型。
服务器检测到客户端数据库中数据的数据指纹的生成方式发生了改变,可以在响应消息中要求客户端发起慢同步数据类型。
由上述分析可以看出,客户端确定发起的数据同步类型和服务器确定发起的数据同步类型分别如表2和表3所示:
表2客户端发起数据同步类型表
数据指纹生成方式发生了改变 | LUID 混乱或/和重新生成 | Change Log丢失 | 数据同步类型 |
否 | 是 | 否 | 单方计算智能数据同步类型1 |
否 | 否 | 是 | 单方计算智能数据同步类型2 |
否 | 是 | 是 | 单方计算智能数据同步类型1 |
是 | / | / | 慢数据同步类型 |
表3服务器确定发起的数据同步类型表
上一次数据同步的状态信息为数据同步失败或服务器端Change Log丢失 | 服务器数据库中的映射关系丢失 | 服务器数据库中数据指纹丢失 | 客户端数据库中数据的数据指纹生成方式发生了改变 | 数据同步类型 |
是 | 否 | 否 | 否 | 单方计算智能数据同步类型2 |
否 | 是 | 否 | 否 | 单方计算智能数据同步类型1 |
否 | 是 | 是 | 否 | 慢数据同步类型 |
否 | 是 | 是 | 是 | 慢数据同步类型 |
服务器根据上一次数据同步状态信息判断上一次数据同步是否失败的过程可以采用两种方式。
第一种方式:客户端发送的上一次数据同步的状态信息为数据库的Anchor信息。
服务器检测上一次的数据同步失败的过程为:将客户端发送的Anchor信息与上一次数据同步过程中客户端发送并保存在服务器数据库的Anchor信息进行比较,如果相同,则上一次数据同步成功,否则上一次数据同步失败。
第二种方式:客户端发送的上一次数据同步的状态信息为采用设定的数据特征信息算法为自身数据库计算的数据特征信息。
服务器检测上一次的数据同步失败的过程为:将客户端发送的客户端数据库的数据特征信息与上一次数据同步过程中客户端发送并保存在服务器数据库中的客户端数据库的数据特征信息进行比较,如果相同,则上一次数据同步成功,否则上一次数据同步失败。
在第二种方式中,采用设定的数据特征信息算法为自身数据库计算数据特征信息的过程为:将自身数据库中所有目录的数据特征信息和/或目录下数据对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息;或者将自身数据库中所有目录的数据特征信息或/和目录下数据对应的LUID,以及目录下数据的数据特征信息和/或目录的下级数据对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息;或者将自身数据库中所有数据的数据特征信息和/或数据项对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息。
当然,本发明实施例的客户端和服务器还可以预先约定采用单方计算智能数据同步类型,这是可以是针对客户端数据库和服务器数据库中所有数据、所有数据类型的数据、某种数据类型的数据的或者基于数据大小阀值的数据。
在进行数据同步时,本发明实施例主要分析客户端异常的情况,服务器异常情况可以等同于客户端异常情况。客户端可能出现的异常状态主要有以下两种情况。
1)LUID混乱或/和重新生成
此时,将导致服务器数据库存储的数据的LUID全部无效,只能通过数据指纹来找到客户端数据库和服务器数据库对应的数据项。
服务器数据库映射表丢失的情况可以等同于客户端数据库的LUID混乱或/和重新生成。
2)Change Log丢失,即数据修改状态丢失,客户端数据库和服务器数据库Anchor不一致的情况同此情况。
这种情况将导致无法准确的获知客户端数据库和服务器数据库中的数据项的状态,是否已经进行了数据同步、进行了数据修改还是未进行数据同步。
服务器数据库的Change Log丢失的情况等同于客户端数据库的Change Log丢失的情况;服务器检测到上一次同步失败,且其他状态正常时,等同于客户端数据库的Change Log丢失。
根据上述分析,客户端数据库中数据的状态可能出现的情况如表4所示:
表4客户端数据库中数据的状态表
情况 | LUID混乱或/和重新生成 | Change Log丢失 | 状态 |
1 | 否 | 是 | 异常 |
2 | 是 | 否 | 异常 |
3 | 是 | 是 | 异常 |
4 | 否 | 否 | 正常 |
在表4中的第一种情况是LUID正常Change Log丢失,此时客户端数据库和服务器数据库中的数据项的对应关系没有丢失,但客户端已经无法判定这些数据项进行了修改以及进行了何种修改。在这种情况下,可根据客户端发送的LUID找到数据项的对应关系。服务器在接收到客户端发送的“LUID-数据指纹”映射后,直接与服务器数据库存储的相同LUID的数据指纹进行对比,来确定对应的数据项中的数据是否需要同步。
在表4中的第二种情况是LUID失效Change Log正常,此时客户端数据库和服务器数据库中的数据项的对应关系丢失了,但客户端可以根据Change Log确定数据项做了何种修改。在这种情况下,对于那些在客户端已经进行了进行修改了的数据项,其数据指纹不需要发送给服务器,因为在服务器数据库中必定找不到匹配的数据指纹。因此,在这种情况下,客户端可以根据Change Log减少数据指纹验证阶段的数据指纹传输量,同时,服务器也减少对比数据指纹的数量。
在表4中的第三种情况是LUID失效Change Log丢失,此时客户端数据库和服务器库中的数据项的对应关系丢失了,而且客户端也无法判定哪些数据项做了修改以及作了何种修改,此时,无法进行上述二种情况的优化,客户端需要发送所有待同步数据的指纹。
为了简化起见,实施过程中第二种情况可以和的三种情况合并,统一按照的三种情况进行处理。
在表4中的第四种情况是客户端处于正常情况下,客户端可以采用智能数据同步类型,也可以是其他同步类型。
综上所述,本发明实施例可以利用正常LUID降低数据指纹的对比复杂度,利用Change Log减少数据指纹的传输量。
以下采用表4的前两种情况分别举例说明如何进行数据同步。
本发明实施例出现表4的第一种情况时进行数据同步的过程为:
第一步、客户端和服务器协商后采用单方计算数据同步类型且针对表4出现的第一种情况。
第二步、客户端向服务器发送客户端数据库中所有数据的LUID-数据指纹。
第三步、服务器接收到后,根据服务器数据库保存的LUID-GUID的映射关系和GUID和数据指纹的映射关系,确定对应的数据,对比两者的数据指纹,得到需要进行数据同步的数据。
第四步、服务器向客户端返回需要进行数据同步的数据项的LUID。
在进行上述所述的方法时,可能会出现两种方式。a)服务器修改了服务器数据库中的某个数据项后,就移除原保存的数据指纹;b)服务器修改了服务器数据库中的某个数据项后,就在原保存的数据指纹作一个标记位,标记该数据指纹已经修改或无效,并且保存原数据指纹,用以比较时使用。
图5为本发明实施例出现表4的第一种情况时服务器采用a)方式后进行数据指纹的比较方法流程图,其具体步骤为:
步骤500、服务器从客户端发送的所有LUID-数据指纹中选取一个。
步骤501、服务器判断服务器数据库中是否存在选取的LUID-GUID的映射关系,如果是,执行步骤502;否则,为客户端新增数据,执行步骤504。
步骤502、服务器判断服务器数据库中的对应于选择的LUID-GUID数据的数据指纹是否存在,如果是,执行步骤503;否则,执行步骤506。
步骤503、服务器判断两者的数据指纹是否相同,如果是,则客户端数据库中和服务器数据库中的数据是相同的,双方都未作修改,执行步骤504;否则,执行步骤505。
步骤504、服务器选取下一个LUID-数据指纹进行比较,直到客户端发送的所有LUID-数据指纹全部验证完毕,执行步骤507。
步骤505、该客户端数据库中的数据发生了修改,服务器数据库相应的数据未修改,转入步骤504;
步骤506、该服务器数据库中的数据发生了修改,客户端数据是否发生修改未知,服务器可以进行冲突检测和仲裁后,执行步骤504;
步骤507、对于服务器数据库中剩余的无法与客户端发送的LUID-数据指纹对应的数据,判断服务器数据库中是否是该数据指纹对应的LUID,如果是,则转入步骤508;否则,转入步骤509。
步骤508、服务器判定该数据为在客户端删除的数据,比较过程结束。
步骤509、服务器判定该数据为服务器数据库中的新增数据,比较过程结束。
图5的比较结果如表5所示:
表5采用a)方式后进行数据指纹的比较结果表
情况 | 映射关系 | 指纹比较 | 结果 |
步骤503 | 根据LUID找到映射 | 指纹相同 | 客户端和服务器均未作修改 |
步骤505 | 根据LUID找到映射 | 指纹不相同,服务器端指纹存在 | 客户端修改,服务器未修改 |
步骤506 | 根据LUID找到映射 | 指纹不相同,服务器端指纹不存在 | 客户端修改状态未知,服务器修改,需要冲突检测 |
步骤504 | 根据LUID找不到映射 | / | 客户端新增数据 |
步骤509 | 服务器端剩余无法找到映射关系的数据 | / | 服务器新增数据 |
步骤508 | 服务器端有LUID,但客户端未传送该数据的指纹 | / | 客户端删除的数据项 |
最终,服务器向客户端返回响应消息:服务器将客户端修改的数据、或者客户端新增的数据、或者冲突检测后需要客户端发送到服务器的数据对应的LUID、或者其数据指纹、或者对应的状态码携带在响应消息中返回给客户端,客户端根据响应消息将需要同步的数据发送给服务器进行数据同步;服务器在进行数据同步的同时或之后,将服务器数据库新增、或者修改的数据、或者冲突检测后需要服务器发送到客户端的数据下发给客户端进行客户端数据库中的数据同步。
图6为本发明实施例出现表4的第一种情况时服务器采用b)方式后进行数据指纹的比较方法流程图,其具体步骤为:
步骤600、服务器从客户端发送的所有LUID-数据指纹中选取一个。
步骤601、服务器判断服务器数据库中是否存在选取的LUID-GUID映射关系,如果是,执行步骤602;否则,为客户端新增数据,执行步骤606。
步骤602、服务器判断两者的数据指纹是否一致,如果否,执行步骤603;如果是,执行步骤605。
步骤603、服务器判断该数据指纹是否标识有标记位,标识该数据项已经进行了修改,如果否,执行步骤604;如果是,执行步骤608。
步骤604、服务器确定仅客户端数据库的该数据项发生了修改,执行步骤606。
步骤605、服务器判断该数据指纹是否标识有标记位,标识该数据项已经进行了修改,如果否,客户端和服务器均未作修改,执行步骤606;如果是,执行步骤607。
步骤606、服务器选取下一个LUID-数据指纹进行比较,直到客户端发送的所有LUID-数据指纹全部验证完毕,执行步骤609。
步骤607、服务器确定仅服务器数据库中的该数据项发生了修改,执行步骤606。
步骤608、服务器确定客户端和服务器均对此数据进行了修改,需要进行冲突检测和仲裁后,执行步骤606。
步骤609、对于服务器数据库中剩余的无法与客户端发送的LUID-数据指纹对应的数据,判断服务器数据库中是否该数据指纹对应的LUID,如果是,则转入步骤610;否则,转入步骤611。
步骤610、服务器判定该数据为在客户端删除的数据,比较过程结束。
步骤611、服务器判定该数据为服务器数据库中的新增数据,比较过程结束。
图6的比较结果如表6所示:
表6采用b)方式后进行数据指纹的比较结果图
情况 | 映射关系 | 指纹比较 | 结果 |
步骤605 | 根据LUID找到映射 | 指纹相同 | 客户端和服务器均未作修改 |
步骤607 | 根据LUID找到映射 | 指纹相同,服务器有修改标记位 | 客户端未修改,服务器修改 |
步骤604 | 根据LUID找到映射 | 指纹不相同,服务器端无修改标记位 | 客户端修改,服务器未修改 |
步骤608 | 根据LUID找到映射 | 指纹不相同,服务器端有修改标记位 | 服务器确定客户端和服务器均对此数据进行了修改,需要进行冲突检测和仲裁; |
步骤606 | 根据LUID找不到映射 | / | 客户端新增数据 |
步骤611 | 服务器端剩余无法找到映射关系的数据 | / | 服务器新增数据 |
步骤610 | 服务器端有LUID,但客户端未传送该数据的指纹 | / | 客户端删除的数据项 |
本发明实施例出现表4的第二种情况时进行数据同步的过程为:
第一步、客户端和服务器协商后采用单方计算数据同步类型且针对表4的第二种情况,并根据数据项的状态信息确定哪些数据指纹需要发送。
第二步、客户端向服务器发送客户端数据库中需要发送的数据项的数据指纹。
第三步、服务器接收到后,根据服务器数据库保存的数据项,对比两者的数据指纹,得到需要进行数据同步的数据项。
第四步、服务器向客户端返回需要进行数据同步的数据项的数据指纹或状态码。
在本发明实施例中,客户端可以根据以下规则判定需要发送的数据指纹。
a)数据项具有修改状态标识,如添加、删除或修改,则该数据项的LUID-数据指纹需要发送。
b)数据项没有修改状态标识,则该数据项的LUID-数据指纹可以发送,也可以不发送。
当服务器对服务器数据库中的数据项作了修改后,移除所保存的数据指纹时,如图7所述的方法。图7为本发明实施例出现表4的第二种情况时服务器判定需要进行同步的数据项的方法流程图,其具体步骤为:
步骤700、服务器从客户端发送的所有数据指纹中选取一个。
步骤701、服务器从服务器数据库所保存的数据指纹中是否可以找到相同的数据指纹,如果否,执行步骤702;如果是,执行步骤704。
步骤702、服务器确定为客户端新增数据,执行步骤703。
步骤703、服务器选取客户端发送的下一个数据指纹进行比较,直到客户端发送的所有数据指纹都比较完毕,执行步骤705。
步骤704、客户端和服务器均未作修改,重建映射关系后,执行步骤703。
步骤705、对于服务器数据库中剩余的无法与客户端发送的数据指纹对应的数据,判断为服务器数据库中的新增数据,比较过程结束。
图7的比较结果如表7所示:
表7表4的第二种情况时服务器后比较数据指纹的比较结果表
情况 | 指纹匹配 | 结果 |
步骤704 | 找到匹配的指纹 | 客户端和服务器均未作修改,重建映射关系 |
步骤702 | 找不到匹配的指纹 | 客户端新增数据 |
步骤705 | 服务器端剩余无法找到匹配指纹的数据 | 服务器端新增数据 |
当服务器对服务器数据库中的数据项作了修改后,在原保存的数据项对应的数据指纹设置标记位,该标记位标识该数据指纹已经修改或无效并保存原数据指纹时,也可以采用图7所述的方法,这时,使得步骤701的数据指纹比较更加精确,可以进一步解决数据重复同步的问题。例如上述表7中,如果服务器在服务器数据库中找不到与客户端发送的数据指纹匹配的数据指纹,只能认为是客户端新增数据,导致了数据重复的问题。但是,实际上也可能是客户端未修改,而服务器进行了修改的情况,如果服务器保存旧指纹,并标记进行了修改,则客户端发送的数据指纹可以与服务器保存的旧指纹匹配,从而判定为仅服务器数据库中的数据发生了修改,从而避免了数据重复。
采用本发明实施例时,可以在数据同步协议中新增智能数据同步类型,并使用状态码进行标识,如表8所示:
表8新增智能数据同步类型表
智能同步类型状态码 | 名称 | 描述 |
211 | 智能数据同步类型1 | 1、客户端生成数据指纹,发送给服务器端保存2、LUID混乱/重新生成 |
212 | 智能数据同步类型2 | 1、客户端生成数据指纹,发送给服务器端保存2、数据的Change Log丢失 |
213 | 智能数据同步类型3 | 1、客户端与服务器计算各自数据库中的数据指纹2、LUID混乱/重新生成 |
214 | 智能数据同步类型4 | 1、客户端与服务器计算各自数据库的数据指纹2、数据的Change Log丢失 |
此种表示方式下,客户端向服务器发送协商数据同步类型命令格式如下:
<数据同步类型协商命令>
<数据同步类型编码>智能同步类型1</数据同步类型编码>
</数据同步类型协商命令>
在具体实现时,可以通过数据同步过程中的<Alert>命令实现,以下是一个客户端向服务器发起智能数据同步类型1的<Alert>命令举例:
<SyncML>
<SyncHdr>
</SyncHdr>
<SyncBody>
<Alert>
<CmdID>1</CmdID>
<Data>211</Data><!-Smart Sync 1-->
</Alert>
</SyncML>
服务器要求客户端发起智能数据同步类型1的<Alert>命令举例如下:
<SyncML>
<SyncHdr>
</SyncHdr>
<SyncBody>
<Status>....</Status>
<Alert>
<CmdID>3</CmdID>
<Data>211</Data>
</Alert>
</SyncML>
本发明实施例的另外一种实施方式为仅新增智能数据同步类型,并在协商数据同步类型命令中指明数据指纹的生成方式和发起数据同步的原因,这种表示方式下,客户端向服务器发送协商同步类型命令格式可如下:
<同步类型协商命令>
<同步类型编码>智能同步</同步类型编码>
<指纹生成方式>客户端生成指纹到服务器保存</指纹生成方式>
<原因编码>智能同步发起原因编码</原因编码>
</同步类型协商命令>
为了方便在数据同步命令中携带,可以在现有的规范中定义一个新的数据同步类型表示智能数据同步,同时给智能数据同步的数据指纹生成方式和发起原因新增编码,如表9所示:
表9智能数据同步的数据指纹生成方式和发起原因新增编码表
状态码 | 作用 |
501 | 数据指纹由客户端生成,服务器保存 |
502 | 数据指纹由客户端和服务器分别生成 |
503 | 发起原因:LUID混乱/重新生成 |
504 | 发起原因:数据的Change Log丢失 |
在具体实现时,可以通过数据同步过程中的<Alert>命令实现,以下是一个客户端向服务器发起智能数据同步1的<Alert>命令举例:
<SyncML>
<SyncHdr>
</SyncHdr>
<SyncBody>
<Status>....</Status>
<Alert>
<CmdID>3</CmdID>
<Data>211</Data>
<FPGen>501</FPGen>
<Reason>503</Reason>
</Alert>
</SyncML>
使用本发明实施例后数据指纹发送和校验结果的实施方式
客户端可以通过<Fingerprint>命令向服务器发送自身数据库中的数据项的LUID和数据指纹。命令格式可以采用但不限于以下两种。
第一种:<Fingerprint>
<LUID>011</LUID>
<Data>LKSDJLFJSLDJSDJL</Data>
</Fingerprint>
<Fingerprint>
<LUID>012</LUID>
<Data>JLSDJOTOEWJFLS</Data>
</Fingerprint>
第二种:<Fingerprints>
011:LKSDJLFJSLDJSDJL;
012:JLSDJOTOEWJFLS
</Fingerprints>
服务器向客户端返回的指纹验证响应消息的格式可以采用但不限于如下三种方式:
第一种方式,服务器向客户端返回需要客户端上传数据的LUID列表或/和数据指纹列表;
在具体实现时,可以通过<Status>命令实现,其消息格式可采用但不限于如下的形式:
<Status>
LUID编号:指纹验证状态码;LUID编号:指纹验证状态码
</Status>
或者仅有LUID编号
第二种方式,服务器对客户端发送的每一个数据指纹,返回一个数据指纹验证结果;
在具体实现时,可以通过<Status>命令实现,其消息格式可采用但不限于如下的形式:
<Status>
<LUID>011</LUID>
<Data>217</Data>
</Status>
<Status>
<LUID>012</LUID>
<Data>218</Data>
</Status>
第三种方式,服务器向客户端发送的每一个数据指纹,返回数据指纹验证结果,相同验证结果返回数据项的LUID或/和指纹的列表,即对具有相同状态码的情况可以合并命令,减少数据传输量;
在具体实现时,可以通过<Status>命令实现,其消息格式可采用但不限于如下的形式:
<Status>
<LUID>011;013</LUID>
<Data>217</Data>
</Status>
<Status>
<LUID>012;014</LUID>
<Data>218</Data>
</Status>
举几个具体的实施例说明本发明实施例。
假设服务器对服务器数据库中的数据项作了修改并移除已保存的数据指纹。
实施例1:表4的第一种情况的实施例。
首先,客户端数据库和服务器数据库中的数据项的初始状态如图8a所示,客户端数据库和服务器数据库一段时间后,做了如图8b所示的修改。
其次,客户端数据库中数据项的Change Log丢失,如图8c所示。
最后,进行数据指纹的比较。
a、客户端发现客户端数据库中数据项的Change Log丢失,在数据同步初始化阶段,向服务器请求发起智能数据同步,其中,发起智能数据同步的原因为:Change Log丢失。
b、服务器返回进行智能数据同步的确认。
c、客户端将客户端数据库中数据项的LUID-数据指纹发送给服务器,LUID-数据指纹为{<1,Fa><2,Fb’><3,Fc><4,Fd’><6,Ff><7,Fh>}。
d、服务器在接收到客户端发送的LUID-数据指纹对后,进行如下对比:
服务器数据库<1,Fa><2,Fb><3,-><4,-><5,Fe>
客户端数据库<1,Fa><2,Fb’><3,Fc><4,Fd’><6,Ff><7,Fh>
对比结果:数据1,不需要进行数据同步;数据2,需要进行数据同步;数据3,因为服务器无法判定客户端是否进行了修改,需要根据冲突策略而定,如果服务器赢,则不需要进行数据同步;数据4,根据冲突策略而定;数据5,服务器端检测LUID=5的数据项的数据指纹没有发送过来,确定客户端删除了该数据项,服务器也将该数据项删除;数据6,服务器发现LUID=6的数据项的数据指纹已在服务器端删除,则在数据同步阶段,服务器发送删除命令将客户端上的该数据项也删除;数据8,服务器没有找到可比较的指纹,服务器判定为服务器新增的数据项。
e、服务器向客户端返回需要进行数据同步的数据集合:<2,3?,4?,6,7>。
f、客户端根据服务器返回的数据集合,开始同步。
g、在同步完成阶段,客户端向服务器返回10008的数据指纹,服务器上保存该数据指纹后,向客户端返回该数据指纹保存确认。
如果设定的冲突策略为客户端赢,则在数据同步后客户端数据库和服务器数据库中的数据项如图8d所示。
实施例2:表4的第二种情况的实施例。
首先,客户端数据库中数据项的LUID全部无效,服务器上LUID和GUID的映射已经无效,而客户端会为客户端数据库中数据项重新分配一个新的LUID,此时进行智能数据同步的目的为:快速高效地在服务器重新建立GUID-LUID的对应关系,同时,使得客户端数据库中的数据项与服务器数据库中的数据项对应的数据相一致。
其次,如图9a所示,客户端将客户端数据库中的LUID进行了重新分配,此时,在服务器数据库中的数据项的对应关系已经无效,只能通过仅有的数据指纹找到原对应的数据项,对于数据指纹不一致的数据项,只能作为新添加的数据项。
最后,进行数据指纹的比较。
a、客户端发现客户端数据库中数据项的LUID失效,在数据同步初始化阶段,向服务器请求发起智能数据同步,其中包含发起原因为LUID失效。
b、服务器清除服务器数据库中所有数据项的LUID,返回发起智能数据同步的确认。
c、客户端将客户端数据库中数据项的LUID-数据指纹发送给服务器,如下所示:{<11,Fa><12,Fb’><13,Fc><14,Fd’><16,Ff><17,Fh>}。
d、服务器在接收到客户端发送的LUID-数据指纹后,与服务器数据库中保存的数据指纹进行对比,其结果如下:数据11,10001的指纹与其一致,因此更新10001对应的LUID;数据12-17,均没有找到指纹一致的数据项。
e、服务器向客户端返回需要进行数据同步的数据项集合,即没有找到一致数据指纹的数据项集合,这些数据项集合将类似于客户端新添加的数据项,同步到服务器数据库中;而服务器数据库中的数据项也作为服务器新添加的数据项同步到客户端上。
f、在数据同步完成阶段,客户端对服务器上新增的数据项返回数据指纹,服务器在服务器数据库中保存指纹后,向客户端返回数据指纹保存确认。在数据同步后客户端数据库和服务器数据库中的数据项如图9b所示。
以下实施例为服务器对服务器数据库中的数据项作了修改并在修改数据项的数据指纹设置了标记位,标识该数据指纹已经修改或无效的情况。
实施例3,表4的第一种情况的实施例。
首先,客户端数据库和服务器数据库中的数据项的初始状态如图10a所示,客户端数据库和服务器数据库一段时间后,做了如图10b所示的修改。
其次,客户端数据库中数据项的Change Log丢失,如图10c所示。
最后,进行数据指纹的比较。
a、客户端发现客户端数据库中数据项的Change Log丢失,在数据同步初始化阶段,向服务器请求发起智能数据同步,其中,发起智能数据同步的原因为:Change Log丢失。
b、服务器返回进行智能数据同步的确认。
c、客户端将客户端数据库中数据项的LUID-数据指纹发送给服务器,LUID-数据指纹为{<1,Fa><2,Fb’><3,Fc><4,Fd’><6,Ff><7,Fh>}。
d、服务器在接收到客户端发送的LUID-数据指纹对后,进行如下对比:
服务器数据库<1,Fa><2,Fb><3,-><4,-><5,Fe>
客户端数据库<1,Fa><2,Fb’><3,Fc><4,Fd’><6,Ff><7,Fh>。
对比结果:数据1,不需要进行数据同步;数据2,由于Fb’不等于Fb,而且服务器数据库中数据项的数据指纹没有标志位,说明客户端数据库的数据项发生改变,需要进行数据同步;数据3,由于客户端数据库中数据项的数据指纹等于服务器数据库中数据项的数据指纹,服务器数据库中数据项的数据指纹上有标记位,说明服务器数据库中数据项的数据指纹做了修改,客户端数据库中该数据项没有做修改,客户端不需要同步该数据项;数据4,由于Fd’不等于Fd,而且服务器数据库中数据项的数据指纹有修改标志位,所以客户端和服务器均对该数据项做了修改,冲突,根据冲突策略而定;数据5,服务器发现LUID=5的数据项的数据指纹没有接收到,确定客户端删除了该数据项,服务器也将该数据项删除,客户端不需要对该数据项进行同步;数据6,服务器发现LUID=6的数据项的数据指纹已在服务器删除,在数据同步阶段,服务器发送删除命令将客户端数据库存储的该数据项也删除;数据7,客户端新增的数据项,需要进行数据同步;数据8,服务器没有找到可比较的指纹,服务器判定为服务器新增的数据项。
e、服务器向客户端返回需要上传的数据集合,即<2,4?,6,7>
f、客户端根据服务器返回的数据集合,开始进行数据同步。
g、在同步完成阶段,客户端向服务器返回10008的数据指纹,服务器上保存该数据指纹后,向客户端返回该数据指纹保存确认。
实施例4:表4的第二种情况的实施例。
首先,客户端数据库中数据项的LUID全部无效,服务器上LUID和GUID的映射已经无效,而客户端会为客户端数据库中数据项重新分配一个新的LUID,此时进行智能数据同步的目的为:快速高效地在服务器重新建立GUID-LUID的对应关系,同时,使得客户端数据库中的数据项与服务器数据库中的数据项对应的数据相一致。
其次,如图11a所示,客户端将客户端数据库中的LUID进行了重新分配,此时,在服务器数据库中的数据项的对应关系已经无效,只能通过仅有的数据指纹找到原对应的数据项,对于数据指纹不一致的数据项,只能作为新添加的数据项。
最后,进行数据指纹的比较。
a、客户端发现客户端数据库中数据项的LUID失效,在数据同步初始化阶段,向服务器请求发起智能数据同步,其中包含发起原因为LUID失效。
b、服务器清除服务器数据库中所有数据项的LUID,返回发起智能数据同步的确认。
c、客户端将客户端数据库中数据项的LUID-数据指纹发送给服务器,如下所示:{<11,Fa><12,Fb’><13,Fc><14,Fd’><16,Ff><17,Fh>}。
d、服务器在接收到客户端发送的LUID-数据指纹后,与服务器数据库中保存的数据指纹进行对比,其结果如下:数据11,10001的数据指纹与其一致,因此更新10001对应的LUID,客户端不需要同步数据;数据13,10003的数据指纹与其一致,而且服务器上的数据指纹有修改标记位,说明数据13与10003是对应的,更新10003对应的LUID,且服务器上的数据发生了修改,所以客户端不需要同步数据;数据12,14,16,17,均没有找到数据指纹一致的数据项。
e、服务器向客户端返回需要发送的数据集合:即<12,14,16,17>。
f、客户端根据服务器返回的数据同步的集合,开始进行数据同步。
g、在数据同步完成阶段,客户端对服务器上新增的数据项返回数据指纹,服务器在服务器数据库中保存指纹后,向客户端返回数据指纹保存确认。
在本发明实施例中,当采用单方计算智能数据同步类型同步完数据后,客户端还可以将标识本次同步完成的数据同步的状态信息在确认数据同步完成消息中发送给服务器;服务器将确认数据同步完成消息中携带的数据同步的状态信息存储到自身数据库中后返回响应消息。当然,该数据同步的状态信息包括客户端数据库中进行了同步数据的数据指纹和客户端数据库的数据指纹或Anchor等,以便在下一次进行数据同步时服务器或客户端根据该数据同步的状态信息进行验证。
在本发明实施例中,当客户端确定了采用何种单方计算智能数据同步类型后,就可以与服务器进行数据同步了。单方计算智能数据同步类型的几种方式可以采用发起原因编码进行标识,在服务器中,服务器根据发起原因编码确定采用单方计算智能同步类型中的哪种方式进行数据指纹验证。
图12为本发明实施例采用单方计算智能数据同步类型进行数据同步的方法流程图,其具体步骤为:
步骤1200、客户端向服务器发起单方计算智能数据同步类型的数据同步请求,该请求携带类型码,用以标识采用单方计算智能数据同步类型的哪种类型。
根据该请求可以判断客户端发起智能同步的原因,原因包括:客户端数据库中数据的数据指纹的生成方式发生了改变、数据的LUID混乱或/和重新生成和数据的修改状态丢失等。
如表2所示,可以有三种方式:第一种需要将客户端数据库中所有数据的数据指纹发送;第二种需要将客户端数据库中修改状态改变数据的数据指纹发送。
步骤1201、服务器接收到请求后,确定采用客户端发起的单方计算智能数据同步类型的方式,向客户端返回该请求的响应消息。
步骤1202、客户端将自身数据库中需要同步数据的数据指纹携带在数据特征信息验证消息中发送给服务器。
在不同的方式下,需要同步数据不相同:在第一种方式下,为自身数据库中所有数据;在第二种方式下,为自身数据库中修改状态改变的数据;第三种方式下,为自身数据库中针对LUID的数据。
步骤1203、服务器将接收到的数据指纹与自身数据库中的数据指纹进行验证,根据验证结果确定需要同步的数据,将指示需要同步数据的信息携带在响应消息中发送给客户端。
在不同方式下,验证的过程不一样,具体验证方式可以参考上面描述的过程。
在本发明实施例中,指示需要同步数据的信息为需要同步数据对应的LUID、数据指纹或状态码。
步骤1204、客户端根据响应消息携带的信息确定需要发送给服务器的数据,将确定的数据发送给服务器。
步骤1205、服务器根据客户端上传的数据进行服务器数据库的数据同步,在之后或同时给客户端返回数据同步完成消息的响应消息,该响应消息携带需要客户端同步的数据。
步骤1206、客户端接收到该响应消息后,根据携带的需要客户端同步的数据进行客户端数据库的同步过程。
步骤1207、客户端将所有进行数据同步数据的数据指纹针对LUID携带在确认数据同步完成消息中发送给服务器。
步骤1208、服务器针对LUID存储接收到的确认数据同步完成消息中所有进行数据同步数据的数据指纹,给客户端返回确认数据同步完成消息的响应消息。
双方计算数据同步类型
为了采用双方计算智能数据同步类型进行数据同步,客户端和服务器之前需要进行数据同步类型的协商,该协商过程可以在数据同步的初始化阶段或其他阶段和预先设定。
图13为本发明实施例协商采用双方计算智能数据同步类型的方法流程图,其具体步骤为:
步骤1300、客户端根据自身数据库中数据的状态确定要发起的数据同步类型,向服务器上报上一次数据同步的状态信息以及本次确定要发起的数据同步类型。
步骤1301、服务器根据接收到的客户端数据库的上一次数据同步的状态信息,确定是否采用接收到的要发起的数据同步类型后,将所确定的数据同步类型发送给客户端。
步骤1302、客户端判断接收到的数据同步类型是否为双方计算智能数据同步类型,如果是,转入步骤1303;否则,转入步骤1304。
步骤1303、客户端采用双方计算智能数据同步类型进行本次数据同步过程。
步骤1304、客户端按照协商后确定的数据同步类型进行数据同步或者进行重新协商。
在本发明实施例中,客户可以随意选择一种数据同步类型通知客户端,客户端需要检测当前自身数据库中数据的状态然后再确定是发起客户要求的数据同步类型,还是发起一种能够解决数据库状态混乱的数据同步类型(可以为双方计算智能数据同步类型和慢数据同步类型)。
客户端检测当前自身数据库中数据的状态包括检测自身数据库中的LUID混乱或/和重新生成和自身数据库中数据的修改状态丢失。
客户端如果检测到自身数据库中的LUID混乱或/和重新生成、或/和修改状态丢失,则为双方计算智能同步类型。
服务器确定所发起的数据同步类型的过程为:服务器根据上一次数据同步的状态信息检测到上一次的数据同步失败,或/和服务器数据库中的映射表丢失,或/和服务器数据库中数据的修改状态丢失,则为双方计算智能数据同步类型。
客户端和服务器分别确定发起的数据同步类型分别如表10和表11所示:
表10实施例中的客户端确定发起的数据同步类型表
LUID混乱或/和重新生成 | ChangeLog丢失 | 数据同步类型 |
是 | 否 | 双方计算数据同步类型3 |
否 | 是 | 双方计算数据同步类型4 |
是 | 是 | 双方计算数据同步类型3 |
表11实施例中的服务器确定发起的数据同步类型表
上一次数据同步的状态信息为数据同步失败 | 服务器数据库中的映射关系丢失 | 数据同步类型 |
是 | 否 | 双方计算数据同步类型4 |
否 | 是 | 双方计算数据同步类型3 |
服务器根据上一次数据同步状态信息判断上一次数据同步是否失败的过程可以采用与单方计算智能数据同步类型相同的两种方式。
当然,本发明实施例的客户端和服务器还可以预先约定采用双方计算数据同步类型,这是可以是针对客户端数据库和服务器数据库中所有数据的、所有数据类型的数据的、某种数据类型的数据的或者某种数据大小的数据的。
在本发明实施例中,客户端和服务器约定根据所同步的数据类型或数据大小来确定数据同步类型,具体叙述为:
1)对于vCard,vCalendar数据类型,是由多个字段组成,客户端与服务器端字段的顺序,字段的编码方式等不同都会影响指纹值的计算,所以针对这些数据类型,可以采用单方计算智能数据同步类型。
2)对于文件,mp3等数据类型,没有字段的顺序和编码方式的不同,可以直接对数据内容计算指纹,这样采用双方计算智能数据同步类型。
3)根据同步数据的大小来协商是否进行指纹验证。
在进行数据同步过程中,如果采用过滤机制,则数据指纹协商以及数据同步时,只考虑满足过滤机制的数据。
由于采用双方计算数据同步类型进行数据同步,所以客户端和服务器都需要计算各自数据库中数据的数据指纹,两方计算数据指纹的算法必须相同,并且可以预先分别设定在客户端和服务器中。在本发明实施例中,客户端和服务器还可以协商计算数据指纹的算法。
本发明实施例客户端和服务器进行数据指纹算法的协商过程为:
第一步、客户端向服务器发送初始化数据包,其中包括一个或多个数据指纹算法标记。
第二步、服务器接收到该初始化数据包,根据该初始化数据包包括的一个或多个数据指纹算法标记确定可以选择的数据指纹算法,根据自身情况选择一个数据指纹算法。
第三步、服务器向客户端返回初始化数据包,其中包括所选择的数据指纹算法标记。
协商完成后,客户端采用所协商的数据指纹算法对自身数据库存储的数据设定数据指纹,同样地,服务器采用所协商的数据指纹算法对自身数据库存储的数据设定数据指纹。
在具体实现中,由于服务器可以支持所有已经规定好的数据指纹算法,所以客户端可以指定其中一种适合自身的数据指纹算法,本发明实施例客户端和服务器进行客户端指定数据指纹算法的过程为:
第一步、客户端向服务器发送初始化数据包,其中包括指定的数据指纹算法标记。
第二步、服务器根据接收到初始化数据包包括的指定的数据指纹算法标记确定数据指纹算法,向客户端返回初始化数据包,其中包括确认客户端指定的数据指纹算法标记。
这样,客户端和服务器就可以采用客户端指定的数据指纹算法为各自数据库中的数据设定数据指纹了。
在本发明实施例中,客户端指定数据指纹算法的过程也可以不在数据同步初始化阶段进行,而是在数据同步初始化阶段之后进行:在客户端向服务器发送数据指纹验证消息时,还携带所采用的数据指纹算法标记;在服务器接收到该消息后,根据该消息携带的数据指纹算法标记确定数据指纹算法,采用所确定的数据指纹算法为自身数据库中存储的数据设定数据指纹,然后再执行后续过程。
在服务器采用双方计算智能数据同步类型进行数据同步过程中的数据指纹验证时,与采用单方计算智能数据同步类型进行数据同步过程中的数据指纹验证的过程相同,只不过服务器数据库中的数据指纹是由服务器根据数据指纹算法计算得到的,而不是由客户端发送来并存储的,所以在这不再重述。
在采用双方计算智能数据同步类型同步完数据后,该方法还包括:客户端将自身数据库中完成同步的数据同步的状态信息在确认数据同步完成消息中发送给服务器;服务器将确认数据同步完成消息中携带的数据同步的状态信息与自身数据库中相应的数据同步的状态信息进行比较,该自身数据库中相应的数据同步的状态信息为客户端发送并保存的,或是服务器计算的,如果都相同,则返回响应消息;否则,再次采用双方计算智能数据同步类型进行数据同步。当然,该数据同步的状态信息可以为客户端数据库和服务器数据库的Anchor值、或数据库的数据指纹、或数据的数据指纹。
图14为本发明实施例采用双方计算智能数据同步类型进行数据同步的方法流程图,其具体步骤为:
步骤1400、客户端向服务器发起双方计算智能数据同步类型的数据同步请求,该请求携带类型码,用以标识采用双方计算智能数据同步类型的哪种类型。
根据该请求可以判断客户端发起智能同步的原因,原因包括:数据的LUID混乱或/和重新生成和数据的修改状态丢失等。
如表10所示,可以有两种方式:第一种需要将客户端数据库中所有修改状态或未改变数据的数据指纹发送;第二种需要将客户端数据库中所有数据的数据指纹针对LUID发送。
步骤1401、服务器接收到请求后,确定采用客户端发起的双方计算智能数据同步类型的方式,向客户端返回该请求的响应消息。
步骤1402、客户端将自身数据库中需要同步数据的数据指纹携带在数据特征信息验证消息中发送给服务器。
在不同的方式下,需要同步数据不相同:在表11的在第一种方式下,为自身数据库中所有修改状态或未改变的数据;在表12的第二种方式下,为自身数据库中针对LUID的数据。
步骤1403、服务器将接收到的数据指纹与自身数据库中的数据指纹进行验证,根据验证结果确定需要同步的数据,将指示需要同步数据的信息携带在响应消息中发送给客户端。
在不同方式下,验证的过程不一样,具体的验证过程参见上面的描述。
在本发明实施例中,指示需要同步数据的信息为需要同步数据对应的LUID、客户端数据库设置的数据指纹,服务器下发给客户端的数据等。
步骤1404、客户端根据响应消息携带的信息确定需要发送给服务器的数据,将确定的数据发送给服务器。
步骤1405、服务器根据客户端上传的数据进行服务器数据库的数据同步,在之后或同时给客户端返回数据同步完成消息的响应消息,该响应消息携带需要客户端同步的数据。
步骤1406、客户端接收到该响应消息后,根据携带的需要客户端同步的数据进行客户端数据库的同步过程。
步骤1407、客户端将所有进行数据同步的数据指纹针对LUID携带在确认数据同步完成消息中发送给服务器。
步骤1408、服务器针对LUID根据接收到的数据指纹验证自身数据库中的数据指纹,如果都相同,则给客户端返回确认数据同步完成消息的响应消息,如果不相同,则再次发起数据同步过程(图中未示出)。
当然,在步骤1407和步骤1408的过程中,也可以是服务器发送数据指纹,由客户端进行验证。
在本发明实施例中,无论采用单方计算智能数据同步类型还是采用双方计算智能数据同步类型进行数据同步,在服务器验证完数据指纹后,会向客户端返回需要进行同步数据的信息,该信息可以为需要同步数据的LUID或需要同步数据的客户端数据库的数据指纹,该信息还可以为对应LUID或数据指纹的状态码,以下举一个具体的例子进行说明。
服务器向客户端返回需要进行同步数据的信息中的状态码分别表示的含义如表12所示或表13所示:
表12服务器向客户端返回需要进行同步数据的信息中的状态码表示的含义实例1表
数据指纹验证结果 | 状态码 |
不需要同步 | 217 |
客户端需要上传数据,服务器无需下发数据 | 218 |
客户端无需上传数据,服务器需要下发数据 | 219 |
客户端需要上传数据,服务器需要下发数据 | 220 |
冲突检测,客户端赢,客户端上传数据 | 221 |
冲突检测,服务器端赢,服务器下发数据 | 222 |
表13服务器向客户端返回需要进行同步数据的信息中的状态码表示的含义实例2表
数据指纹验证结果 | 状态码 |
不需要同步 | 217 |
只客户端需要上传数据 | 218 |
只服务器需要下发数据 | 219 |
客户端需上传数据,服务器需要下发数据 | 220 |
假设服务器进行数据指纹验证的结果如表14所示:
表14实施例服务器进行数据指纹验证的结果表
LUID | Fingerprint | 验证结果 | 状态码 |
1111 | F1 | 不需要同步 | 217 |
1112 | F2 | 不需要同步 | 217 |
1113 | F3 | 客户端无需上传数据,服务器需要下发数据 | 219 |
1114 | F4 | 冲突检测,服务器端赢,服务器下发数据 | 222 |
1115 | F5 | 冲突检测,客户端赢,客户端上传数据 | 221 |
1116 | F6 | 冲突检测,服务器端赢,服务器下发数据 | 222 |
1117 | F7 | 冲突检测,客户端赢,客户端上传数据 | 221 |
1118 | F8 | 客户端需要上传数据,服务器无需下发数据 | 218 |
1119 | F9 | 客户端需要上传数据,服务器无需下发数据 | 218 |
1120 | F10 | 客户端无需上传数据,服务器需要下发数据 | 219 |
1121 | F11 | 客户端无需上传数据,服务器需要下发数据 | 219 |
服务器向客户端返回需要进行同步数据的信息可以采用三种方式:
第一种方式,服务器向客户端返回需要客户端上传数据项的LUID列表或/和数据指纹列表;上例返回需要客户端上传的数据项的LUID如下:
<需同步数据项的LUID列表>1115,1117,1118,1119</需同步数据项的LUID列表>
第二种方式,服务器对客户端发送的每一个数据指纹,返回一个数据指纹验证结果;上例返回LUID和数据指纹验证结果如下:
<验证结果>
<1111,217>,<1112,217>,<1113,219>,<1114,222><1115,221>,<1116,222><1117,221>,<1118,218>,<1119,218>,<1120,219>,<1121,219>
</验证结果>
第三种方式,服务器向客户端发送的每一个数据指纹,返回数据指纹验证结果,相同验证结果返回数据项的LUID或/和指纹集合;上例返回LUID和状态码的情况如下:
<验证结果>
<Status>217</Status><LocURI>1111,1112</LocURI>
<Status>222</Status><LocURI>1114,1116</LocURI>
<Status>221</Status><LocURI>1115,1117</LocURI>
<Status>218</Status><LocURI>1118,1119</LocURI>
<Status>219</Status><LocURI>1113,1120,1121</LocURI>
</验证结果>
在本发明实施例中,无论采用单方计算智能数据同步类型还是采用双方计算智能数据同步类型进行数据同步,当客户端与服务器之间进行为各自数据库存储的数据设定的数据指纹的验证时,可以采用两种方案进行验证。第一种方案,分级数据指纹的验证,该方案在确定客户端与服务器各自数据库存储的数据存在不相同时,客户端与服务器将分级层层验证双方数据库中的数据设定的数据指纹,根据双方数据库中上层数据设定的数据指纹的验证结果,确定是否要进行数据库中下层数据设定的数据指纹的验证。第二种方案,不分级数据指纹的验证,该方法在确定客户端与服务器各自数据库存储的数据存在不相同时,客户端将为自身数据库中各个数据设定的数据指纹都发送给服务器,由服务器根据所接收数据指纹对为自身数据库中的数据设定的数据指纹进行一一验证。以下对这两种方案进行详细说明。
第一种方案,分级数据指纹的验证。
为了实现分级数据指纹的验证,在客户端和服务器各自的数据库中,当存储数据时,也需要分层进行存储,图15为本发明实施例在客户端数据库分层存储数据实施例的示意图:客户端数据库存储的数据分为四级,每个所存储数据用N1~N11中的一个作为数据指纹进行标识。对应的存储表如表15所示:
表15数据指纹对应的存储表
LUID | 名称 | 属性 | 数据指纹 |
1110 | 朋友 | N2 | |
1111 | A1 | N3 | |
1112 | A2 | N4 |
1113 | 公司同事 | N5 | |
1114 | 大学朋友 | N6 | |
1115 | A4 | N7 | |
1116 | A5 | N8 | |
1117 | A6 | N9 | |
1118 | A7 | N10 | |
1119 | A8 | N11 |
为了标识数据库存储的数据都属于哪一个级别,本发明实施例还为所存储的数据设定了一个标识父元素的字节,父元素指得是其上一级数据的名称或者其上一级数据对应的LUID,第一级标识的父元素设定为根节点,根据为数据设定的标识父元素的字节就可以确定出该数据为哪一级数据了。
同样地,在服务器数据库中也采用上述方式存储各个级别的数据。本发明实施例以客户端数据库中数据的LUID未混乱/重新生成的情况举例说明。
图16为本发明实施例客户端和服务器进行分级数据指纹的验证方法流程图,其具体步骤为:
步骤1601、客户端将自身数据库中第一级数据作为当前级别数据。
在本发明实施例中,第一级数据可以为自身数据库虚拟的数据指纹,也就是自身数据库的根目录的数据指纹,第二级数据也可以为自身数据库虚拟的数据指纹的下一级数据指纹,也就是自身数据库的根目录的下一级目录或数据的数据指纹。
在本发明实施例中,数据库虚拟的数据指纹也可以在数据同步过程的初始化阶段进行验证,而不在图16所述的过程中验证。
步骤1602、客户端将为当前级别数据设定的用LUID标识的数据指纹携带在数据指纹验证消息中发送给服务器。
步骤1603、服务器接收到该消息携带的用LUID标识的数据指纹后,比较为自身数据库中相应数据设定的数据指纹是否相同,并将验证的结果携带在数据指纹验证响应消息中发送给客户端。
步骤1604、客户端接收到该响应消息后,根据该响应消息携带的验证结果确定自身数据库存储的数据指纹不相同的数据。
步骤1605、客户端将自身数据库存储的数据指纹不相同的数据设定为数据同步过程中要发送的同步数据,并且将该数据的下一级数据作为当前级别数据,转入步骤1602继续执行,直到将自身数据库中所有级别的数据都执行完,结束本验证数据指纹的流程。
在图16中,如果步骤1604携带的验证结果中没有数据指纹不相同的数据指纹的信息,则客户端确定自身数据库存储的数据指纹相同的数据以及其下级数据为垃圾数据,不需要进行数据同步,结束本验证数据指纹的流程以及后续的数据同步过程。
为了实现分级数据指纹的验证,本发明实施例在对客户端和服务器各自数据库中各个级别的数据设定数据指纹时,各个级别的数据可以包括三种类型的数据:文件、数据项和目录,其中目录下面可以包含数据项、文件和下级目录,可以采用递归的方式进行设定,如当前级别的数据为目录时,可以将为当前级别的下一级别的数据设定的数据指纹以及下一级别的数据对应的LUID作为计算目录的数据指纹的输入元素采用设定的数据指纹算法设定目录的数据指纹。为了保证服务器和客户端在设置同一目录的数据指纹时所设置的目录的数据指纹相同,本发明实施例设定的目录的数据指纹时所采用的输入元素按照LUID进行顺序排列。
这样,就可以保证如果客户端和服务器各自数据库中的当前级别数据验证为是垃圾数据时,其下级别所有数据一定也是垃圾数据。
采用这种递归方式对客户端和服务器各自数据库中各个级别的数据设定数据指纹时,也可以将客户端和服务各自数据库作为最高级别的数据,为客户端和服务各自数据库设定数据指纹。
第二种方案,不分级数据指纹的验证
本发明实施例以客户端数据库中数据的LUID未混乱/重新生成的情况举例说明。
图17为本发明实施例客户端和服务器进行不分级数据指纹的验证方法流程图,其具体步骤为:
步骤1701、客户端向服务器发送携带对应于自身数据库存储的各个数据的用LUID标识的数据指纹的数据指纹验证消息。
步骤1702、服务器对于所接收到该消息携带的每一个用LUID标识的数据指纹进行处理:判断自身数据库是否为存储的相应数据设定了数据指纹,如果是,执行步骤1703;否则,执行步骤1705。
步骤1703、服务器判断接收到的用LUID标识的数据指纹是否与为自身数据库存储的相应数据设定的数据指纹相同,如果是,执行步骤1704;否则,执行步骤1705;
步骤1704、服务器将具有该LUID的数据设定为垃圾数据,转入步骤2502,继续所接收到该消息携带的下一个用LUID标识的数据指纹的处理。
步骤1705、服务器将具有该LUID的数据设定为要进行数据同步的数据,返回步骤1702,继续所接收到该消息携带的下一个用LUID标识的数据指纹的处理,直到将所有该消息携带的用LUID标识的数据指纹都处理完成,将标识有要进行数据同步的所有数据的信息携带在数据指纹验证响应消息中发送给客户端,由客户端进行后续的数据同步过程。
以下举具体实施例说明本发明实施例如何进行数据的数据指纹设定过程以及如何采用为数据设定的数据指纹进行数据同步的过程。
实施例一,对数据库和目录的数据指纹进行设定
目录的数据指纹计算,以该目录下的目录、文件、数据项的数据指纹和对应的LUID作为输入元素采用设定的数据指纹算法进行计算,采用图18所示的示意图:“朋友”目录下有“大学同学”、A4和A5三个数据。其中“大学同学”是目录,A4和A5是数据项。因此,以CRC算法为例,“朋友”目录的指纹可按如下计算:
“朋友”的数据指纹N2=CRC(“大学朋友:N6;A4:N7;A5:N8”)
同样地,对于数据库的数据指纹可按如下计算:
数据库的数据指纹N1=CRC(“朋友:N2;A1:N3;A2:N4;公司同事:N5”)
如果采用时间戳算法作为设定的数据指纹算法,数据库或目录的数据指纹为该数据库或目录中的所有下级数据中的数据最近修改的时间。
实施例二,对数据项的数据指纹的设定
数据项的数据指纹计算,以该数据项的内容作为输入元素采用设定的数据指纹算法进行指纹计算,采用图18所示的示意图,数据项A1的数据指纹可按如下计算:
数据指纹N3=CRC(A1的实际内容)
实施例三,采用为数据设定的数据指纹进行数据同步过程
假设用户使用的客户端的数据库存储的数据如图19所示,其中,第二级数据中的数据项A1为新增数据项;第三级数据中的A5以及第四级数据中的A8为修改数据项。假设客户端数据库的数据指纹N1为000111,则客户端数据库中的用LUID标识的数据、为数据设定的数据指纹以及当前属性如表16所示:
表16实施例中针对图19为数据设定的数据指纹以及当前属性表
LUID | 名称 | 当前属性 | 数据指纹 |
1110 | 朋友 | 更新 | N2=111001 |
1111 | A1 | 增加 | N3=100110 |
1112 | A2 | 未改变 | N4=101111 |
1113 | 公司同事 | 未改变 | N5=000011 |
1114 | 大学朋友 | 更新 | N6=010101 |
1115 | A4 | 未改变 | N7=010001 |
1116 | A5 | 更新 | N8=100001 |
1117 | A6 | 未改变 | N9=010101 |
1118 | A7 | 未改变 | N10=0110101 |
1119 | A8 | 更新 | N11=1000000 |
假设服务器数据库存储的数据如图27所示,其中,第二级数据中的数据项B1为新增数据项;第三级数据中的A5以及第四级数据中的A8为修改数据项。假设服务数据库的数据指纹N1为001111,则服务器数据库中的用LUID对应的GUID标识的数据、为数据设定的数据指纹以及当前属性如表17所示:
表17实施例中针对图27为数据设定的数据指纹以及当前属性表
GUID | 名称 | 当前属性 | 数据指纹 |
111110 | 朋友 | 更新 | N2=111000 |
111111 | A2 | 未改变 | N3=100110 |
111112 | A3 | 未改变 | N4=101111 |
111113 | 公司同事 | 未改变 | N5=000011 |
111114 | 大学朋友 | 更新 | N6=010101 |
111115 | A4 | 未改变 | N7=010001 |
111116 | A5 | 更新 | N8=100011 |
111117 | A6 | 未改变 | N9=010101 |
111118 | A7 | 未改变 | N10=0110101 |
111119 | A8 | 更新 | N11=1000000 |
1111001 | B1 | 增加 | N12=111001 |
假设客户端和服务器均对各自数据库中存储的数据项A8进行了修改,但是所作的修改是相同的,即客户端为数据项A8设定的数据指纹与服务器为数据项A8设定的数据指纹相同。
这时,由客户端和服务器协商后确定发起智能数据同步,该智能数据同步采用分级数据指纹验证的方法进行验证。
首先,如图20所示:客户端发送自身数据库的数据指纹给服务器,服务器将接收到的数据指纹与自身数据库的数据指纹进行比较,判断出不一致,执行下一步骤。
其次,如图21所示:客户端继续传送第二级数据的数据指纹给服务器,服务器对所接收到的数据指纹与自身数据库的相应数据的数据指纹进行一一比较,并将比较的结果发送给客户端。
再次,如图22所示:客户端根据所接收到的比较结果继续传送第二级数据的下级数据的数据指纹给服务器,服务器对所接收到的数据指纹与自身数据库的相应数据的数据指纹进行一一比较,并将比较的结果发送给客户端。
最后,客户端接收到比较结果后,完成对自身数据库中数据的数据指纹验证,确定数据指纹不相同的数据项A1、A5和B1,可以采用现有技术进行数据项A1、A5和B1的数据同步过程,其中,数据项B1在客户端数据库中没有,服务器判定为自己添加的,在数据同步时需要发送给客户端。
本发明实施例还提供了一种***,如图23所示:该***包括客户端和与客户端进行同步数据的服务器,客户端和服务器各自连接数据库,用于分别存储同步数据。
在客户端和服务器中,分别还具有数据处理模块、数据指纹处理模块和同步模块,其中,
数据处理模块,分别与数据库和同步模块相连接,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或/和增加。
数据指纹处理模块,与同步模块相连接,用于为同步模块中的数据设定数据指纹后发送给同步模块进行对应于数据的存储。
同步模块,分别与数据处理模块、数据指纹处理模块以及对方的同步模块相连接,用于将对方的同步模块所发送数据的数据指纹与自身存储相应数据的数据指纹进行验证并得出验证结果,发送给对方的同步模块,接收来自对方的同步模块的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向对方的同步模块发送自身存储的数据指纹,接收来自对方的同步模块的验证结果,根据验证结果向对方的同步模块发送携带同步数据的数据同步消息使对方进行数据同步。
对方的同步模块发送的数据同步消息些的同步数据是根据接收到的同步模块的验证结果确定的需要同步的数据。
在本发明实施例中,还提供一种进行数据同步的客户端,该客户端如图23中的客户端所示,包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,用于将服务器所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给服务器,接收来自服务器发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向服务器发送由数据特征信息处理模块得到的数据特征信息,接收来自服务器的验证结果,根据验证结果向服务器发送携带同步数据的数据同步消息使服务器进行数据同步。
在该客户端中,所述的同步模块还与服务器中的同步模块进行信息交互。
本发明实施例还提供一种进行数据同步的服务器,如图23中的服务器所示,包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,用于将客户端所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给客户端,接收来自客户端发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向客户端发送由数据特征信息处理模块得到的数据特征信息,接收来自客户端的验证结果,根据验证结果向客户端发送携带同步数据的数据同步消息使客户端进行数据同步。
在该服务器中,所述的同步模块还与客户端中的同步模块进行信息交互。
在本发明实施例中,客户端和服务器的地位属于对等的,对于功能比较强大的客户端,如个人数字助理(PDA)或计算机等客户端,也可以按照服务器一样的架构以及处理流程进行设备信息协商过程;对于功能比较弱的服务器,本发明实施例也可以按照客户端一样的架构以及处理流程进行设备信息协商过程,如不使用缓存机制、采用压缩技术等。
本发明实施例提供的***、方法及装置降低了数据传输流量,提高了进行数据同步的效率,并且便于扩展和自由选择,满足使用客户端的用户需求。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (39)
1.一种数据同步方法,其特征在于,该方法还包括:
A、客户端向服务器发送数据特征信息验证消息,该消息携带一个或一个以上为数据库中数据设定的数据特征信息;
B、服务器将该消息携带的一个或一个以上数据特征信息与自身数据库中数据设定的数据特征信息相比较,根据比较的结果确定需要同步的数据,将指示该数据的信息携带在数据特征信息验证响应消息中发送给客户端;
C、客户端根据该消息携带的信息,确定要进行同步的数据,与服务器之间进行所确定数据的同步。
2.如权利要求1所述的方法,其特征在于,步骤A所述设定数据特征信息是根据设定的数据特征信息算法进行实时计算得到的、或根据设定的数据特征信息算法计算后存储的;
步骤B所述设定的数据特征信息是接收由客户端发送并存储的。
3.如权利要求2所述的方法,其特征在于,所述确定步骤B数据特征信息是接收由客户端发送并存储的过程为:
客户端和服务器协商是否采用单方计算智能同步类型,如果是,步骤B所设定的数据特征信息是接收由客户端预先发送并存储的或者是上一次单方计算智能同步过程中由客户端发送并存储的;否则,步骤B所设定的数据特征信息是根据设定或者客户端和服务器协商得到的数据特征信息算法计算得到的;
或者客户端和服务器预先约定采用单方计算智能同步类型,该约定是针对客户端数据库中所有数据和服务器数据库中所有数据或者所有数据类型的数据;或者针对客户端数据库中和服务器数据库中的某种数据类型或某种大小的数据。
4.如权利要求2所述的方法,其特征在于,在步骤A之前,该方法还包括协商采用数据同步类型的过程:
客户端根据自身数据库中数据的状态确定要发起的数据同步类型,向服务器上报上一次数据同步的状态信息以及本次确定要发起的数据同步类型;
服务器根据接收到的客户端数据库的上一次数据同步的状态信息,确定是否采用接收到的要发起的数据同步类型后,将所确定的数据同步类型发送给客户端;
客户端判断接收到的数据同步类型是否为单方计算智能数据同步类型,如果是,执行步骤A;否则,按照协商后确定的数据同步类型进行数据同步或者重新协商。
5.如权利要求4所述的方法,其特征在于,所述客户端确定要发起的数据同步类型的过程为:
如果自身数据库中数据的数据特征信息的生成方式发生了改变,为慢同步数据类型;
如果客户端数据库中数据状态为LUID混乱或/和重新生成,或/和修改状态丢失,为单方计算智能数据同步类型;
如果自身数据库中数据的数据特征信息的生成方式没有发生改变,且客户端数据库中数据状态为LUID未混乱或/和未重新生成,且修改状态未丢失,为客户选择的数据同步类型。
6.如权利要求4所述的方法,其特征在于,所述服务器确定数据同步类型的过程为:
如果服务器根据上一次数据同步的状态信息检测到上一次的数据同步失败,且服务器数据库中的映射表未丢失、且服务器数据库中保存的数据特征信息未丢失,为单方计算智能数据同步类型;
如果服务器检测到服务器数据库中的映射表丢失、或/和服务器数据库中仅修改状态丢失,且服务器数据库中的数据特征信息未丢失,为单方计算智能数据同步类型;
如果服务器检测到服务器数据库中的映射表丢失且服务器数据库中的数据特征信息丢失,为慢同步数据类型;
如果服务器检测到客户端数据库中数据的数据特征信息的生成方式发生了改变,为慢同步数据类型。
7.如权利要求6所述的方法,其特征在于,所述客户端发送的上一次数据同步的状态信息为锚Anchor信息;所述服务器检测上一次的数据同步失败的过程为:将客户端发送的Anchor信息与上一次数据同步过程中客户端发送并保存在服务器数据库的Anchor信息进行比较,如果相同,则上一次数据同步成功,否则上一次数据同步失败;
或者,所述客户端发送的上一次数据同步的状态信息为采用设定的数据特征信息算法为自身数据库计算的数据特征信息;所述服务器检测上一次的数据同步失败的过程为:将客户端发送的客户端数据库的数据特征信息与上一次数据同步过程中客户端发送并保存在服务器数据库中的客户端数据库的数据特征信息进行比较,如果相同,则上一次数据同步成功,否则上一次数据同步失败。
8.如权利要求7所述的方法,其特征在于,所述采用设定的数据特征信息算法为自身数据库计算数据特征信息的过程为:
将自身数据库中所有目录的数据特征信息和/或目录下数据对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息;
或者将自身数据库中所有目录的数据特征信息或/和目录下数据对应的LUID,以及目录下数据的数据特征信息和/或目录的下级数据对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息;
或者将自身数据库中所有数据的数据特征信息和/或数据项对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息。
9.如权利要求2所述的方法,其特征在于,当客户端数据库中数据特征信息的本地唯一标识LUID混乱或/和重新生成但修改状态未丢失时,
步骤A所述的数据特征信息为自身数据库中修改状态改变的待同步数据的数据特征信息或者所有待同步数据的数据特征信息;
步骤B所述比较过程为:对于客户端发送的每个数据特征信息,服务器将其与服务器数据库中所有的数据特征信息进行比较;
当客户端数据库中数据特征信息的LUID未混乱或/和重新生成但修改状态丢失时,
步骤A所述的数据特征信息为自身数据库中所有用LUID标识的待同步数据的数据特征信息;
步骤B所述比较过程为:服务器根据该消息所携带的一个或一个以上数据特征信息的LUID确定所对应的自身数据库中的数据,将该消息携带的一个或一个以上数据特征信息与为所对应数据设定的数据特征信息相比较;
当客户端数据库中数据特征信息的LUID混乱或/和重新生成且修改状态丢失,
步骤A所述的数据特征信息为自身数据库中所有待同步数据的数据特征信息;
步骤B所述比较过程为:对于客户端发送的数据特征信息,服务器将其与服务器数据库中所有的数据特征信息进行比较。
10.如权利要求9所述的方法,其特征在于,当服务器修改自身数据库中的数据时,服务器移除该数据对应的数据特征信息;
步骤B所述将其与服务器数据库中的数据特征信息进行比较的过程为:服务器判断在自身数据库中是否有与所接收到的数据特征信息相同的数据特征信息,如果有,则所接收到的该数据特征信息对应的数据不需要同步;否则,则所接收到的该数据特征对应的数据需要同步;
当服务器修改自身数据库中的数据时,服务器给该数据对应的数据特征信息设置标记位且保存数据特征信息;
步骤B所述将其与服务器数据库中的数据特征信息进行比较的过程为:服务器判断在自身数据库中是否有与所接收到的数据特征信息相同的数据特征信息,如果没有,则所接收到的该数据特征信息对应的数据需要同步;如果有,则在自身数据库中与所接收到的数据特征相同的数据特征信息是否有标记位,如果有标记位,则所接收到的该数据特征对应的数据需要同步;如果没有标记位,则所接收到的该数据特征对应的数据不需要同步。
11.如权利要求9所述的方法,其特征在于,步骤C所述与服务器之间进行所确定数据的同步的过程为:
客户端根据该消息携带的信息,确定要要上传给服务器的数据,将所确定的数据上传给服务器进行服务器数据库中数据的同步;
服务器根据比较的结果将需要发送到客户端的数据发送到客户端,供客户端进行自身数据库中数据的同步。
12.如权利要求11所述的方法,其特征在于,确定所述需要发送到客户端的数据的过程为:
服务器数据库中所有与接收到的数据特征信息不相同的数据特征信息对应的数据、或者服务器数据库中所有与接收到的数据特征信息相同的数据特征信息且设置了标记位的数据、或者服务器数据库中所有与接收到的数据特征信息不相同的数据特征信息经过冲突检测后需发送到客户端同步的数据。
13.如权利要求11所述的方法,其特征在于,该方法进一步包括:
客户端将标识本次同步完成的数据同步的状态信息在确认数据同步完成消息中发送给服务器;
服务器将确认数据同步完成消息中携带的数据同步的状态信息存储到自身数据库中后返回响应消息。
14.如权利要求1所述的方法,其特征在于,步骤A所述设定数据特征信息是根据设定的数据特征信息算法进行实时计算得到的、或根据设定的数据特征信息算法计算后存储的;
步骤B所述设定的数据特征信息是根据设定的数据特征信息算法计算得到的。
15.如权利要求14所述的方法,其特征在于,所述确定步骤B数据特征信息是根据设定的数据特征信息算法计算得到的过程为:
客户端和服务器协商是否采用双方计算智能同步类型,如果是,步骤B所设定的数据特征信息是根据设定的数据特征信息算法计算得到的;否则,步骤B所设定的数据特征信息是由客户端发送并存储的;
或者客户端和服务器预先约定采用双方计算智能同步类型,该约定是针对客户端数据库中所有数据和服务器数据库中所有数据的;或者针对客户端数据库中和服务器数据库中的某种数据类型的数据。
16.如权利要求14所述的方法,其特征在于,所述步骤A和步骤B所设定的数据特征信息算法相同,该数据特征信息算法是预先设定的、或者在客户端和服务器之间协商后设定的。
17.如权利要求16所述的方法,其特征在于,所述该数据特征信息算法在客户端和服务器之间进行协商的步骤为:
客户端向服务器发送的数据包中携带一个或一个以上数据特征信息算法标记;
服务器根据该数据包携带的一个或多个数据特征信息算法标记确定数据特征信息算法,根据自身情况选择一个数据特征信息算法;
服务器向客户端返回携带所选择的数据特征信息算法标记的数据包,客户端根据该数据包携带的数据特征信息算法标记确定设定自身数据库中数据的数据特征信息的数据特征信息算法。
18.如权利要求16所述的方法,其特征在于,所述该数据特征信息算法在客户端和服务器之间进行协商的步骤为:
客户端向服务器发送携带指定的数据特征信息算法标记的数据包;
服务器根据接收到数据包携带的指定的数据特征信息算法标记确定数据特征信息算法,向客户端返回携带确认客户端指定的数据特征信息算法标记的数据包。
19.如权利要求14所述的方法,其特征在于,在步骤A之前,该方法还包括协商采用数据同步类型的过程:
客户端根据自身数据库的状态确定要发起的数据同步类型,向服务器上报上一次数据同步的状态信息以及本次确定要发起的数据同步类型;
服务器根据接收到的上一次数据同步的状态信息,确定是否采用接收到的要发起的数据同步类型后,将所确定的数据同步类型发送给客户端;
客户端判断接收到的数据同步类型是否为双方计算智能数据同步类型,如果是,执行步骤A;否则,按照协商后确定的数据同步类型进行数据同步或者重新协商。
20.如权利要求19所述的方法,其特征在于,所述客户端确定要发起的数据同步类型的过程为:
如果自身数据库中数据的LUID混乱或/和重新生成,或/和修改状态丢失,则为双方计算智能同步类型;
所述服务器确定数据同步类型的过程为:
如果服务器根据上一次数据同步的状态信息检测到上一次的数据同步失败,或/和服务器数据库中的映射表丢失,或/和服务器数据库中数据的修改状态丢失,则为双方计算智能数据同步类型。
21.如权利要求20所述的方法,其特征在于,所述客户端发送的上一次数据同步的状态信息为锚Anchor信息;所述服务器检测上一次的数据同步失败的过程为:将客户端发送的Anchor信息与上一次数据同步过程中客户端发送并保存在服务器数据库的Anchor信息或自身计算的服务器数据库的Anchor信息进行比较,如果相同,则上一次数据同步成功,否则上一次数据同步失败;
或者,所述客户端发送的上一次数据同步的状态信息为采用设定的数据特征信息算法为自身数据库计算的数据特征信息;所述服务器检测上一次的数据同步失败的过程为:将客户端发送的客户端数据库的数据特征信息与服务器数据库的数据特征信息进行比较,如果相同,则上一次数据同步成功,否则上一次数据同步失败。
22.如权利要求21所述的方法,其特征在于,所述采用设定的数据特征信息算法为自身数据库计算数据特征信息的过程为:
将自身数据库中所有目录的数据特征信息和/或目录下数据对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息;
或者将自身数据库中所有目录的数据特征信息或/和目录下数据对应的LUID,以及目录下数据的数据特征信息和/或目录的下级数据对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息;
或者将自身数据库中所有数据的数据特征信息和/或数据项对应的LUID作为输入元素采用设定的数据特征信息算法为自身数据库计算数据特征信息。
23.如权利要求14所述的方法,其特征在于,当客户端数据库中数据特征信息的本地唯一标识LUID混乱或/和重新生成但修改状态未丢失时,
步骤A所述的数据特征信息为自身数据库中修改状态改变的待同步数据的数据特征信息或者所有待同步数据的数据特征信息;
步骤B所述比较过程为:对于客户端发送的每个数据特征信息,服务器将其与计算的服务器数据库中所有的数据特征信息进行比较;
当客户端数据库中数据特征信息的LUID未混乱或/和重新生成但修改状态丢失时,
步骤A所述的数据特征信息为自身数据库中所有用LUID标识的待同步数据的数据特征信息;
步骤B所述比较过程为:服务器根据该消息所携带的一个或一个以上数据特征信息的LUID确定所对应的自身数据库中的数据,将该消息携带的一个或一个以上数据特征信息与为所对应数据计算的数据特征信息相比较;
当客户端数据库中数据特征信息的LUID混乱或/和重新生成且修改状态丢失,
步骤A所述的数据特征信息为自身数据库中所有待同步数据的数据特征信息;
步骤B所述比较过程为:对于客户端发送的数据特征信息,服务器将其与计算的服务器数据库中所有的数据特征信息进行比较。
24.如权利要求23所述的方法,其特征在于,步骤C所述与服务器之间进行所确定数据的同步的过程为:
客户端根据该消息携带的信息,确定要要上传给服务器的数据,将所确定的数据上传给服务器进行服务器数据库中数据的同步;
服务器根据比较的结果将需要发送到客户端的数据发送到客户端,供客户端进行自身数据库中数据的同步。
25.如权利要求24所述的方法,其特征在于,确定所述需要发送到客户端的数据的过程为:
服务器数据库中所有与接收到的数据特征信息不相同的数据特征信息对应的数据、或者服务器数据库中所有与接收到的数据特征信息相同的数据特征信息且设置了标记位的数据、或者服务器数据库中所有与接收到的数据特征信息不相同的数据特征信息经过冲突检测后需发送到客户端同步的数据。
26.如权利要求24所述的方法,其特征在于,该方法进一步包括:
客户端将自身数据库中完成同步的数据同步的状态信息在确认数据同步完成消息中发送给服务器;
服务器将确认数据同步完成消息中携带的数据同步的状态信息与自身数据库中相应的数据同步的状态信息进行比较,该自身数据库中相应的数据同步的状态信息为客户端发送并保存的,或是服务器计算的,如果都相同,则返回响应消息;否则,则重新执行步骤A。
27.如权利要求1所述的方法,其特征在于,步骤A所述携带的一个或一个以上数据特征信息为客户端数据库存储的当前级别的数据对应的数据特征信息;
在步骤C之前,该方法还包括:客户端根据该响应消息所携带数据的信息确定数据特征信息不相同的数据级别,将数据特征信息不相同的数据级别的下一级别作为当前级别,返回步骤A继续执行,直到客户端数据库中的最后一级数据为止,再执行步骤C。
28.如权利要求1所述的方法,其特征在于,步骤B所述指示需要同步数据的信息为需要同步数据对应的LUID、或需要同步数据在客户端数据库中对应的数据特征信息、或为对客户端数据库中数据特征信息所对应的状态码。
29.如权利要求1所述的方法,其特征在于,所述数据为目录、文件或数据项。
30.如权利要求29所述的方法,其特征在于,当所述数据为目录时,将目录的下级数据的数据特征信息或/和目录的下级数据对应的LUID作为输入元素采用设定的数据特征信息算法设定目录的数据特征信息;
当所述数据为文件或数据项时,将文件或数据项的内容作为输入元素采用设定的数据特征信息算法设定数据为文件或数据项的数据特征信息。
31.如权利要求1所述的方法,其特征在于,所述的数据特征信息为数据指纹。
32.如权利要求2、3、7、8、9、14、15、16、17、18、21或22所述的方法,其特征在于,所述设定的数据特征信息算法为摘要算法、循环冗余校验算法、普通散列算法或者时间戳算法。
33.一种数据同步***,包括客户端和与客户端进行数据同步的服务器,客户端和服务器各自连接数据库,其特征在于,客户端或服务器中还包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,还与服务器或客户端相连接,用于将服务器或客户端所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给服务器或客户端,接收来自服务器或客户端发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向服务器或客户端发送由数据特征信息处理模块得到的数据特征信息,接收来自服务器或客户端的验证结果,根据验证结果向服务器或客户端发送携带同步数据的数据同步消息使对方进行数据同步。
34.如权利要求33所述的数据同步***,其特征在于,所述的同步模块还与服务器或客户端相连接为:同步模块还与服务器或客户端中的同步模块相连接。
35.如权利要求33所述的数据同步***,其特征在于,所述客户端和服务器在进行数据同步网络中的地位对等。
36.一种数据同步客户端,其特征在于,所述客户端包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,用于将服务器所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给服务器,接收来自服务器发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向服务器发送由数据特征信息处理模块得到的数据特征信息,接收来自服务器的验证结果,根据验证结果向服务器发送携带同步数据的数据同步消息使服务器进行数据同步。
37.如权利要求36所述的客户端,其特征在于,所述的同步模块还与服务器中的同步模块进行信息交互。
38.一种数据同步服务器,其特征在于,所述服务器包括同步模块、连接同步模块和数据库的数据处理模块和与同步模块相连接的数据特征信息模块,其中,
数据处理模块,用于将数据库存储的数据发送给同步模块,或者从同步模块接收到数据同步消息,根据该消息携带的同步数据对数据库中的数据进行修改或增加;
数据特征信息处理模块,用于为同步模块中的数据设定数据特征信息后发送给同步模块;
同步模块,用于将客户端所发送数据的数据特征信息与由数据特征信息处理模块得到的相应数据的数据特征信息进行验证并得出验证结果,发送给客户端,接收来自客户端发送的携带同步数据的数据同步消息,并将该消息发送给数据处理模块;或者向客户端发送由数据特征信息处理模块得到的数据特征信息,接收来自客户端的验证结果,根据验证结果向客户端发送携带同步数据的数据同步消息使客户端进行数据同步。
39.如权利要求38所述的服务器,其特征在于,所述的同步模块还与客户端中的同步模块进行信息交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007800001981A CN101313495B (zh) | 2006-01-26 | 2007-01-25 | 数据同步方法、***及装置 |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610003042 | 2006-01-26 | ||
CN200610003042.6 | 2006-01-26 | ||
CN200610085153.6 | 2006-05-31 | ||
CN2006100851536A CN101009516B (zh) | 2006-01-26 | 2006-05-31 | 一种进行数据同步的方法、***及装置 |
CN2007800001981A CN101313495B (zh) | 2006-01-26 | 2007-01-25 | 数据同步方法、***及装置 |
PCT/CN2007/000284 WO2007087746A1 (fr) | 2006-01-26 | 2007-01-25 | Procédé, système et dispositif de synchronisation de données |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101313495A CN101313495A (zh) | 2008-11-26 |
CN101313495B true CN101313495B (zh) | 2012-07-04 |
Family
ID=38327121
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100851536A Active CN101009516B (zh) | 2006-01-26 | 2006-05-31 | 一种进行数据同步的方法、***及装置 |
CN2007800001981A Active CN101313495B (zh) | 2006-01-26 | 2007-01-25 | 数据同步方法、***及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100851536A Active CN101009516B (zh) | 2006-01-26 | 2006-05-31 | 一种进行数据同步的方法、***及装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8635266B2 (zh) |
EP (2) | EP1983662B1 (zh) |
CN (2) | CN101009516B (zh) |
WO (1) | WO2007087746A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306554A (zh) * | 2015-09-30 | 2016-02-03 | 北京恒华伟业科技股份有限公司 | 一种数据同步方法及本地服务器 |
Families Citing this family (116)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007206941A (ja) * | 2006-02-01 | 2007-08-16 | Konica Minolta Business Technologies Inc | 生体認証装置、生体認証システム及び生体データ管理方法 |
CN101009516B (zh) | 2006-01-26 | 2011-05-04 | 华为技术有限公司 | 一种进行数据同步的方法、***及装置 |
US7827138B2 (en) * | 2006-10-02 | 2010-11-02 | Salesforce.Com, Inc. | Method and system for synchronizing a server and an on-demand database service |
US7738503B2 (en) * | 2007-02-02 | 2010-06-15 | Palm, Inc. | Multi-way, peer-to-peer synchronization |
US8095495B2 (en) * | 2007-09-25 | 2012-01-10 | Microsoft Corporation | Exchange of syncronization data and metadata |
CN101409614B (zh) * | 2007-10-12 | 2011-04-13 | 华为技术有限公司 | 一种数据同步方法、***和设备 |
US20090144513A1 (en) * | 2007-12-03 | 2009-06-04 | Pitney Bowes Inc. | Database update method |
CN101494534A (zh) * | 2008-01-21 | 2009-07-29 | 华为技术有限公司 | 一种数据同步方法、装置及*** |
CN101494658B (zh) | 2008-01-24 | 2013-04-17 | 华为技术有限公司 | 指纹技术的实现方法、装置及*** |
CN101552773B (zh) * | 2008-04-03 | 2012-08-22 | 华为技术有限公司 | 一种数据同步中处理数据项标识符映射的方法、设备和*** |
CN101252462B (zh) * | 2008-04-11 | 2010-09-22 | 杭州华三通信技术有限公司 | 告警页面刷新方法以及服务器和客户端 |
CN101610281B (zh) * | 2008-06-19 | 2012-11-21 | 华为技术有限公司 | 一种数据指纹保存方法和装置 |
US9747340B2 (en) * | 2008-06-19 | 2017-08-29 | Microsoft Technology Licensing, Llc | Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic |
CN102594874B (zh) * | 2008-06-20 | 2014-12-17 | 华为技术有限公司 | 一种同步处理方法和装置 |
US8135670B2 (en) * | 2008-07-22 | 2012-03-13 | International Business Machines Corporation | Embedded change logging for data synchronization |
CN101447874B (zh) * | 2008-12-25 | 2011-07-20 | 华为终端有限公司 | 一种数据同步方法、客户端及服务器 |
JP5003701B2 (ja) * | 2009-03-13 | 2012-08-15 | ソニー株式会社 | サーバ装置及び設定情報の共有化方法 |
US8473543B2 (en) * | 2009-07-06 | 2013-06-25 | Microsoft Corporation | Automatic conflict resolution when synchronizing data objects between two or more devices |
CN101662760B (zh) * | 2009-07-31 | 2011-12-28 | 中兴通讯股份有限公司 | 将终端数据进行备份的方法及*** |
KR101108957B1 (ko) * | 2009-11-16 | 2012-02-09 | 엘지전자 주식회사 | 광대역 무선 접속 시스템에서의 그룹 자원 할당 방법 |
US20110119232A1 (en) * | 2009-11-18 | 2011-05-19 | Raytheon Company | Synchronizing data between a client and a server |
EP2511845A4 (en) * | 2009-12-08 | 2014-04-23 | Fujitsu Ltd | BIOMETRIC AUTHENTICATION SYSTEM AND BIOMETRIC AUTHENTICATION METHOD |
US8954625B2 (en) * | 2010-01-21 | 2015-02-10 | Lee Friedman | System, method and computer program product for portable multimedia content display |
CN102315930B (zh) * | 2010-06-30 | 2014-07-23 | 国际商业机器公司 | 用于在数据同步中减少数据传输量的方法和*** |
US8410994B1 (en) * | 2010-08-23 | 2013-04-02 | Matrox Graphics Inc. | System and method for remote graphics display |
CN102054036B (zh) * | 2010-12-29 | 2013-04-17 | 北京新媒传信科技有限公司 | 一种文件同步方法和装置 |
US8095534B1 (en) | 2011-03-14 | 2012-01-10 | Vizibility Inc. | Selection and sharing of verified search results |
CN102184218B (zh) * | 2011-05-05 | 2012-11-21 | 华中科技大学 | 一种基于因果关系的重复数据删除方法 |
US9646291B2 (en) * | 2011-05-11 | 2017-05-09 | Visa International Service Association | Electronic receipt manager apparatuses, methods and systems |
CN102279881A (zh) * | 2011-07-28 | 2011-12-14 | 南京中兴新软件有限责任公司 | 清除垃圾数据的方法及文件访问服务器 |
CN102291453B (zh) * | 2011-08-09 | 2017-04-26 | 中兴通讯股份有限公司 | 一种数据同步的方法及装置 |
US20130097116A1 (en) * | 2011-10-17 | 2013-04-18 | Research In Motion Limited | Synchronization method and associated apparatus |
CN103327037B (zh) * | 2012-03-20 | 2017-09-29 | 中兴通讯股份有限公司 | 数据同步方法及装置 |
US10089323B2 (en) * | 2012-04-05 | 2018-10-02 | Microsoft Technology Licensing, Llc | Telemetry system for a cloud synchronization system |
US9633098B2 (en) * | 2012-09-25 | 2017-04-25 | Visa International Service Association | System and method for maintaining device state coherency |
CN103024039B (zh) * | 2012-12-13 | 2016-04-06 | 东莞宇龙通信科技有限公司 | 数据同步方法和*** |
US9218314B2 (en) * | 2013-02-01 | 2015-12-22 | International Business Machines Corporation | Boosting remote direct memory access performance using cryptographic hash based approach |
CN103117883B (zh) * | 2013-03-20 | 2015-09-16 | 烽火通信科技股份有限公司 | 一种分组设备运行状态同步方法 |
CN104144187B (zh) * | 2013-05-10 | 2018-04-06 | 中国电信股份有限公司 | 一种获取应用更新版本的方法、终端、平台和*** |
CN103279510A (zh) * | 2013-05-17 | 2013-09-04 | 上海市计量测试技术研究院 | 多数据库非连续性在线同步的方法 |
CN103347005B (zh) * | 2013-06-19 | 2016-08-10 | 北京奇虎科技有限公司 | 一种控制数据上报的方法以及客户端设备和服务器设备 |
CN103354560B (zh) * | 2013-06-28 | 2017-05-17 | 广州市动景计算机科技有限公司 | 数据的分解同步方法及*** |
CN104348859B (zh) * | 2013-07-30 | 2019-05-07 | 深圳市腾讯计算机***有限公司 | 文件同步方法、装置、服务器、终端及*** |
WO2015014189A1 (zh) * | 2013-08-02 | 2015-02-05 | 优视科技有限公司 | 一种访问网站的方法及装置 |
CN104601497B (zh) | 2013-10-31 | 2019-01-18 | 华为技术有限公司 | 基于wan接口的1588v2报文传输方法及装置 |
CN103607767A (zh) * | 2013-11-26 | 2014-02-26 | 厦门亿联网络技术股份有限公司 | 一种减少主机与无线终端同步数据量的方法 |
CN103701913B (zh) * | 2013-12-30 | 2017-02-22 | 广州爱九游信息技术有限公司 | 数据同步方法及装置 |
US9898520B2 (en) | 2014-03-25 | 2018-02-20 | Open Text Sa Ulc | Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents |
US10825056B1 (en) * | 2014-04-17 | 2020-11-03 | The Nielsen Company (Us), Llc | Client-side video advertisement replacement using automatic content recognition |
EP4057156A1 (en) * | 2014-06-24 | 2022-09-14 | Google LLC | Processing mutations for a remote database |
CN105450682B (zh) * | 2014-08-08 | 2019-12-06 | 阿里巴巴集团控股有限公司 | 一种用于数据同步保存、向客户端同步数据的方法、装置和*** |
CN104580425A (zh) * | 2014-12-26 | 2015-04-29 | 北京中交兴路车联网科技有限公司 | 一种客户端数据同步方法及*** |
CN104519142B (zh) * | 2015-01-10 | 2019-09-20 | 蓝信移动(北京)科技有限公司 | 一种数据同步方法和***、客户端、协议服务器 |
US9361349B1 (en) | 2015-01-30 | 2016-06-07 | Dropbox, Inc. | Storage constrained synchronization of shared content items |
US10831715B2 (en) | 2015-01-30 | 2020-11-10 | Dropbox, Inc. | Selective downloading of shared content items in a constrained synchronization system |
US9563638B2 (en) | 2015-01-30 | 2017-02-07 | Dropbox, Inc. | Selective downloading of shared content items in a constrained synchronization system |
US9413824B1 (en) | 2015-01-30 | 2016-08-09 | Dropbox, Inc. | Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring |
US10248705B2 (en) | 2015-01-30 | 2019-04-02 | Dropbox, Inc. | Storage constrained synchronization of shared content items |
US9185164B1 (en) | 2015-01-30 | 2015-11-10 | Dropbox, Inc. | Idle state triggered constrained synchronization of shared content items |
CN104615784B (zh) * | 2015-03-04 | 2017-09-08 | 贵州腾迈信息技术有限公司 | 一种存取数据的方法 |
CN104639651A (zh) * | 2015-03-04 | 2015-05-20 | 成都维远艾珏信息技术有限公司 | 一种移动设备信息传输方法 |
CN104881454A (zh) * | 2015-05-19 | 2015-09-02 | 百度在线网络技术(北京)有限公司 | 参数的更新方法及*** |
CN105187475B (zh) * | 2015-06-09 | 2018-10-12 | 深圳金蝶账无忧网络科技有限公司 | 数据同步的方法和*** |
US10235331B1 (en) | 2015-06-18 | 2019-03-19 | EMC IP Holding Company LLC | Event-based synchronization in a file sharing environment |
US10992748B1 (en) * | 2015-06-18 | 2021-04-27 | EMC IP Holding Company LLC | Verification of event-based synchronization |
US10242024B1 (en) | 2015-06-18 | 2019-03-26 | EMC IP Holding Company LLC | Dynamic reprioritization of content download during synchronization |
US10721298B1 (en) | 2015-06-18 | 2020-07-21 | EMC IP Holding Company LLC | Learning client preferences to optimize event-based synchronization |
CN106649056B (zh) * | 2015-07-16 | 2019-07-02 | 阿里巴巴集团控股有限公司 | 一种数据检测方法和装置 |
CN106375354B (zh) * | 2015-07-20 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN105187260A (zh) * | 2015-10-20 | 2015-12-23 | 上海斐讯数据通信技术有限公司 | 一种网络管理***的设备数据同步方法及*** |
CN105357290A (zh) * | 2015-10-26 | 2016-02-24 | 无锡天脉聚源传媒科技有限公司 | 一种视频的相关信息同步的处理方法及装置 |
CN106611001A (zh) * | 2015-10-26 | 2017-05-03 | 中兴通讯股份有限公司 | 虚拟机数据库表数据一致性的校验方法、装置及*** |
CN105282253A (zh) * | 2015-11-04 | 2016-01-27 | 湖南御家科技有限公司 | 一种数据单据同步方法及*** |
US10778672B2 (en) * | 2015-11-16 | 2020-09-15 | International Business Machines Corporation | Secure biometrics matching with split phase client-server matching protocol |
US10311082B2 (en) * | 2015-12-21 | 2019-06-04 | Sap Se | Synchronization of offline instances |
CN107220259A (zh) * | 2016-03-22 | 2017-09-29 | 北京京东尚科信息技术有限公司 | 一种数据库扩展***、设备和用于扩展数据库的方法 |
US10049145B2 (en) | 2016-04-25 | 2018-08-14 | Dropbox, Inc. | Storage constrained synchronization engine |
US10719532B2 (en) | 2016-04-25 | 2020-07-21 | Dropbox, Inc. | Storage constrained synchronization engine |
CN107341163B (zh) * | 2016-05-03 | 2020-08-14 | 阿里巴巴集团控股有限公司 | 数据同步方法及装置 |
CN106202387B (zh) * | 2016-07-08 | 2019-05-21 | 苏州超块链信息科技有限公司 | 一种数据一致性并行维护方法 |
CN106230703A (zh) * | 2016-08-30 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 聊天记录的处理和获取方法以及装置 |
CN106650490B (zh) * | 2016-10-25 | 2019-07-23 | Oppo广东移动通信有限公司 | 云账号的登录方法及装置 |
US11003632B2 (en) | 2016-11-28 | 2021-05-11 | Open Text Sa Ulc | System and method for content synchronization |
CN106790584B (zh) * | 2016-12-28 | 2020-09-04 | 北京小米移动软件有限公司 | 信息同步方法及装置 |
US10635690B1 (en) * | 2016-12-31 | 2020-04-28 | Allscripts Software, Llc | Bitwise data comparison utilizing dynamic temporal segmentation |
CN106886589B (zh) * | 2017-02-20 | 2020-08-11 | 浪潮通用软件有限公司 | 一种图片存储方法、服务端以及客户端 |
CN108632300B (zh) * | 2017-03-15 | 2021-12-10 | 阿里巴巴集团控股有限公司 | 数据同步***、方法、服务器、客户端及电子设备 |
CN108733680A (zh) * | 2017-04-14 | 2018-11-02 | 徐州瑞晨矿业科技发展有限公司 | 一种基于矢量图形数据进行工程图纸远程分享的方法 |
CN107197018B (zh) * | 2017-05-23 | 2020-01-21 | 北京奇艺世纪科技有限公司 | 一种***间数据同步的方法和装置 |
US11301431B2 (en) | 2017-06-02 | 2022-04-12 | Open Text Sa Ulc | System and method for selective synchronization |
CN107425938B (zh) * | 2017-07-28 | 2019-04-16 | 江苏神州信源***工程有限公司 | 一种即时通信中的大规模组织机构的实时同步方法 |
US10931517B2 (en) * | 2017-07-31 | 2021-02-23 | Vmware, Inc. | Methods and systems that synchronize configuration of a clustered application |
CN107491526A (zh) * | 2017-08-18 | 2017-12-19 | 国云科技股份有限公司 | 一种实现数据库同步的***及其方法 |
CN109428918B (zh) * | 2017-08-25 | 2021-07-30 | 北京国双科技有限公司 | 域账号与域组之间映射关系的同步方法及装置 |
CN107846450A (zh) * | 2017-09-29 | 2018-03-27 | 珂伯特机器人(天津)有限公司 | 一种聊天数据同步的方法 |
CN111095877B (zh) * | 2017-10-09 | 2022-04-22 | 华为技术有限公司 | 一种电子邮件的同步方法及终端 |
CN107749877A (zh) * | 2017-10-16 | 2018-03-02 | 苏州蜗牛数字科技股份有限公司 | 网络游戏地形数据同步方法、装置及一种网络游戏*** |
CN107741887A (zh) * | 2017-10-23 | 2018-02-27 | 山东浪潮通软信息科技有限公司 | 一种组件间的通信交互方法和装置 |
CN107733923B (zh) * | 2017-11-23 | 2020-01-24 | 韵盛发科技(北京)股份有限公司 | 一种基于报文指纹的认证方法及*** |
CN108055305B (zh) * | 2017-12-06 | 2020-11-17 | 深圳市智物联网络有限公司 | 一种存储扩展方法及存储扩展装置 |
US10331660B1 (en) | 2017-12-22 | 2019-06-25 | Capital One Services, Llc | Generating a data lineage record to facilitate source system and destination system mapping |
CN108418746B (zh) * | 2018-02-13 | 2020-06-12 | 论客科技(广州)有限公司 | 一种邮件同步方法、装置与计算机可读存储介质 |
CN108766547A (zh) * | 2018-04-08 | 2018-11-06 | 广州市海升信息科技有限责任公司 | 一种街道养老服务上报、处理方法及客户端、处理*** |
CN109063493B (zh) * | 2018-07-11 | 2021-10-29 | 西康软件股份有限公司 | 去中心化高性能同步方法 |
CN109344349B (zh) * | 2018-09-28 | 2020-12-29 | 北京三快在线科技有限公司 | 一种数据缓存方法及装置、电子设备 |
US10949548B2 (en) * | 2018-10-18 | 2021-03-16 | Verizon Patent And Licensing Inc. | Systems and methods for providing multi-node resiliency for blockchain peers |
CN109446271B (zh) * | 2018-10-31 | 2023-02-14 | 创新先进技术有限公司 | 一种数据同步方法、装置、设备及介质 |
CN110502584B (zh) * | 2019-08-28 | 2021-09-28 | 北京三快在线科技有限公司 | 数据同步的方法和装置 |
CN111131240A (zh) * | 2019-12-23 | 2020-05-08 | 杭州迪普科技股份有限公司 | 认证信息备份方法及装置、电子设备、存储介质 |
CN111190962B (zh) * | 2019-12-24 | 2024-02-09 | 深圳市优必选科技股份有限公司 | 一种文件同步方法、装置及本地终端 |
CN111680104B (zh) * | 2020-05-29 | 2023-11-03 | 平安证券股份有限公司 | 数据同步方法、装置、计算机设备及可读存储介质 |
CN114067473B (zh) * | 2020-08-07 | 2023-01-06 | 比亚迪股份有限公司 | 综合调度***中的门禁权限管理方法、装置及设备 |
CN112446536A (zh) * | 2020-11-19 | 2021-03-05 | 海南省林业科学研究院(海南省红树林研究院) | 基于大数据架构的生态环境监测网格化***及其监测方法 |
CN113779141A (zh) * | 2021-08-10 | 2021-12-10 | 携程商旅信息服务(上海)有限公司 | 商旅酒店信息同步存储方法、电子设备和介质 |
US11941022B2 (en) | 2021-11-15 | 2024-03-26 | GE Precision Healthcare LLC | Systems and methods for database synchronization |
CN114344799B (zh) * | 2021-12-13 | 2022-11-11 | 深圳市培林体育科技有限公司 | 智能云跳绳和跳绳运动***及其控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000163344A (ja) * | 1998-11-27 | 2000-06-16 | Nec Corp | ネットワーク管理システムのデータベース復旧方式 |
EP1291770A2 (en) * | 2001-08-14 | 2003-03-12 | Microsoft Corporation | Method and system for sychronizing mobile devices |
CN1407475A (zh) * | 2001-08-24 | 2003-04-02 | 前锦网络信息技术(上海)有限公司 | 基于互联网的人才简历数据库同步更新方法 |
CN1472911A (zh) * | 2002-07-31 | 2004-02-04 | 鸿富锦精密工业(深圳)有限公司 | 无线设备同步***及方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535892B1 (en) * | 1999-03-08 | 2003-03-18 | Starfish Software, Inc. | System and methods for exchanging messages between a client and a server for synchronizing datasets |
US6880107B1 (en) * | 1999-07-29 | 2005-04-12 | International Business Machines Corporation | Software configuration monitor |
US6986039B1 (en) * | 2000-07-11 | 2006-01-10 | International Business Machines Corporation | Technique for synchronizing security credentials using a trusted authenticating domain |
US20030045311A1 (en) * | 2001-08-30 | 2003-03-06 | Tapani Larikka | Message transfer from a source device via a mobile terminal device to a third device and data synchronization between terminal devices |
US7526575B2 (en) * | 2001-09-28 | 2009-04-28 | Siebel Systems, Inc. | Method and system for client-based operations in server synchronization with a computing device |
FI112015B (fi) * | 2001-11-12 | 2003-10-15 | Nokia Corp | Datan synkronoinnin järjestäminen tietoliikennejärjestelmässä |
GB2384331A (en) * | 2002-01-19 | 2003-07-23 | Hewlett Packard Co | Access control using credentials |
US7143117B2 (en) | 2003-09-25 | 2006-11-28 | International Business Machines Corporation | Method, system, and program for data synchronization by determining whether a first identifier for a portion of data at a first source and a second identifier for a portion of corresponding data at a second source match |
EP1862923A1 (en) | 2004-02-10 | 2007-12-05 | Research In Motion Limited | Apparatus and associated method for synchronizing databases by comparing hash values |
CN100502284C (zh) * | 2004-04-21 | 2009-06-17 | 华为技术有限公司 | 通信***中数据同步方法及其装置 |
US7155040B2 (en) * | 2004-06-29 | 2006-12-26 | Bio-Key International, Inc. | Generation of quality field information in the context of image processing |
US7925549B2 (en) * | 2004-09-17 | 2011-04-12 | Accenture Global Services Limited | Personalized marketing architecture |
US20060271791A1 (en) | 2005-05-27 | 2006-11-30 | Sbc Knowledge Ventures, L.P. | Method and system for biometric based access control of media content presentation devices |
US8024290B2 (en) * | 2005-11-14 | 2011-09-20 | Yahoo! Inc. | Data synchronization and device handling |
CN101009516B (zh) | 2006-01-26 | 2011-05-04 | 华为技术有限公司 | 一种进行数据同步的方法、***及装置 |
-
2006
- 2006-05-31 CN CN2006100851536A patent/CN101009516B/zh active Active
-
2007
- 2007-01-25 CN CN2007800001981A patent/CN101313495B/zh active Active
- 2007-01-25 EP EP07702202.8A patent/EP1983662B1/en active Active
- 2007-01-25 WO PCT/CN2007/000284 patent/WO2007087746A1/zh active Application Filing
- 2007-01-25 EP EP15169072.4A patent/EP2955644B1/en active Active
-
2008
- 2008-07-28 US US12/180,626 patent/US8635266B2/en active Active
-
2013
- 2013-12-16 US US14/107,938 patent/US9524327B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000163344A (ja) * | 1998-11-27 | 2000-06-16 | Nec Corp | ネットワーク管理システムのデータベース復旧方式 |
EP1291770A2 (en) * | 2001-08-14 | 2003-03-12 | Microsoft Corporation | Method and system for sychronizing mobile devices |
CN1407475A (zh) * | 2001-08-24 | 2003-04-02 | 前锦网络信息技术(上海)有限公司 | 基于互联网的人才简历数据库同步更新方法 |
CN1472911A (zh) * | 2002-07-31 | 2004-02-04 | 鸿富锦精密工业(深圳)有限公司 | 无线设备同步***及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306554A (zh) * | 2015-09-30 | 2016-02-03 | 北京恒华伟业科技股份有限公司 | 一种数据同步方法及本地服务器 |
CN105306554B (zh) * | 2015-09-30 | 2018-10-23 | 北京恒华伟业科技股份有限公司 | 一种数据同步方法及本地服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN101009516A (zh) | 2007-08-01 |
EP2955644B1 (en) | 2017-06-21 |
EP1983662B1 (en) | 2015-08-26 |
CN101313495A (zh) | 2008-11-26 |
CN101009516B (zh) | 2011-05-04 |
EP1983662A4 (en) | 2009-06-17 |
EP2955644A1 (en) | 2015-12-16 |
US20090157802A1 (en) | 2009-06-18 |
US9524327B2 (en) | 2016-12-20 |
WO2007087746A1 (fr) | 2007-08-09 |
EP1983662A1 (en) | 2008-10-22 |
US8635266B2 (en) | 2014-01-21 |
US20140108338A1 (en) | 2014-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101313495B (zh) | 数据同步方法、***及装置 | |
US8489548B2 (en) | Method, system, and device for data synchronization | |
CN101160903B (zh) | 一种实现数据同步的方法、***、客户端及服务器 | |
CN109726202B (zh) | 一种区块链数据存储方法及计算机存储介质 | |
CN103916482A (zh) | 一种基于sqlite的数据同步传输方法 | |
CN110597922A (zh) | 数据处理方法、装置、终端及存储介质 | |
CN107870982A (zh) | 数据处理方法、***和计算机可读存储介质 | |
US8244670B2 (en) | System and method for reliable symmetric data synchronization | |
CN101102311A (zh) | 一种协商数据同步机制的方法、客户端及*** | |
JP2024045209A (ja) | ブロックチェーンデータ検索方法 | |
CN110855688B (zh) | 一种区块链信息处理方法及相关设备 | |
CN112118133A (zh) | 基于自定义结构数据便于以太坊智能合约快速升级方法 | |
CN103503388B (zh) | 一种分布式队列消息读取方法及设备、*** | |
CN101730085B (zh) | 通信录数据同步方法和*** | |
CN103034738A (zh) | 用于管理异构非结构化数据的关系型数据库及其创建和查询非结构化数据描述信息的方法 | |
CN105723365B (zh) | 用于优化索引、主数据库节点和订户数据库节点的方法 | |
CN102594874A (zh) | 一种同步处理方法和装置 | |
CN102638569B (zh) | 一种文件分发同步方法及*** | |
CN104077355B (zh) | 一种非结构化数据存储和查询的方法、装置及*** | |
CN108062277B (zh) | 一种电子凭据数据访问方法、装置及*** | |
CN103220355B (zh) | 内容分发网络中的多用户配置方法 | |
CN113505125A (zh) | 数据上链的方法及上链代理装置 | |
CN106886589A (zh) | 一种图片存储方法、服务端以及客户端 | |
CN110362406B (zh) | 事件处理方法和装置 | |
CN109743188A (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 |