CN1956452B - 一种实现数据同步的方法、系统、客户端及服务器 - Google Patents

一种实现数据同步的方法、系统、客户端及服务器 Download PDF

Info

Publication number
CN1956452B
CN1956452B CN2006101095911A CN200610109591A CN1956452B CN 1956452 B CN1956452 B CN 1956452B CN 2006101095911 A CN2006101095911 A CN 2006101095911A CN 200610109591 A CN200610109591 A CN 200610109591A CN 1956452 B CN1956452 B CN 1956452B
Authority
CN
China
Prior art keywords
directory
synchronous
data
synch command
address
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
Application number
CN2006101095911A
Other languages
English (en)
Other versions
CN1956452A (zh
Inventor
田林一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from CN 200510116802 external-priority patent/CN1794724A/zh
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN2006101095911A priority Critical patent/CN1956452B/zh
Priority to EP06805092.1A priority patent/EP1845688B1/en
Priority to CN200680011960.1A priority patent/CN101160903B/zh
Priority to ES06805092.1T priority patent/ES2458303T3/es
Priority to PCT/CN2006/002887 priority patent/WO2007048354A1/zh
Priority to JP2008536915A priority patent/JP5294867B2/ja
Publication of CN1956452A publication Critical patent/CN1956452A/zh
Priority to US11/848,111 priority patent/US8015319B2/en
Publication of CN1956452B publication Critical patent/CN1956452B/zh
Application granted granted Critical
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明公开了一种实现数据同步的方法,应用于客户端和服务器之间,该方法包括:客户端和服务器中的任一端发送第一同步命令至二者中的另一端;该方法还包括:在发送第一同步命令之前,客户端和服务器确定待同步目录;所述第一同步命令的接收端在收到第一同步命令之后,按接收到的第一同步命令,对所确定的待同步目录进行数据同步。本发明还公开了一种实现数据同步的系统、客户端及服务器,使用本发明方法,采用本发明能实现目录级别的数据同步。

Description

一种实现数据同步的方法、系统、客户端及服务器
技术领域
本发明涉及开放移动联盟定义的同步标签语言(SyncML,Synchronization Marker-up Language)数据同步规范技术领域,特别是指在SyncML协议实现数据同步的方法、系统、客户端及服务器。 
背景技术
为了制订可以在多个平台及网络之间实现个人信息及企业内数据同步的标准规格,开放移动联盟(OMA)提出了SyncML数据同步规范。开发SyncML的目的在于,使终端用户、设备开发商、基础构件开发商、数据提供商、使用软件开发商以及服务提供商协同工作,真正实现使用任何终端设备均可随时随地访问任何网络的数据。SyncML数据同步的典型应用是移动设备或应用服务器、与网络服务器之间的数据同步。除此之外,SyncML还可用于对等的数据同步,如两台PC之间的数据同步。 
图1为基于SyncML规范实现同步的示意图。客户端与服务器经过同步初始化阶段的参数协商以后,互相发送各自发生改变的数据,以保证双方数据的同步。 
同步客户端(DS Client,Data Synchronization Client)通常指PC软件、手机或PDA等智能终端。DS Client中设置有客户端数据库(Client Database),用来存储用户所需的数据,这些数据包括:通讯录、日程、便笺、短信、电子邮件等。这些数据均有标准规范定义其格式,同步客户端可以将数据转换成标准的格式发送给同步服务器,同步服务器处理后就可将数据保存入自己的数据库中。 
同步服务器(DS Server),可接收来自DS Client的数据同步消息和同步命令,并能向同步客户端发送同步消息。该设备可以为网络服务器或PC。DS Server中设置有服务器数据库(Server Database),用来存放该同步服务器的数据。 
同步客户端和同步服务器都存储有数据标识,其中,同步客户端使用本地唯一标识(LUID,Local Unique Identifier)作为数据标识,而同步服务器使用全球唯一标识(GUID,Global Unique Identifier)作为数据标识。 
图2为同步客户端和同步服务器的数据存储示意图。参见图2,在同步客户端,只需维护各个LUID与数据之间的对应关系,在同步服务器端,则不仅要维护各个GUID与数据之间的对应关系,还要维护各个GUID与LUID之间的对应关系。其中,数据同步的类型有多种,具体参见表1。 
表1 
另外,SyncML规范中规定的同步流程通常分为三个阶段: 
1、同步初始化阶段,主要完成身份鉴权、要同步的数据库之间的协商、同步能力的协商(包括:支持同步哪些数据、支持哪些同步类型等),该协商过程可能需要持续多次才能完成。 
2、同步阶段,主要包括:客户端和服务器中的一端,实时监控数据的状态,将发生改变的数据以操作命令的方式发送到客户端和服务器中的另一端,由另一端使用发生改变的数据、执行该操作命令(如:更新、删除、增加等操作命令)对自身数据进行更新,以达到数据同步的目的。 
3、同步完成阶段,主要包括:客户端和服务器互相确认同步完成。 
现有技术中,为数据定义了文件夹(Folder)和文件(File)的存储方式,该存储方式模拟了PC机的基于文件夹和文件的树状目录结构。 
对于以类似文件系统目录结构的方式存储的数据而言,现有技术并未提出具体的同步方法,并且不支持同步整个目录结构中特定目录下的内容,也不能对某一物理方式存在的目录结构的内容进行分类同步。 
但是,目前存在大量需要同步的以目录结构存储的数据。例如,用户手机内 存储通讯录、短信、电子邮件等几个以物理方式存在的目录结构。按现有技术,用户只能同步短信这一整体目录结构,而不能将已存储的短信分为“笑话”和“祝福”两个逻辑类进行同步,更不能只同步“笑话”这一逻辑类。同时也不支持一个数据项同时存在于两个分类中,例如对于用户通讯簿,张三既属于“同事组”,又属于“朋友组”的需求无法实现 
可见,现有的数据同步技术还不能满足实际的需求,尤其不能实现目录结构数据的同步。 
发明内容
有鉴于此,本发明的主要目的在于提供实现数据同步的方法,以实现目录级别的数据同步。 
本发明的另一主要目的在于提供一种实现数据同步的系统、客户端及服务器,能够对灵活实现目录的数据同步。 
为达到上述目的,本发明的技术方案是这样实现的: 
本发明公开了一种实现数据同步的方法,应用于客户端和服务器之间,该方法包括:客户端和服务器中的任一端发送第一同步命令至二者中的另一端;该方法还包括: 
在同步初始化阶段中,在发送第一同步命令之前,客户端和服务器协商得到待同步目录;其中,所述待同步目录包括一个或多个目录 
在同步阶段中,所述第一同步命令的接收端在收到第一同步命令之后,按接收到的第一同步命令,对所确定的待同步目录进行数据同步; 
在发送第一同步命令之前,该方法进一步包括:在客户端和服务器端分别设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中, 
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系; 
如果为递归同步,则发送第一同步命令前进一步包括:发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;发送端根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令; 
如果为非递归同步,则发送第一同步命令前进一步包括:发送端从所述目 录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。 
其中,所述客户端和服务器协商得到待同步目录的方法为:所述客户端和服务器中的任一端发送携带待同步目录地址的第二同步命令至另一端,该另一端按第二同步命令中的待同步目录地址确定当前待同步的目录。 
其中,所述待同步目录包括一个或多个目录;当待同步目录包括多个目录时,所述客户端和服务器通过发送第二同步命令协商得到待同步目录的方法为:针对待同步目录中包括的所有目录,所述客户端和服务器中的任一端发送一个第二同步命令至另一端,该第二同步命令中携带所有目录的地址;该另一端按第二同步命令中的所有目录的地址确定当前待同步目录中包括的所有目录;或者,针对待同步目录中包括的每一目录,所述客户端和服务器中的任一端发送一个携带该目录地址的第二同步命令至另一端;该另一端按每一第二同步命令中的目录地址一一确定当前待同步目录中包括的每一目录。 
其中,所述客户端和服务器中的任一端发送第二同步命令至另一端之前,包括:该第二同步命令的发送端直接确定待同步目录在本端的地址,然后将所确定的待同步目录地址携带在第二同步命令中。 
其中,所述客户端和服务器中的任一端发送第二同步命令至另一端之前,包括:该第二同步命令发送端确定该待同步目录在另一端的目录地址并将其作为待同步目录地址携带在第二同步命令中。 
其中,所述第二同步命令的发送端确定该待同步目录在另一端的目录地址的方法为:另一端将待同步目录在本端的目录地址发送至该第二同步命令的发送端。 
其中,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:该第二同步命令的发送端从另一端获取该另一端的目录结构,并按所获取的目录结构确定待同步目录在另一端的目录地址。 
其中,所述第二同步命令的发送端从另一端获取该另一端的目录结构的方法为:该第二同步命令的发送端发送第三同步命令至另一端,该第三同步命令指示请求获取指定数据库的目录结构;该另一端在该第三同步命令的响应中携带本端指定数据库的目录结构并返回给该第二同步命令的发送端。 
其中,所述在第三同步命令的响应中携带指定数据库的目录结构的方法为:针对该目录结构中的每一节点,使用一个该第三同步命令的子元素来携带该节点的地址;该所述第二同步命令的发送端在收到该第三同步命令的响应后,按各节点的地址确定目录结构。 
其中,所述在第三同步命令的响应中携带指定数据库的目录结构的方法为:针对该目录结构中的每一节点,使用一个该第三同步命令的子元素来携带该节点及其子节点的信息;或者,使用一个该第三同步命令的子元素来封装整个目录结构的数据。 
其中,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:该第二同步命令的发送端按用户输入的信息确定待同步目录地址。 
其中,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:第二同步命令发送端直接指定待同步目录在另一端上的地址,如果该目录地址在该另一端上不存在,则该另一端直接在第二同步命令发送端指定的地址上创建该待同步目录。 
其中,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:客户端和服务器预先设定待同步目录的地址。 
其中,所述客户端和服务器通过发送第二同步命令协商得到待同步目录时,进一步包括:协商当前同步类型。 
其中,所述协商同步类型的方法为:在客户端和服务器通过发送第二同步命令协商得到待同步目录时,该第二同步命令中进一步携带同步类型,按该第二同步命令中的同步类型确定当前同步类型。 
其中,所述待同步目录包括一个或多个目录;当待同步目录包括多个目录时,所述客户端和服务器通过发送第二同步命令协商得到待同步目录和同步类型的方法为:针对待同步目录中包括的所有目录,所述客户端和服务器中的任一端发送一个第二同步命令至另一端,该第二同步命令中携带所有目录的地址以及这些目录对应的同步类型;该另一端按第二同步命令中的所有目录的地址确定当前待同步目录中包括的所有目录以及当前同步类型。 
其中,所述待同步目录包括一个或多个目录;当待同步目录包括多个目录时,所述客户端和服务器通过发送第二同步命令协商得到待同步目录和同步类型的方法为:针对待同步目录中包括的所有目录,所述客户端和服务器中的任一端发送一个第二同步命令至另一端,该第二同步命令中携带所有目录的地址以及每一目录对应的同步类型;该另一端按第二同步命令中的所有目录的地址确定当前待同步目录中包括的所有目录以及每一目录当前的同步类型。 
其中,所述待同步目录包括一个或多个目录;当待同步目录包括多个目录时,所述客户端和服务器通过发送第二同步命令协商得到待同步目录和同步类型的方法为:针对待同步目录中包括的每一目录,所述客户端和服务器中的任一端发送一个携带该目录地址及其对应的同步类型的第二同步命令至另一端;该另一端按每一第二同步命令中的目录地址和同步类型一一确定当前待同步目录中包括的每一目录及其当前同步类型。 
其中,所述第一同步命令携带操作类型;所述按接收到的第一同步命令对所确定的待同步目录进行数据同步的方法为:按第一同步命令携带的操作类型,对所确定的待同步目录中的数据作该操作类型指定的同步操作。 
其中,该第一同步命令进一步携带待同步目录地址;所述按接收到的第一同步命令对所确定的待同步目录进行数据同步的方法进一步包括:确定该第一同步命令中携带的待同步目录地址,在所确定的待同步目录地址下进行同步操作。 
其中,该第一同步命令进一步携带该数据内容;所述按接收到的第一同步命令对所确定的待同步目录进行数据同步的方法进一步包括:确定该第一同步命令中携带的数据内容,将该数据内容保存在该待同步目录地址下。 
其中,所述客户端和服务器确定待同步的目录的方法为:按预先配置确定待同步的目录。 
其中,所述第二同步命令中进一步携带递归同步标志;所述按第二同步命令中的待同步目录地址确定当前待同步的目录时,进一步包括:判断该第二同步命令是否携带有效的递归同步标志,如果是,确定当前待同步目录要进行递归同步;否则确定当前待同步目录要进行非递归同步;当确定当前待同步目录要进行递归同步时,所述第一同步命令中携带的数据内容包括:当前待同步目录的根节点以及各个子节点的数据内容,该第一同步命令的接收端按第一同步命令中携带的根节点以及各子节点的数据内容,依次同步该待同步目录的根节点以及各个子节点的数据内容;当确定当前待同步目录要进行非递归同步时,所述第一同步命令中携带的数据内容包括:当前待同步目录根节点的数据内容,该第一同步命令的接收端仅同步该待同步目录的根节点的数据内容。 
其中,当第一同步命令携带的操作类型为删除、且要同步待同步目录下的数据项时,进一步包括:判断当前待同步目录的数据项的数据内容是否仅存于该待同步目录下,如果是,则在该第一同步命令中进一步携带有效的永久删除标志;否则在该第一同步命令中进一步携带无效的永久删除标志;该第一同步命令的接收端对待同步目录所进行的数据同步操作包括:判断该第一同步命令中是否携带有效的永久删除标志,如果是,则删除该待同步目录下数据项的数据内容;否则取消该数据项与该待同步目录之间的对应关系。 
本发明还公开了一种实现数据同步的系统,该系统包括:客户端和服务器,且二者之间通过交互同步命令来实现通信;其特征在于, 
所述客户端和服务器进一步用于在同步初始化阶段中协商得到待同步目录,并在同步阶段中对协商得到的待同步目录进行数据同步其中,所述待同步目录包括一个或多个目录; 
所述客户端和服务器中的任一端进一步用于,在得到待同步目录之后,发送第一同步命令至二者中的另一端; 
所述客户端和服务器进一步用于,在发送第一同步命令之前,分别设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中, 
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系; 
如果为递归同步,则所述客户端和服务器进一步用于,发送第一同步命令前,发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;发送端根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同 步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令; 
如果为非递归同步,则所述客户端和服务器进一步用于,发送第一同步命令前,发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。 
本发明公开了一种客户端包括:第一目录地址处理模块,用于在同步初始化阶段中确定待同步目录的地址并输出至第一数据同步模块;从第一数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;其中,所述待同步目录包括一个或多个目录;第一数据同步模块,用于在同步阶段中从第一目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至服务器;从服务器接收同步命令并从中解析得到待同步目录地址输出至第一目录地址处理模块; 
所述第一目录地址处理模块进一步用于,在得到待同步目录之后,发送第一同步命令至服务器; 
所述第一目录地址处理模块进一步用于,在发送第一同步命令之前,设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中, 
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系; 
如果为递归同步,则所述第一目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令; 
如果为非递归同步,则所述第一目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。 
本发明又公开了一种服务器包括:第二目录地址处理模块,用于在同步初始化阶段中确定待同步目录的地址并输出至第二数据同步模块;从第二数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;其中,所述待同步目录包括一个或多个目录; 
第二数据同步模块,用于在同步阶段中从第二目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至客户端;从客户端接收同步命令并从中解析得到待同步目录地址输出至第二目录地址处理模块; 
所述第二目录地址处理模块进一步用于,在得到待同步目录之后,发送第一同步命令至客户端; 
所述第二目录地址处理模块进一步用于,在发送第一同步命令之前,设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中, 
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系; 
如果为递归同步,则所述第二目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令; 
如果为非递归同步,则第二目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。 
因此,采用本发明能够灵活实现针对某一目录的数据同步,在数据同步时不必在客户端和服务器之间传递整个数据库的数据,从而能提高数据同步效率并节约系统资源。 
附图说明
图1所示为实现同步的示意图。 
图2所示为客户端和服务器端的数据存储示意。 
图3a所示为应用本发明实施例一的用户定义的数据结构示意图。 
图3b所示为应用本发明实施例一的客户端的数据存储示意图。 
图4a所示为应用本发明实施例二的用户定义的数据结构示意图。 
图4b所示为应用本发明实施例二的客户端的数据存储示意图。 
图5a所示为应用本发明实施例三的用户定义的数据结构示意图。 
图5b所示为应用本发明实施例三的客户端的数据存储示意图。 
图6a所示为应用本发明实施例四的用户定义的数据结构示意图。 
图6b所示为应用本发明实施例四的客户端的数据存储示意图。 
图7a所示为应用本发明实施例五的用户定义的数据结构示意图。 
图7b所示为应用本发明实施例五的客户端的数据存储示意图。 
图8a所示为应用本发明实施例六的用户定义的数据结构示意图。 
图8b所示为应用本发明实施例六的客户端的数据存储示意图。 
图9所示为应用本发明实施例的实现数据同步的系统结构示意图。 
具体实施方式
下面结合附图及具体实施例,对本发明再做进一步地详细说明。 
本发明公开了一种实现数据同步的方法,其主要处理思想为:客户端和服务器中的任一端发送第一同步命令至二者中的另一端;在发送第一同步命令之前,客户端和服务器确定待同步目录;该第一同步命令的接收端在收到第一同步命令之后,按接收到的第一同步命令对所确定的待同步目录进行数据同步。 
众所周知,按SyncML协议,同步的实现分为三个阶段:同步初始化阶段、同步阶段和同步完成阶段。在本发明中同步完成阶段的处理与现有方式相同,因此,以下仅就同步初始化阶段和同步阶段进行描述。 
在同步初始化阶段,除了像现有技术一样协商需要同步的数据库、终端能力之外,还要指明待同步目录,客户端和服务器可通过发送第二同步命令协商得到待同步目录。其中,所述客户端和服务器通过发送第二同步命令协商得到待同步目录的方法可以为:客户端和服务器中的任一端发送携带待同步目录地 址的第二同步命令至另一端,该另一端按第二同步命令中的待同步目录地址确定当前待同步的目录。本发明所述的待同步目录可以包括一个或多个目录;当待同步目录包括多个目录时,所述客户端和服务器通过发送第二同步命令协商得到待同步目录的方法可以为:针对待同步目录中包括的所有目录,所述客户端和服务器中的任一端发送一个第二同步命令至另一端,该第二同步命令中携带所有目录的地址;该另一端按第二同步命令中的所有目录的地址确定当前待同步目录中包括的所有目录;或者,针对待同步目录中包括的每一目录,所述客户端和服务器中的任一端发送一个携带该目录地址的第二同步命令至另一端;该另一端按每一第二同步命令中的目录地址一一确定当前待同步目录中包括的每一目录。另外,也可在客户端和服务器中预先配置待同步目录的地址,从而不必在同步初始化阶段通过第二同步命令来协商得到待同步目录。 
上述实现第二同步命令携带待同步目录地址的方式具体有以下两种: 
方式一:在现有协议的同步命令中用于指明目标数据库的元素中指明待同步目录,也就是说,对现有协议的同步命令中用于携带待同步数据地址的元素进行扩展,使其从能够指示数据库级别地址的元素扩展为能够指示目录级别地址的元素,这里,待同步目录的地址就可由该被扩展的用于携带待同步数据地址的元素来承载。具体实现过程可以为:对统一资源标识符(URI,Uniform Resource Identifier)的格式作预定义,预先指定哪一级URI标识数据库地址,哪一级URI标识目录的地址,通过URI的标识指明待同步目录,比如:指定“./files”为数据库级的地址,指定“./files/folders”为数据库下的名为folder1的目录的地址,其中,files为数据库的名称,folders为目录的名称。为了更精确的指定待同步目录的地址,可以在URI的标识中采用数据库或目录的编号来表示。比如:指定./4980为待同步数据库级的地址,指定./4980/4560为数据库4980下的编号为4560的子目录的地址。如果数据库下有更多的分级,可采用多级结构,例如:./4560/4980/556等。还可以采用编号和目录名相结合的表示方法,例如:./files/4890。当然,如果需要同步多个目录,可同时给出多个URI予以指 明。 
方式二:在现有协议的同步命令中用于指明过滤条件的元素中指明待同步目录。也就是说,在现有协议的同步命令中新增用于携带目录级别过滤条件的元素,由该用于携带目录级别过滤条件的元素来承载待同步目录地址。具体实现过程可以为:扩展现有的过滤功能,在过滤条件(如Filter命令)中指明待同步目录。当然,如果需要同步多个目录,可同时指出多个目录。 
下面对这两种指明待同步目录的方式作详细说明。 
一、方式一为通过扩展现有协议的同步命令中用于携带待同步数据地址的元素来实现协商待同步目录的一种方案,所述待同步数据地址通常指URI。 
本发明中,客户端和服务器通过发送第二同步命令协商得到待同步目录时,可进一步协商当前同步类型。客户端和服务器通过发送第二同步命令协商得到待同步目录时,该第二同步命令中可以进一步携带同步类型,按该第二同步命令中的同步类型确定当前同步类型。该第二同步命令可采用同步标签语言(SyncML)协议的警报(Alert)元素来实现,所述用于携带待同步数据地址的元素可以为Alert元素的子元素,项目(Item)元素,所述用于携带同步类型的元素可以为Alert元素的子元素,数据(Data)元素。该采用Alert元素实现的第二同步命令又可被称为Alert同步命令。其中,作为第二同步命令的Alert元素中,也可采用其它子元素,如代码(Code)等,来携带同步类型和待同步目录地址,也可采用Alert元素的属性来携带同步类型和待同步目录地址,这些情况下的命令结构本文就不一一示出,但均在本发明的保护范围之内。 
为了实现多个目录的同步,可以进一步的扩充Alert命令,使其可以用于指定一个或多个目录的待同步目录,并且对不同的目录可采用不同的同步类型。以下给出实现该功能的方案: 
在同步初始化阶段,可扩充现有的同步协议中Alert命令中的URI的定义,使其可以用于指定目录级别的地址。假定:由客户端向服务器发起待同 步目录的协商过程。 
客户端向服务器发送Alert命令,其中携带待同步目录的地址,该地址可为待同步目录的URI。之后,服务器可以向客户端返回响应。以下给出该Alert命令的一个举例。例如,客户端指定要同步的是名称为folder1的目录,客户端向服务器发送Alert命令,其中携带要建立的同步类型以及待同步目录的地址(如:URI)。其中,如果客户端与服务器端的目录结构相同,则客户端可以按自身的目录结构直接确定服务器上该待同步目录的地址。如果客户端与服务器端的目录结构不同,则客户端要先确定该待同步目录在服务器上的目录地址,具体确定方法可包括以下几种:1、事先,客户端从服务器端获取服务器的目录结构,并按服务器的目录结构确定当前待同步目录在服务器上的地址,2、由服务器向客户端发送待同步目录的地址,3、客户端直接指定该待同步目录在服务器端的地址,如果该目录地址在服务器上不存在,则服务器根据客户端的要求直接在该客户端指定的地址上创建该待同步目录,4、按用户输入的信息确定待同步目录地址,即由用户指定待同步目录地址,5、客户端与服务器预先设定待同步的目录地址。例如,双方约定,如果进行备份同步,则使用服务器端数据库中名字为备份(backup)的目录。上述的目录结构可以是生成后保存在服务器端,或是不保存,当客户端需要时,由服务器端为指定的数据库实时生成的。 
其中,客户端获取服务器的目录结构,可以通过同步会话实现,以下提供了一种实现方案,其流程如下: 
1、客户端向服务器发送建立同步会话的命令,在发送确定同步目录地址的Alert命令之前,客户端向服务器发送用于请求获取指定数据库的目录结构的同步命令,为与前述两种同步命令相区别,该同步命令可被称为第三同步命令。该第三同步命令可采用Get元素来实现,如下例中所示的提取(Get)命令实例。现有的Get命令只能用来请求获取设备的性能信息,为了实现请求获取数据库的目录结构,必须扩充现有的Get命令的含义,在其 中增加一个表示请求获取数据库的目录结构的标识。 
<Get> 
<CmdID>12</CmdID> 
…… 
<Item> 
<Target><LocURI>./contacts?List=struct</LocURI></Target> 
<Source><LocURI>./dev-contacts</LocURI></Source> 
</Item> 
…… 
</Get> 
其中,在Target标签中,“./contacts”为指定的数据库的URI,“?List=struct”为表示请求获取数据库的目录结构的标识,服务器接收到该Get命令,根据数据库的URI找到对应的数据库。 
2、服务器将指定数据库的目录结构通过Get命令的响应,结果(Results)命令,返回给客户端。设定服务器的数据库的目录结构为:在根目录(即第一级目录节点),“./contacts”,之下,有A、B、C和D四个子节点,即第二级目录节点;在第二级目录节点A之下还有A1和A2两个子节点,即第三级目录节点。此时,返回的Results命令可有以下的几种组织方式: 
(1)对目录结构中的每一个节点用一个Item元素来指示其URI。客户端接收到此Results命令,可以根据每个Item中的URI来构建服务器端的目录结构。该Results命令格式如下: 
<Results> 
…… 
<CmdRef>12</CmdRef> 
<TargetRef>./contacts</TargerRef> 
<SourceRef>./dev-contacts</SourceRef> 
<Item> 
…… 
<Source><LocURI>./A</LocURI></Source> 
…… 
</Item> 
<Item> 
…… 
<Source><LocURI>./A/A1</LocURI></Source> 
…… 
</Re sults> 
(2)对目录结构中的每一个节点构建一个Item元素。其中,第一个Item元素中携带的是数据库目录的第一级目录节点的子节点信息(如:节点标识等),该Item元素中,源(Source)元素用于携带该第一级目录节点的URI,数据(Data)元素用于指定该第一级目录节点的子节点信息(即节点A、B和C的信息)。第二个Item元素中携带的是数据库目录的第二级目录节点(即节点A)的子节点信息(即节点A1和A2的信息),该Item元素中,Source元素用于携带该第二级目录节点的URI,Data元素用于指定该第二级目录节点的子节点信息。该Results命令格式如下所示: 
<Results> 
…… 
<Item> 
…… 
  <Data>A/B/C/D</Data> 
</Item> 
<Item> 
…… 
  <Source><LocURI>./A</LocURI></Source> 
  <Data>A1/A2</Data> 
</Item> 
…… 
</Results> 
(3)将所有目录结构数据封装在一个元素中,例如,可以将目录结构数据封装在Results元素中Item子元素的Data元素中,该Data元素携带的目录结构数据可以以文件的形式存在,此种情况下的Results命令格式如下所示: 
<Results> 
…… 
<Item> 
…… 
  <Data>目录结构数据</Data> 
</Item> 
</Results> 
其中,上述作为第三同步命令的Get元素中,也可采用其它子元素或属性来指示请求获取目录结构,而作为第三同步命令响应的Results元素中也可采用其它子元素或属性来携带目录结构数据,这些情况下的命令结构本文就不一一示出,无论上述Get和Results命令以何种方式组合,均在本发明的保护范围内。 
此外,客户端获取服务器端目录结构可以通过一个独立同步会话来实现。此种情况下获取目录结构的方法如下所述: 
1、客户端向服务器请求建立同步会话时,可在现有协议或未来可能出现的各种形式的Alert命令中扩展或定义新的子元素,在此子元素中采用参数的形式来指明当前同步内容,并将该同步内容指定为目录结构。此时,Alert命令格式如下所示: 
<Alert> 
…… 
<同步内容>目录结构</同步内容> 
<Item> 
<Source><LocURI>./Contacts</LocURI></Source> 
<Target><LocURI>./Contacts<LocURI></Source> 
</Item> 
</Alert> 
2、客户端向服务器请求建立同步会话时,可将当前的同步内容等信息 以Alert命令的属性形式携带在在现有协议或未来可能出现的各种形式的Alert命令中,具体命令格式如下所示: 
<Alert......同步内容=目录结构>(Alert命令的属性) 
…… 
</Alert> 
服务器在收到上述Alert命令之后,向客户端返回确认信息并向客户端发送服务器端指定数据库的目录结构,该指定数据库目录结构的发送可通过扩展现有同步命令来实现,例如:扩展Add命令或Replace命令使其能够携带目录结构数据,客户端接收到此种Add命令或Replace命令后能将服务器端的指定数据库的目录结构作为一个新的数据项添加到客户端的数据库中。如下命令格式所示,可扩展Add命令的子元素,Item元素,使Item元素的子元素,Data元素,能够携带目录结构数据,从而服务器端可将指定数据库的目录结构通过Add命令返回给客户端。 
<Add> 
…… 
<数据类型>目录结构</数据类型> 
…… 
<Item> 
…… 
<Data>服务器端指定数据库的目录结构</Data> 
…… 
</Item> 
…… 
</Add> 
当采用Add命令或Replace命令的子元素,Item元素,来携带目录结构数据时,可采用前面所述Results命令的子元素,Item元素,携带目录结构的方式:1)使用至少一个Item元素,每一Item元素携带一个节点的地址; 2)使用至少一个Item元素,每一Item元素携带一个节点及其子节点的信息(如目录节点标识等);3)使用一个Item元素,在该Item元素中携带以文件形式存在的整个目录结构数据。这三种情况下的命令格式本文就不再示出,另外,上述作为第三同步命令的Alert元素中,也可采用其它子元素或属性来指示请求获取目录结构,而作为第三同步命令响应的Add元素中也可采用其它子元素或属性来携带目录结构数据,这些情况下的命令结构本文就不一一示出,但均在本发明的保护范围之内。 
客户端确定服务器端待同步目录的地址也可以是服务器主动向客户端发送待同步目录的地址,该方案可以通过服务器向客户端发送通知来实现,该通知可采用数据同步协议中的通知格式,也可以由服务器通过其它引擎下发,例如:短消息业务(SMS)、无线应用协议推送业务(WAP Push)、会话初始化协议消息(SIP Message)、多媒体消息业务(MMS)等。客户端接收到服务器发送的通知后,可从中提取出待同步目录的URI。 
在客户端确定待同步目录的地址后,客户端可进一步发送Alert命令,其中携带了确定好的服务器端待同步目录的地址,其命令格式如下: 
    <Alert> 
          <CmdID>1</CmdID> 
          <同步类型>双向同步</同步类型> 
          <Item> 
          <Target><LocURI>./files/folder1(服务器上待同步目录folder1的 
URI)</LocURI></Target>) 
         <Source><LocURI>./files/folder1(客户端上待同步目录folder1的 
URI)</LocURI></Source>) 
          …… 
          </Item> 
          …… 
      </Alert> 
如果待同步目录包括多个目录,则可以在一个Alert命令中携带一个同步类型以及多个Item元素,其中每一个Item元素用于携带一个目录的地址,此时待同步目录中包括的各个目录的同步类型相同。以下给出待同步目录为folder1和folder2的<Alert>命令,如下所示: 
    <Alert> 
          <CmdID>1</CmdID> 
          <同步类型>双向同步</同步类型> 
          <Item> 
          <Target><LocURI>./files/folder1(服务器上待同步目录folder1的 
URI)</LocURI></Target>) 
          <Source><LocURI>./files/folder1(客户端上待同步目录folder1的 
URI)</LocURI></Source>) 
             …… 
          </Item> 
          <Item> 
          <Target><LocURI>./files/folder2(服务器上待同步目录folder2的 
URI)</LocURI></Target> 
          <Source><LocURI>./files/folder2(客户端上待同步目录folder2的 
URI)</LocURI></Source>) 
          …… 
          </Item> 
          …… 
      </Alert> 
服务器接收到客户端发送的Alert命令,会向客户端返回响应,该响应携带待同步目录协商结果,以确认待同步目录是否可以进行同步。该响应可以为现有协议中用于返回状态码的同步命令,比如SyncML协议的状态(Status)命令。 
如果待同步目录包括多个目录,则服务器返回响应给客户端的方法可以为: 针对待同步目录中包括的所有目录,服务器返回一个响应,该响应携带所有目录的协商结果;或者,针对待同步目录中包括的每一目录,服务器返回一个响应;每一响应携带一个目录的协商结果。当针对待同步目录中包括的每一目录,服务器返回一个响应,且每一响应携带一个目录的协商结果时,可以用多个Status命令针对相应的目录返回协商结果(也可称为状态码)。 
另外,客户端也可以用多个Alert命令来指定多个待同步的目录,且每一Alert命令对应一个待同步的目录。这时,服务器也可以用对应于上述的Alert命令的协商结果返回响应,该Alert命令的响应采用SyncML协议的状态Status元素来实现。 
另外,为了实现对不同的目录采用不同的同步类型,可以采用以下的几种方案: 
1、针对待同步目录中包括的所有目录,客户端发送一个Alert命令至服务器,该Alert命令中携带所有目录的地址以及每一目录对应的同步类型;该服务器按Alert命令中的所有目录的地址确定当前待同步目录中包括的所有目录以及每一目录对应的同步类型。此时,该Alert命令携带多个用于携带待同步数据地址的元素(如:Item元素);且每一用于携带待同步数据地址的元素被扩展为能够指示目录级别地址和一种同步类型的元素,并承载一个待同步目录的地址及其对应的同步类型。具体实现方法可以为:将原有的Alert命令中用于携带同步类型的元素与用于携带待同步数据地址的元素合并为一个元素,比如:将用于携带同步类型的元素合并到用于携带待同步数据地址的元素中。 
2、针对待同步目录中包括的每一目录,客户端发送一个携带该目录地址及其对应的同步类型的Alert命令至服务器;该服务器按每一Alert命令中的目录地址和同步类型一一确定当前待同步目录中包括的每一目录及其当前同步类型。此时,该Alert命令携带用于携带待同步数据地址的元素和用于携带同步类型的元素;且该用于携带待同步数据地址的元素被扩展为能够指示目录级别地 址的元素,并承载一个待同步目录的地址;所述用于携带同步类型的元素承载一种同步类型。 
然而,当待同步目录包括多个目录、且各个目录的同步类型相同时,针对待同步目录中包括的所有目录,客户端发送一个Alert命令至服务器,该Alert命令中携带所有目录的地址以及这些目录对应的同一同步类型;服务器按Alert命令中的所有目录的地址确定当前待同步目录中包括的所有目录以及当前同步类型。此时,该Alert命令携带多个用于携带待同步数据地址的元素(如:Item元素)和一个用于携带同步类型的元素(如:Data元素);且每一用于携带待同步数据地址的元素被扩展为能够指示目录级别地址的元素,并承载一个待同步目录的地址;所述用于携带同步类型的元素承载一种同步类型。其中,作为第二同步命令的Alert元素也可采用其它子元素或属性来携带同步类型、待同步目录地址等,本文就不再一一示出各种情况下的命令格式,但均在本发明的保护范围之内。 
二、方式二为采用过滤机制来指定待同步目录地址的一种方式。 
现有的过滤机制只可以实现域级别和数据项级别的过滤,本发明可将现有的过滤机制扩充到目录级别,其扩充可以通过在现有SyncML协议的过滤(Filter)元素中新增用于携带目录级别过滤条件的子元素,例如,该元素可以命名为目录级别(FolderLevel),在该元素中可采用通用网关接口(CGI,Common Gateway Interface)语法来指定待同步的目录。其中,也可采用Filter元素的属性或新增的其它子元素来携带目录级别过滤条件,此种情况下的命令结构本文不再示出,但均在本发明的保护范围之内。 
以下给出待同步目录为编号112和113的目录的Filter命令格式: 
<Filter> 
        …… 
        <FolderLevel> 
          <Item> 
            <Meta><Type>syncml:filtertype-cgi</Type></Meta> 
           <Data>&LUID&EQ;112&AND;&LUID&EQ;113(采用filter 
的CGI语法指定同步的目录为编号是112和113的目录)</Data> 
           </Item> 
         </FolderLevel> 
        …… 
</Filter> 
此外,在同步阶段,可通过发送第一同步命令来指明目录同步的操作类型,或进一步指明待同步目录地址,或进一步携带数据内容。 
当该第一同步命令携带待同步目录地址时,可扩充现有的同步(Sync)命令中用于携带待同步数据地址的元素,如:目标(Target)元素,从而可将同步的粒度从数据库级别扩充到目录级别。比如:可以在Sync命令中携带能够指示目录级别地址(如:待同步目录的URI)的Target元素。现有的Sync命令只能携带整个数据库中需要同步的数据,且现有Sync命令的Target元素只能指示数据库的地址。本发明Sync命令能够指明目录级别的地址,该Sync命令中携带的数据内容就可以仅为数据内容,而不需要是整个数据库的同步数据。以下给出该Sync命令的一个实例: 
          <Sync> 
          <CmdID>3</CmdID> 
          <Target><LocURI>./files/folder1(服务器上待同步目录folder1的 
URI)</LocURI></Target>) 
          <Source><LocURI>./files/folder1(客户端待同步目录folder1的 
URI)</LocURI></Source>) 
          …… 
       </Sync> 
其中,一个Sync命令可携带一个待同步目录的地址,如果有多个目录需要同步,则可以通过多个Sync命令来携带多个目录的地址。比如:由两个Sync命令分别携带两个待同步目录folder1和folder2的地址。另外,上述作为第一 同步命令的Sync元素中,也可采用其它子元素或属性来携带待同步目录地址,这些情况下的命令结构本文就不一一示出,但均在本发明的保护范围之内。 
当第一同步命令(比如:Sync命令)携带操作类型时,具体携带操作类型的方式与现有技术相同,比如:如前述Sync命令格式所述,在Sync命令中携带用于携带操作类型的子元素,如:指示新增操作的增加(Add)元素,指示更新操作的更新(Replace)元素。这样,接收第一同步命令的一端可按第一同步命令携带的操作类型,对所确定的待同步目录作该操作类型指定的同步操作。这里,第一同步命令所能携带的操作类型包括:新增(Add)、更新(Replace)、删除(Delete)、移动(Move),这样,Sync命令可按实际情况,选择携带Add元素、Replace元素、Delete元素或Move元素来指示各种操作类型。 
当该第一同步命令携带该数据内容时,具体携带数据的方式可为:在Sync命令的对应新增、更新等操作类型的子元素中增加用于携带数据内容的子元素,数据(Data)元素。这样,收到该第一同步命令的一端可首先确定该第一同步命令中携带的数据内容,然后将该数据内容保存在该待同步目录地址下。通常,携带数据内容的第一同步命令所携带的操作类型为Add或Replace,收到第一同步命令的一端会将该待同步目录下增加该第一同步命令中携带的数据,或者将该待同步目录下已存的数据更新为该第一同步命令中携带的数据。由于,本发明的第一同步命令中携带的数据仅为某数据内容,而无需携带整个数据库的数据,因此采用本发明之后,在数据同步阶段,数据传输量将大大减少,从而提高同步效率。 
当第一同步命令的接收端在完成数据同步之后,还可进一步返回该第一同步命令的响应给该第一同步命令的发送端,由该第一同步命令的响应来携带数据同步结果,以向该发送端确认数据同步是否成功。另外,针对某些同步类型,比如:双向同步、客户端单向同步、服务器单向同步等,在确定待同步目录之后还要判断待同步目录是否发生变化,如果发生变化,再按当前待同步目录的变化状态构造第一同步命令并发送。 
上述本发明的各种第一、第二和第三同步命令携带的各种信息,如:待同步目录数据、目录级别地址过滤条件、同步类型、目录结构数据等等,并不限于携带在文中所示各个命令格式中的子元素或属性之中,还可采用其它子元素或属性来携带这些信息,鉴于命令格式的组合情况较多,本文就不再将这些命令格式一一示出,但均在本发明的保护范围之内。 
下面结合具体实施例对同步阶段进行说明。由于客户端发起同步与服务器端发起同步的处理流程相类似,下面仅以客户端发起同步,服务器端执行数据同步操作为例进行说明。以下实例中,所述第一同步命令采用SyncML协议的Sync元素来实现;该第一同步命令通过携带Sync元素的子元素,新增Add元素,来携带新增操作类型,通过携带Sync元素的子元素,更新Replace元素,来携带更新操作类型,通过携带Sync元素的子元素,移动Move元素,来携带移动操作类型,通过携带Sync元素的子元素,删除Delete元素,来携带删除操作类型。 
为了实现能够使用户按照自己的意愿创建物理或逻辑分类目录,并指定任意一分类目录进行递归同步或非递归同步,需要在客户端和服务器端分别设置以下三个数据表: 
1、数据条目表(Data Item Table):该表用于保存所有的数据项目信息,其包括数据项目编号与具体的数据内容(Data)的对应关系;其中,所述数据项目编号在客户端以Item LUID表示,在服务器端以Item GUID表示 
2、目录表(Folder Table):该表用于保存所有的目录项信息,其包括目录项编号、目录名(Name)、该目录项所属的父目录(Parent Source)、该目录项状态(Folder Status)以及这四者之间的对应关系。其中的目录项状态主要包括如下状态:现存未修改(Existing)(可用E来标识)、新增(New)(可用N来标识)、更新(Update)(可用U来标识)、删除(Delete)(可用D来标识)、移动(Move)(可用M来标识)以及复制(Copy)(可用C来标识);其中,Delete可以分为永久删除(Delete permanently)(可 用P-D来标识)和非永久删除(Delete non-permanently)(可用P-ND来标识)两种状态;所述目录项编号在客户端以Folder LUID表示,在服务器端以Folder GUID表示。 
3、数据条目-目录的对应关系索引表(Index Table):该表用于保存数据项目的归属关系,其包括:数据项目编号、父目录(Parent Source)以及数据项目状态(Data Status)的对应关系;其中所述数据项目编号在客户端以Item LUID表示,在服务器端以Item GUID表示。 
再有,在服务器端还需保存数据在客户端内的编号与服务器内的编号的对应关系列表,即GUID与LUID之间的对应关系。 
实施例一:用户在短信的根目录(如:./sms)下增加了一个新的目录“bless”,并且,在“bless”目录下又增加了两个子目录分别为“Spring Festival”和“Mid-autumn Festival”,同时,在每个目录下分别增加了一个数据,比如:在“bless”目录下增加了数据N1,在“Spring Festival”目录下增加了数据N2,在“Mid-autumn Festival”目录下增加了数据N3。 
参见图3a和图3b,图3a所示为应用本发明实施例一的用户定义的数据结构示意图,其中,方框表示目录(Folder),圆圈表示数据条目(data Item);实线表示的状态为Existing,虚线表示的状态为New。图3b所示为应用本发明实施例一的客户端的数据存储示意图。在客户端保存有数据条目表DataItem Table、目录表Folder Table和“数据条目-目录”对应关系索引表IndexTable。各个列表所增加数据的状态在图3b都有相应的反映。 
当用户要求同步“bless”目录时,客户端顺序生成以下同步命令: 
首先,客户端根据接收到的来自用户的同步bless目录的命令并确定同步数据是一个目录项后,从Folder Table中确定该bless的状态为N,之后,构建表示增加目录的同步命令,比如:在Sync命令中增加Add子元素,以构成Add同步命令,该Add同步命令也可称为Sync命令的子命令。并且,在该所构建的Add命令中,使用Meta字段指明数据类型为目录项(Folder), 该数据类型为根据Folder Table所确定的,使用LUID字段指明待同步数据的编号为1006,使用Data字段指明具体的数据为bless,使用SourceParent字段指明其所属父目录为根目录。 
之后,客户端确定bless目录下数据项目状态,由于在Index Table中,数据项目2001所对应的状态为N,因此,构建Add同步命令;并且当从DataItem Table中确定数据项目2001所对应的具体数据内容为N1后,在该所构建的Add同步命令中,使用Meta字段指明数据类型为数据项目(Item),使用LUID字段指明待同步数据的编号为2001,使用Data字段指明具体的数据为N1,使用SourceParent字段指明其所属父目录为1006。 
当客户端确定bless目录下没有新增加的数据项目后,索引该bless目录下子目录的状态,其具体方法与确定bless目录的方法相同,此处不再赘述。其确定的结果是构建两个Add同步命令,其中一个Add命令中,Meta字段指明数据类型为目录项Folder,LUID字段指明待同步数据的编号1007,Data字段指明具体的数据为春节(Spring Festival),SourceParent字段指明其所属父目录为1006;而另一个Add命令中的Meta字段指明数据类型为目录项(Folder),LUID字段指明待同步数据的编号为1008,Data字段指明具体的数据为中秋节(Mid-autumn Festival),SourceParent字段指明其所属父目录为1006。 
当客户端确定bless目录下没有新增加的子目录后,再确定SpringFestival目录和Mid-autumn Festival目录下的数据项目的状态,其具体方法与确定N1的方法相同,即客户端会分别再构造两条Add同步命令,在此不再赘述。 
以此类推,直到针对所有增加的数据均发出Add同步命令为止,这样也就实现了递归同步。而非递归同步指的是:1、只同步某一目录项,而不再同步该目录项下的数据项,比如:修改目录项的名称;2、只同步某一目录项及该目录项下的数据项目,而不再同步该目录项下的子目录项。 
最后,将所构造的Add同步命令全部发送给服务器。如果Add命令的数据量较少,则可在一个消息中包含多个Add命令,一次性交互即可;如果Add命令的数据量较大,则需要多次交互。在实际应用中,还可以只发送一个Add同步命令,并在该Add命令中包含多个目录和数据项目,其逻辑上仍然可看作是多个Add命令。 
下面说明服务器端接收到上述Add命令后,执行同步操作的过程。该过程所涉及的表格与图3b所示表格类似,这里不再将此表格示出。 
当服务器端接收到增加bless目录项的同步命令后,通过接收到的同步命令中的Meta字段确定待同步数据的类型为目录项,根据LUID字段确定该待同步数据在客户端的编号为1006,根据Data字段确定其名称为bless,根据SourceParent字段确定其父目录为根目录。之后,为该待同步数据分配服务器本地编号(Folder GUID),如100006。然后,在本地已设置的目录表中增加相应条目,即增加条目:100006、bless、根目录、该bless数据项当前状态,以及这四者的对应关系。并且,在自身已设置的客户端内编号与服务器内编号的对应关系列表中保存该同步数据的客户端内编号(即LUID)、该同步数据在服务器端内编号(即GUID)以及二者对应关系,即保存1006、100006以及二者之间的对应关系。 
当服务器端接收到增加N1数据项目的同步命令后,通过接收到的同步命令中的Meta字段确定待同步数据的类型为数据项目,根据LUID字段确定该待同步数据在客户端内的编号为2001,根据Data字段确定其具体的数据内容为N1,根据SourceParent字段确定其父目录为1006。之后,在本地数据库中保存该N1数据,然后为该待同步数据分配服务器本地编号(FolderGUID),如200001,并在本地已设置的数据条目表Data Item Table中增加相应条目,即增加条目:200001、N1以及二者的对应关系;在Index Table中增加相应条目,即增加条目:200001、100006、该N1数据当前状态、以及这三者的对应关系,在自身已设置的客户端内编号与服务器内编号的对应 关系列表中保存该同步数据在客户端内的编号、该同步数据在服务器端内的编号以及二者的对应关系,即保存2001、200001以及二者之间的对应关系。 
服务器端增加Spring Festival目录项和Mid-autumn Festival目录项的方式与增加bless目录项的方式相同,增加N2和N3数据项目的方法与增加N1数据项目的方式相同,在此不再赘述。 
另外,有一点需要说明的是:如果是服务器端发起同步请求,由客户端执行同步操作,则服务器端发送给客户端的同步请求中包含待同步数据在服务器端的编号,客户端执行完同步操作后,将给服务器端返回该数据客户端内编号与服务器内编号的对应关系即LUID与GUID的对应关系,由服务器端将接收到的对应关系保存在本地已设置的客户端内编号与服务器内编号的对应关系列表内。 
至此,实现了增加数据的同步操作,而且该数据可以是一个具体的数据项目,也可以是根据用户的意愿而创建的目录项,且该目录项不受系统的数据物理结构的限制。可见,应用本发明的好处是:相同的数据只需传递一份,而且,执行同步操作的一端,对相同数据也只需保存一份,大大节省了网络资源和设备本身的资源。例如,假设N1同时属于bless、Spring Festival和Mid-autumn Festival目录下,那么在服务器端的同步操作过程中,只需在Index Table中再增加两条相应条目,即增加条目1:200001、100007、该N 1数据当前状态以及这三者对应关系,和条目2:200001、100008、该N1数据当前状态以及这三者的对应关系即可。 
实施例二:用户在短信的根目录(./sms)下更新了目录“bless”的属性,并更新了“bless”目录下数据项U1,仅更新了“Spring Festival”目录下的数据项U2。本实施例中,U2同时属于Spring Festival和Mid-autumn Festival两个目录下。 
参见图4a和图4b,图4a所示为应用本发明实施例二的用户定义的数据结构示意图,其中,方框表示Folder,圆圈表示data Item;实线表示的状态 为Existing,点画线表示的状态为Update。图4b所示为应用本发明实施例二的客户端的数据存储示意图。在客户端保存有数据条目表(Data ItemTable)、目录表(Folder Table)和数据条目-目录对应关系索引表(IndexTable)。各个数据表中数据的状态在图4b中都有相应的反映。 
当用户要求同步“bless”目录时,客户端顺序生成以下同步命令: 
首先,客户端根据接收到的来自用户的同步bless目录的命令并确定同步数据是目录项之后,从Folder Table中确定该bless目录的状态为U,之后,构建指示更新的Sync命令,比如:更新(Replace)同步命令,该Replace同步命令可称为是Sync命令的子命令。并且,使用该所构建的Replace命令中的Meta字段指明数据类型为目录项(Folder),该数据类型可根据Folder 
Table确定;使用LUID字段指明待同步数据的编号为1006,使用Data字段指明具体的数据为bless,使用SourceParent字段指明该bless目录所属父目录为根目录。 
之后,客户端确定bless目录下数据项目的状态,由于在Index Table中,1006所对应的数据项目为2001,且其状态为U,因此,构建Replace同步命令,并且当从Data Item Table中确定2001所对应的具体数据内容为U1后,使用该所构建的Replace同步命令中的Meta字段指明数据类型为数据项目(Item),使用LUID字段指明待同步数据的编号为2001,使用Data字段指明具体的数据为U1,使用SourceParent字段指明该数据项目所属父目录为1006。 
然后,当客户端确定bless目录下没有更新的数据项目后,索引该bless目录下子目录的状态,其具体方法与确定bless目录的方法相同,本例中,该bless目录下子目录的状态未发生变化,因此不做处理。 
最后,当客户端确定bless目录下没有更新的子目录后,再确定子目录Spring Festival下的数据项目的状态,其具体方法与确定U1的方法相同。即:最终的结果是构建Replace同步命令,并且在从Data Item Table中确定2002 所对应的具体数据内容为U2之后,使用该所构建的Replace同步命令中的Meta字段指明数据类型为数据项目(Item),使用LUID字段指明待同步数据的编号为2002,使用Data字段指明具体的数据为U2,使用SourceParent字段指明其所属父目录为1007。 
以此类推,直到针对所有更新的数据均发出Replace同步命令为止,这样也就实现了递归同步。当然,也可能实现的是非递归同步,具体实现原理与递归同步类似,这里就不再进一步描述。其中,可在同步初始化阶段协商待同步目录时确定当前同步是否为递归同步,这样,本发明的第二同步命令中进一步携带递归同步标志,当携带有效的递归同步标志时,说明当前待同步目录进行的是递归同步,该待同步目录的根节点以及所有子节点均要进行数据同步,当携带无效的递归同步标志时,说明当前待同步目录进行的是非递归同步,只有该待同步目录的根节点要进行数据同步。当在同步初始化阶段确定当前待同步目录要进行递归同步之后,同步阶段中客户端或服务器发送的第一同步命令中携带的数据内容包括:当前待同步目录的根节点以及各个子节点的数据内容;此时,第一同步命令的接收端按第一同步命令中携带的根节点以及各子节点的数据内容,依次同步该待同步目录的根节点以及各个子节点的数据内容。当在同步初始化阶段确定当前待同步目录要进行非递归同步之后,同步节点中客户端或服务器发送的第一同步命令中携带的数据内容包括:当前待同步目录根节点的数据内容;此时,该第一同步命令的接收端仅同步该待同步目录的根节点的数据内容。这里,本文所述的数据内容指待同步目录中根节点或子节点的目录项和数据项的内容,如:目录项的名称(Name)、数据项的数据(Data)。 
此后,将所构造的Replace同步命令全部发送给服务器,具体发送方式与发送Add同步命令的方式相同,在此不再赘述。 
下面说明服务器端接收到上述Replace命令后,执行同步操作的过程。该过程所涉及的表格与图4b所示表格类似,因此这里并未示出该表格。 
当服务器端接收到更新bless目录项的同步命令后,通过接收到的同步 命令中的Meta字段确定待同步数据的类型为目录项,根据LUID字段确定该待同步数据在客户端的编号为1006,根据Data字段确定其名称为bless,根据SourceParent字段确定其父目录为根目录。之后,在已设置的客户端内编号与服务器内编号的对应关系列表中获取该更新的待同步数据在服务器本地的编号,如100006。然后,在本地已设置的目录表中更新相应条目,即更新条目中的bless的属性信息,该条目中包括:100006、bless、根目录、该bless数据当前状态以及这四者的对应关系。 
当服务器端接收到更新U1数据项目的同步命令后,通过接收到的同步命令中的Meta字段确定待同步数据的类型为数据项目,根据LUID字段确定该待同步数据在客户端的编号为2001,根据Data字段确定其具体的数据内容为U1,根据SourceParent字段确定其父目录为1006。之后,在已设置的客户端内编号与服务器内编号的对应关系列表中获取该更新的待同步数据在服务器本地的编号,如200001,在本地已设置的数据条目表中更新待同步数据的本地编号所对应的条目,即更新200001和U1及其对应关系条目中的U1的信息。 
服务器端更新U2的方法与更新U1的方法相同,在此不再赘述。 
此处需要说明一点,本例中,U2既属于Spring Festival目录又属Mid-autumn Festival目录,但更新U2时只需发送一次Replace命令,服务器端也只需更新一次U2,就可以使两个目录下的U2都得到更新。这是因为,在服务器端实际只保存了一份数据,该数据的隶属关系是通过Index Table表来体现的。可见,采用本发明的方法可最大限度地减少冗余数据的存在,进而最大限度地节省有限的资源。 
实施例三:用户将“music”目录下的数据项目“M1”移动到“favorite”目录下;将“mp3”整个目录移动到“favorite”下。 
参见图5a和图5b,图5a所示为应用本发明实施例三的用户定义的数据结构示意图,其中,方框表示Folder,圆圈表示data Item;实线表示的状态 为Existing,双点画线表示的状态为Move。图5b所示为应用本发明实施例三的客户端的数据存储示意图。在客户端保存有数据条目表(Data ItemTable)、目录表(Folder Table)和数据条目-目录对应关系索引表(IndexTable)。各个数据表中数据的状态在图5b都有相应的反映。 
当用户要求同步根目录时,客户端顺序生成以下同步命令: 
首先,客户端根据接收到的来自用户的同步根目录的命令后,索引该根目录下的所有子目录的状态,本例中,该根目录下所有子目录的状态未发生变化,因而不做处理。然后,客户端索引该根目录下的数据项目的状态是否发生变化,本例中,该根目录下的数据项目的状态也未发生变化,因此不做处理。 
之后,客户端依次索引每个子目录中的子目录状态是否发生变化,本例中,客户端确定music目录下的“mp3”子目录的状态为M,之后,构建移动(Move)同步命令,该Move同步命令也称为是一种Sync命令的子命令,用于携带移动数据。并且,使用该所构建的Move命令中的Meta字段指明数据类型为目录项(Folder),该数据类型根据Folder Table确定,使用LUID字段指明待同步数据的编号为1006,使用SourceParent字段指明该目录移动后所属父目录为1004。 
然后,客户端确定music目录下数据项目的状态,由于在Index Table中,1006所对应的数据项目为2001,且其状态为M,因此构建Move同步命令,并且,使用该构建的命令中的Meta字段指明数据类型为数据项目(Item),使用LUID字段指明待同步数据的编号为2001,使用SourceParent字段指明其移动后所属的父目录为1004。 
以此类推,本例中没有其他发生移动的数据,因此不再处理。 
之后,将所构造的Move同步命令全部发送给服务器,具体发送方式与发送Add同步命令的方式相同,在此不再赘述。 
下面说明服务器端接收到上述Move命令后,执行同步操作的过程。该 过程所涉及的表格与图5b所示表格类似,因此图未示。 
当服务器端接收到指示移动mp3目录项的Move同步命令后,通过接收到的Move同步命令中的Meta字段确定待同步数据的类型为目录项,根据LUID字段确定该待同步数据在客户端内的编号为1006,根据SourceParent字段确定该mp3目录项移动后所属父目录为1004,之后,在已设置的客户端内编号与服务器内编号的对应关系列表中获取该待移动数据在服务器本地的编号,如100006,在本地已设置的Folder Table中该待同步数据的本地编号所对应的条目中,将所属父目录更改为接收到的Move同步命令中的父目录,即将该表中的100006所对应的父目录由1005改为1004。 
当服务器端接收到指示移动M1数据项目的Move同步命令后,通过接收到的Move同步命令中的Meta字段确定待同步数据的类型为Item,根据LUID字段确定该待同步数据在客户端的编号为2001,根据SourceParent字段确定其移动后所属父目录为1004,之后,从已设置的客户端内编号与服务器内编号的对应关系列表获取该更新的待同步数据在服务器本地的编号,如200001,在本地已设置的Index Table中该待同步数据的本地编号所对应的条目中,将所属父目录更改为接收到的同步命令中的父目录,即将该表中的200001所对应的父目录由1005改为1004。 
可见,采用本发明的方法进行移动的同步操作时,仅需修改相应数据表中的对应关系,不需要对实际数据进行移动,从而最大限度节省了有限的资源。 
另外需要说明一点:在移动某个目录及其下的子目录和数据项目时,比如移动mp3目录项时,只需针对mp3目录项只发送一条Move命令,而不需再针对mp3目录下的子目录和数据项目发送Move命令,因为其下的子目录和数据项目所属的父目录是未发生任何变化的。 
当第一同步命令携带的操作类型为删除,且要同步的是待同步目录下的数据项时,进一步包括:判断当前待同步目录的数据项的数据内容是否仅存于该 待同步目录下,如果是,则在该第一同步命令中进一步携带有效的永久删除标志;否则在该第一同步命令中进一步携带无效的永久删除标志;此时,该第一同步命令的接收端对待同步目录所进行的数据同步操作包括:判断该第一同步命令中是否携带有效的永久删除标志,如果是,则删除该待同步目录下数据项的数据内容;否则取消该数据项与该待同步目录之间的对应关系。 
实施例四:用户删除了“bless”目录下的“D1”数据项目,对“SpringFestival”目录下的数据“U2”选择了永久删除,“D3”选择了非永久删除。本例中,仅是对删除数据项目的描述。 
参见图6a和图6b,图6a所示为应用本发明实施例四的用户定义的数据结构示意图,其中,方框表示Folder,圆圈表示data Item;实线表示的状态为Existing,点线表示的状态为Delete。图6b所示为应用本发明实施例四的客户端的数据存储示意图。在客户端保存有数据条目表(Data Item Table)、目录表(Folder Table)和数据条目-目录对应关系索引表(Index Table)。各个列表中数据的状态在图6b都有相应的反映。 
当用户要求同步“bless”目录时,客户端顺序生成以下同步命令: 
客户端确定bless目录下数据项目的状态,由于在Index Table中,数据项目为2001的状态为永久删除(P-D),因此,构建删除(Delete)同步命令,该Delete同步命令也为一种Sync命令的子命令,用于携带删除某数据;并且,使用该所构建的Delete同步命令中的Meta字段指明数据类型为数据项目(Item),使用LUID字段指明待同步数据的编号为2001,并且该Delete同步命令中还需包括指明永久删除的标识。 
之后,当客户端确定bless目录下没有删除的数据项目后,索引该bless目录下子目录的状态,本例中,该bless目录下子目录的状态未发生变化,因此不做处理。 
当客户端确定bless目录下没有删除的子目录后,再确定子目录SpringFestival下的数据项目的状态,其具体方法与确定D1的方法相同。即:最终 的结果是构建两条Delete同步命令,其中一条Delete同步命令中,使用Meta字段指明数据类型为数据项目(Item),使用LUID字段指明待同步数据的编号为2002,并且该命令中还需包括指明永久删除的标识,如P-D。而另一条Delete同步命令中,使用Meta字段指明数据类型为数据项目(Item),LUID字段指明待同步数据的编号为2003,并且在该命令中还需包括指明非永久删除的标识,如NP-D。 
所构建的Delete同步命令中,不需要包含要删除的数据,只需指明要删除数据的类型、编号、以及是永久删除还是非永久删除即可。以上是Delete命令的一种实现方式,即该命令中包含类型、编号、以及用于携带永久删除或非永久删除的标志位这三种信息;当然,还可以有其他的实现方式,比如,将Delete分为两种命令,一种永久删除P-Delete命令,另一种是非永久删除NP-Delete命令,这样,每种删除命令中只需包含待删除数据的类型、编号即可。 
最后,将所构造的用于携带删除的同步命令全部发送给服务器。 
下面说明服务器端接收到上述Delete命令后,执行同步操作的过程。 
当服务器端接收到删除D1数据项目的同步命令后,通过接收到的同步命令中的Meta字段确定待同步数据的类型为数据项目Item,根据LUID字段确定该待同步数据在客户端的编号为2001,并确定此次删除为永久删除,之后,在已设置的客户端内编号与服务器内编号的对应关系列表中获取该待删除数据在服务器本地的编号,如200001,从本地的数据条目表和数据条目-目录对应关系表中,分别删除待同步数据本地编号所对应的条目,即删除编号为200001的整个条目。同时,在本地数据库中删除数据D1。 
当服务器端接收到用于携带删除D2数据项目的Delete同步命令后,即删除相应数据表中的整个条目,其删除D2的方法与删除D1的方法相同,在此不再赘述。 
当服务器端接收到用于携带删除D3数据项目的Delete同步命令后,通 过接收到的Delete同步命令中的Meta字段确定待同步数据的类型为数据项目Item,根据LUID字段确定该待同步数据在客户端的编号为2003,并确定此次删除为非永久删除,之后,在已设置的客户端内编号与服务器内编号的对应关系列表中获取该待删除数据在服务器本地的编号,如200003,并只在本地的数据条目-目录对应关系表中删除该待同步数据的本地编号所对应的条目,即删除该表中编号为200003的整个条目,而在本地数据库内不删除D3数据。 
可见,采用本发明的方法进行删除的同步操作时,仅需在客户端与服务器端之间传递标识,不需要传输具体的数据内容,最大限度节省了有限的资源。 
实施例五:用户删除了整个“bless”目录。这相当于同时删除了其下的所有子目录以及其下的所有数据项目。本例中,D1和D2仅存在于bless目录下,D3存在于bless和joke目录下,且本例仅是对删除目录项的描述。 
参见图7a和图7b,图7a所示为应用本发明实施例五的用户定义的数据结构示意图,其中,方框表示Folder,圆圈表示data Item;实线表示的状态为Existing,点线表示的状态为Delete。图7b所示为应用本发明实施例五的客户端的数据存储示意图。在客户端保存有数据条目表(Data Item Table)、目录表(Folder Table)和数据条目-目录对应关系索引表(Index Table)。各个数据表中数据的状态在图7b都有相应的反映。 
当用户要求同步根目录时,客户端顺序生成以下同步命令: 
首先,客户端根据接收到的来自用户的同步根目录的命令后,索引该根目录下的所有子目录的状态,本例中,从Folder Table表中确定bless的状态为D,则客户端还要进一步执行如下步骤:判断该待删除目录下的数据项目以及该目录的子目录下的数据项目是否仅存在于该待删除目录下,如果是,则构建一条Delete同步命令,且该Delete同步命令中包含指示永久删除的信息;否则,针对每个数据项目和目录项分别构建一条Delete同步命令,并 且,仅存在于该待删除目录下的数据项目或目录项所对应的Delete同步命令中将包含指示永久删除的信息,而并非仅存在于该待删除目录下的数据项目或目录项所对应的Delete同步命令中则包含指示非永久删除的信息。也就是说,如果某个数据项目或目录项,还存在于其他目录下(这里的其他目录不包括bless子目录),则在这样的数据所对应的Delete同步命令中包含非永久删除信息,如果不是这样的数据,则其所对应的Delete同步命令中包含永久删除信息。之后,将所构建的所有Delete同步命令均发送给服务器。这里,针对每个数据项目和目录项分别构建一条删除命令,实际就是一种递归的同步。 
下面说明服务器端接收到上述Delete同步命令后,执行同步操作的过程。 
如果服务器接收到的是针对数据项目的Delete同步命令,则与实施例四中所述的处理方式相同,不再赘述。 
如果服务器接收到的是针对目录项的Delete同步命令,则在已设置的客户端内编号与服务器内编号的对应关系列表中获取该待删除数据在服务器本地的编号,然后,无论是永久删除还是非永久删除,都要从本地已设置的目录表中删除该待同步数据的本地编号所对应的条目。 
对于目录删除操作还有一点需要说明:作为同步发起方的客户端,在删除某个目录项时,如删除bless目录项,其可以针对该目录项只构建一条Delete同步命令,而其所执行的其他操作,如“判断该待删除目录下的数据项目以及该目录的子目录下的数据项目是否仅存在于该待删除目录下”等,均由服务器来执行,这样可以简化客户端的操作。当然,反之也适用。 
在实际应用中,实施例四、五通常会结合起来同时使用。 
另外,对于删除操作,在服务器端完成同步操作后,客户端也会将自身相应数据表中的条目删除。 
实施例六:用户将“music”目录下的数据项目“M1”复制到“favorite”目录 下;将“mp3”目录复制到“favorite”目录下。 
参见图8a和图8b,图8a所示为应用本发明实施例六的用户定义的数据结构示意图,其中,方框表示Folder,圆圈表示data Item;实线表示的状态为Existing,粗实线表示的状态为Copy。图8b所示为应用本发明实施例六的客户端的数据存储示意图。在客户端保存有数据条目表(Data Item Table)、目录表(Folder Table)和数据条目-目录对应关系索引表(Index Table)。各个列表所增加数据的状态在图3b都有相应的反映。 
需要说明的是,上述实施例中,服务器中设置有客户端内编号与服务器内编号之间的对应关系列表,比如:LUID与GUID的对应关系表,此表的设置是考虑到目前还存在一些服务器与客户端的编号支持能力不同的问题。而在服务器与客户端的编号支持能力相同的情况下,对于同一数据而言,客户端和服务器使用相同的目录项编号和数据项编号,那么就不需要先进行从客户端内编号到服务器内编号的映射就可直接使用客户端内编号进行处理,因此,此种情况下,本发明方法的实施并未受到限制。 
当用户要求同步根目录时,客户端与服务器端的操作与实施例一的操作基本一致。所不同之处在于,在实施例一中,客户端要针对每一个数据项目和目录项都发送一次Add同步命令,而在本例中,如果客户端对某一目录项发出Copy同步命令(该Copy同步命令也为一种Sync命令的子命令,用于携带复制数据),则不需对该目录项下的子目录项和数据项目再发Copy同步命令,从而进一步减少数据量的传输,节约网络资源。而本例中服务器端的处理过程与实施例一中的处理过程是相同的,其也是针对每一个目录项和数据项目逐一地进行处理。 
再有,在执行Copy同步时,用户可根据需要决定是否在再指令复制一份实际数据,如果是,则执行同步操作的一方的数据同步操作进一步包括:在本地数据库内在复制一份数据,并在本地已设置的数据目录表中增加相应条目。 
如果客户端和服务器端的修改操作存在冲突,如在被移动的目录中增加、更新或者删除了一些条目,本发明可通过扩展现有的冲突机制来确保客户端和服务器端的数据完全同步。具体实现为:将现有的以客户端为主(Client-Win)和以服务器端为主(Server-Win)的仲裁结果加以扩展,增加一种以服务器端和客户端合并处理(Win-Win)的仲裁结果,通过双赢的方式来确保客户端和服务器端的数据完全一致。当服务器端和客户端的数据操作发生冲突时,客户端根据服务器的数据操作执行同步操作,并且,服务器根据客户端的数据操作执行同步操作;所述数据操作包括:新增操作、更新操作、移动操作、删除操作、复制操作或此五者的任意组合。例如,用户在客户端上移动A目录使其成为B目录的子目录,而服务器端是在A目录中增加了一个条目,此时,服务器端将移动A目录使其成为B目录的子目录,并且,客户端在A目录中也增加一个条目,从而确保客户端和服务器端的数据完全一致。 
基于上述本发明方法,本发明还提供了一种实现数据同步的系统,该系统包括:客户端和服务器,二者之间通过交互同步命令来实现通信。其中,客户端和服务器进一步用于确定待同步目录,并对所确定的待同步目录进行数据同步。 
图9为所示为应用本发明实施例的实现数据同步的系统结构示意图。如图9所示,客户端包括:第一目录地址处理模块和第一数据同步模块,服务器包括:第二目录地址处理模块和第二数据同步模块。 
客户端中,第一目录地址处理模块用于确定待同步目录的地址并输出至数据同步模块;从数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;第一数据同步模块用于从目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至服务器;从服务器接收同步命令并从中解析得到待同步目录地址输出至目录地址处理模块。其中,第一目录地址处理模块可进一步用于从接收用户通过配置命令输入的待同步目录的地址,以使用户能在客 户端上设定待同步目录地址。 
服务器中,第二目录地址处理模块用于确定待同步目录的地址并输出至数据同步模块;从数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;第二数据同步模块用于从目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至客户端;从客户端接收同步命令并从中解析得到待同步目录地址输出至目录地址处理模块。 
基于上述实现数据同步的系统可见,本发明还公开了一种实现数据同步的客户端和一种实现数据同步的服务器,该客户端和服务器的实现原理与前述系统中的客户端和服务器相同,这里就不再对其工作原理及内部构造做详细说明,但均在本发明保护范围之内。 
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

Claims (42)

1.一种实现数据同步的方法,应用于客户端和服务器之间,该方法包括:客户端和服务器中的任一端发送第一同步命令至二者中的另一端;其特征在于,该方法还包括:
在同步初始化阶段中,在发送第一同步命令之前,客户端和服务器协商得到待同步目录,其中,所述待同步目录包括一个或多个目录;
在同步阶段中,所述第一同步命令的接收端在收到第一同步命令之后,按接收到的第一同步命令,对所确定的待同步目录进行数据同步;
在发送第一同步命令之前,该方法进一步包括:在客户端和服务器端分别设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中,
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系;
如果为递归同步,则发送第一同步命令前进一步包括:发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;发送端根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;
如果为非递归同步,则发送第一同步命令前进一步包括:发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。
2.根据权利要求1所述的方法,其特征在于,所述客户端和服务器协商得到待同步目录的方法为:
所述客户端和服务器中的任一端发送携带待同步目录地址的第二同步命令至另一端,该另一端按第二同步命令中的待同步目录地址确定当前待同步的目录。
3.根据权利要求2所述的方法,其特征在于,所述待同步目录包括一个或多个目录;当待同步目录包括多个目录时,所述客户端和服务器通过发送第二同步命令协商得到待同步目录的方法为:
针对待同步目录中包括的所有目录,所述客户端和服务器中的任一端发送一个第二同步命令至另一端,该第二同步命令中携带所有目录的地址;该另一端按第二同步命令中的所有目录的地址确定当前待同步目录中包括的所有目录;或者,
针对待同步目录中包括的每一目录,所述客户端和服务器中的任一端发送一个携带该目录地址的第二同步命令至另一端;该另一端按每一第二同步命令中的目录地址一一确定当前待同步目录中包括的每一目录。
4.根据权利要求2所述的方法,其特征在于,所述客户端和服务器中的任一端发送第二同步命令至另一端之前,包括:该第二同步命令的发送端直接确定待同步目录在本端的地址,然后将所确定的待同步目录地址携带在第二同步命令中。
5.根据权利要求2所述的方法,其特征在于,所述客户端和服务器中的任一端发送第二同步命令至另一端之前,包括:该第二同步命令发送端确定该待同步目录在另一端的目录地址并将其作为待同步目录地址携带在第二同步命令中。
6.根据权利要求5所述的方法,其特征在于,所述第二同步命令的发送端确定该待同步目录在另一端的目录地址的方法为:
另一端将待同步目录在本端的目录地址发送至该第二同步命令的发送端。
7.根据权利要求6所述的方法,其特征在于,所述另一端将待同步目录在本端的目录地址发送至该第二同步命令的发送端的方法为:通过发携带该目录地址的通知来发送该目录地址。
8.根据权利要求5所述的方法,其特征在于,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:
该第二同步命令的发送端从另一端获取该另一端的目录结构,并按所获取的目录结构确定待同步目录在另一端的目录地址。
9.根据权利要求8所述的方法,其特征在于,所述第二同步命令的发送端从另一端获取该另一端的目录结构的方法为:
该第二同步命令的发送端发送第三同步命令至另一端,该第三同步命令指示请求获取指定数据库的目录结构;
该另一端在该第三同步命令的响应中携带本端指定数据库的目录结构并返回给该第二同步命令的发送端。
10.根据权利要求9所述的方法,其特征在于,所述在第三同步命令的响应中携带指定数据库的目录结构的方法为:针对该目录结构中的每一节点,使用一个该第三同步命令的子元素来携带该节点的地址;
该所述第二同步命令的发送端在收到该第三同步命令的响应后,按各节点的地址确定目录结构。
11.根据权利要求9所述的方法,其特征在于,所述在第三同步命令的响应中携带指定数据库的目录结构的方法为:针对该目录结构中的每一节点,使用一个该第三同步命令的子元素来携带该节点及其子节点的信息;或者,使用一个该第三同步命令的子元素来封装整个目录结构的数据。
12.根据权利要求9所述的方法,其特征在于,所述第三同步命令采用同步标签语言SyncML协议的提取Get元素来实现;采用Get元素的子元素或属性来携带指定数据库的地址并指示请求获取该指定数据库的目录结构;或者,所述第三同步命令采用SyncML协议的警报Alert元素来实现,该Alert元素携带指定数据库的地址,并采用Alert元素的属性或子元素来指示请求获取该指定数据库的目录结构。
13.根据权利要求10所述的方法,其特征在于,所述第三同步命令的响应采用SyncML协议的结果Results元素、新增Add或更新Replace元素,来实现,并采用至少一个Results元素、Add元素或Replace元素的子元素或属性来携带节点的地址,其中,每一子元素或属性携带一个节点的地址。
14.根据权利要求11所述的方法,其特征在于,所述第三同步命令的响应采用SyncML协议的Results元素、Add元素或Replace元素,来实现,并采用至少一个Results元素、Add元素或Replace元素的子元素或属性来携带每一节点及其子节点的信息,其中,每一子元素或属性携带一个节点及其子节点的信息;或者,采用一个Results元素、Add元素或Replace元素的子元素来封装整个目录结构的数据。
15.根据权利要求5所述的方法,其特征在于,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:
该第二同步命令的发送端按用户输入的信息确定待同步目录地址。
16.根据权利要求5所述的方法,其特征在于,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:
第二同步命令发送端直接指定待同步目录在另一端上的地址,如果该目录地址在该另一端上不存在,则该另一端直接在第二同步命令发送端指定的地址上创建该待同步目录。
17.根据权利要求5所述的方法,其特征在于,所述第二同步命令发送端确定该待同步目录在另一端的目录地址的方法为:客户端和服务器预先设定待同步目录的地址。
18.根据权利要求3所述的方法,其特征在于,所述第二同步命令为现有协议的同步命令,且采用该现有协议的同步命令的属性或用于携带待同步数据地址的子元素来携带待同步数据地址,该用于携带待同步数据地址的元素被扩展为能够指示目录级别地址的元素。
19.根据权利要求2所述的方法,其特征在于,所述客户端和服务器通过发送第二同步命令协商得到待同步目录时,进一步包括:协商待同步目录所采用的同步类型。
20.根据权利要求19所述的方法,其特征在于,所述待同步目录包括一个或多个目录,每一目录对应各自的同步类型;所述协商同步类型的方法为:
在客户端和服务器通过发送第二同步命令协商得到待同步目录时,该第二同步命令中进一步携带待同步目录中包括的各个目录所对应的同步类型以及各目录与同步类型之间的对应关系,按该第二同步命令携带的同步类型以及各目录与同步类型之间的对应关系确定当前待同步目录包括的各个目录对应的同步类型。
21.根据权利要求20所述的方法,其特征在于,所述待同步目录中包括的所有目录对应同一同步类型,所述通过发送第二同步命令协商得到待同步目录和同步类型的方法为:
针对待同步目录中包括的所有目录,发送一个第二同步命令,该第二同步命令中携带所有目录的地址以及这些目录对应的同一同步类型;该第二同步命令的接收端按第二同步命令中的所有目录的地址确定当前待同步目录中包括的所有目录以及当前同步类型。
22.根据权利要求21所述的方法,其特征在于,所述通过发送第二同步命令协商得到待同步目录和同步类型的方法为:
针对待同步目录中包括的所有目录,发送一个第二同步命令,该第二同步命令中携带各个目录的地址及其对应的同步类型;该第二同步命令的接收端按第二同步命令携带的各个目录的地址及其对应的同步类型确定当前待同步目录中包括的所有目录以及每一目录的同步类型;或者,
针对待同步目录中包括的每一目录,发送一个携带该目录地址及其对应的同步类型的第二同步命令;该同步命令的接收端按每一第二同步命令携带的目录地址和同步类型一一确定当前待同步目录中包括的每一目录及其同步类型。
23.根据权利要求21或22所述的方法,其特征在于,所述第二同步命令为现有协议的同步命令;针对该第二同步命令携带的每一目录地址采用一个元素或属性来携带该目录地址,针对该第二同步命令携带的每一同步类型采用一个元素或属性来携带该同步类型;或者,针对该第二同步命令携带的每一目录地址及其对应的同步类型采用一个元素或属性来携带该目录地址及其对应的同步类型。
24.根据权利要求23所述的方法,其特征在于,所述第二同步命令采用同步标签语言SyncML协议的警报Alert元素来实现,并采用Alert元素的子元素或属性来携带目录地址和同步类型。
25.根据权利要求2所述的方法,其特征在于,所述第二同步命令为现有协议的同步命令,且采用该现有协议的同步命令的属性或新增的用于携带目录级别过滤条件的元素来承载待同步目录地址。
26.根据权利要求25所述的方法,其特征在于,所述第二同步命令采用SyncML协议的过滤Filter元素来实现,并采用Filter元素的属性或子元素来携带目录级别过滤条件。
27.根据权利要求1所述的方法,其特征在于,所述第一同步命令携带操作类型;所述按接收到的第一同步命令对所确定的待同步目录进行数据同步的方法为:按第一同步命令携带的操作类型,对所确定的待同步目录中的数据作该操作类型指定的同步操作。
28.根据权利要求27所述的方法,其特征在于,该第一同步命令进一步携带待同步目录地址;
所述按接收到的第一同步命令对所确定的待同步目录进行数据同步的方法进一步包括:确定该第一同步命令中携带的待同步目录地址,在所确定的待同步目录地址下进行同步操作。
29.根据权利要求27所述的方法,其特征在于,该第一同步命令进一步携带该数据内容;
所述按接收到的第一同步命令对所确定的待同步目录进行数据同步的方法进一步包括:确定该第一同步命令中携带的数据内容,将该数据内容保存在该待同步目录地址下。
30.根据权利要求28所述的方法,其特征在于,所述第一同步命令为现有协议的同步命令,采用该现有协议的同步命令的属性或用于携带待同步数据地址的子元素来携带所述待同步目录地址,该用于携带待同步数据地址的元素被扩展为能够指示目录级别地址的元素。
31.根据权利要求30所述的方法,其特征在于,所述第一同步命令采用SyncML协议的同步Sync元素来实现,并采用Sync元素的子元素或属性来携带携带待同步数据地址。
32.根据权利要求2所述的方法,其特征在于,所述第二同步命令中进一步携带递归同步标志;所述按第二同步命令中的待同步目录地址确定当前待同步的目录时,进一步包括:判断该第二同步命令是否携带有效的递归同步标志,如果是,确定当前待同步目录要进行递归同步;否则确定当前待同步目录要进行非递归同步;
当确定当前待同步目录要进行递归同步时,所述第一同步命令中携带的数据内容包括:当前待同步目录的根节点以及各个子节点的数据内容,该第一同步命令的接收端按第一同步命令中携带的根节点以及各子节点的数据内容,依次同步该待同步目录的根节点以及各个子节点的数据内容;
当确定当前待同步目录要进行非递归同步时,所述第一同步命令中携带的数据内容包括:当前待同步目录根节点的数据内容,该第一同步命令的接收端仅同步该待同步目录的根节点的数据内容。
33.根据权利要求27或28所述的方法,其特征在于,当第一同步命令携带的操作类型为删除、且要同步待同步目录下的数据项时,进一步包括:判断当前待同步目录的数据项的数据内容是否仅存于该待同步目录下,如果是,则在该第一同步命令中进一步携带有效的永久删除标志;否则在该第一同步命令中进一步携带无效的永久删除标志;
该第一同步命令的接收端对待同步目录所进行的数据同步操作包括:判断该第一同步命令中是否携带有效的永久删除标志,如果是,则删除该待同步目录下数据项的数据内容;否则取消该数据项与该待同步目录之间的对应关系。
34.根据权利要求1所述的方法,其特征在于,在确定待同步目录之后进一步包括:判断当前待同步目录是否发生变化,如果发生变化,则按当前待同步目录的变化状态构造第一同步命令并发送。
35.根据权利要求1所述的方法,其特征在于,该方法进一步包括:增设以服务器和客户端合并处理Win-Win为机制的仲裁结果;
当服务器端和客户端的数据操作发生冲突时,客户端根据服务器的数据操作执行同步操作,并且,服务器根据客户端的数据操作执行同步操作;所述数据操作包括:新增操作、更新操作、移动操作、删除操作、复制操作或此五者的任意组合。
36.一种实现数据同步的系统,该系统包括:客户端和服务器,且二者之间通过交互同步命令来实现通信;其特征在于,
所述客户端和服务器进一步用于在同步初始化阶段中协商得到待同步目录,并在同步阶段中对协商得到的待同步目录进行数据同步,其中,所述待同步目录包括一个或多个目录;
所述客户端和服务器中的任一端进一步用于,在得到待同步目录之后,发送第一同步命令至二者中的另一端;
所述客户端和服务器进一步用于,在发送第一同步命令之前,分别设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中,
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系;
如果为递归同步,则所述客户端和服务器进一步用于,发送第一同步命令前,发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;发送端根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;
如果为非递归同步,则所述客户端和服务器进一步用于,发送第一同步命令前,发送端从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。
37.根据权利要求36所述的系统,其特征在于,所述客户端包括:
第一目录地址处理模块,用于确定待同步目录的地址并输出至第一数据同步模块;从第一数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;
第一数据同步模块,用于从第一目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至服务器;从服务器接收同步命令并从中解析得到待同步目录地址输出至第一目录地址处理模块。
38.根据权利要求37所述的系统,其特征在于,所述第一目录地址处理模块进一步用于从接收用户输入的待同步目录的地址。
39.根据权利要求36所述的系统,其特征在于,所述服务器包括:
第二目录地址处理模块,用于确定待同步目录的地址并输出至第二数据同步模块;从第二数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;
第二数据同步模块,用于从第二目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至客户端;从客户端接收同步命令并从中解析得到待同步目录地址输出至第二目录地址处理模块。
40.一种实现数据同步的客户端,其特征在于,该客户端包括:
第一目录地址处理模块,用于在同步初始化阶段中确定待同步目录的地址并输出至第一数据同步模块;从第一数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;其中,所述待同步目录包括一个或多个目录;
第一数据同步模块,用于在同步阶段中从第一目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至服务器;从服务器接收同步命令并从中解析得到待同步目录地址输出至第一目录地址处理模块;
所述第一目录地址处理模块进一步用于,在得到待同步目录之后,发送第一同步命令至服务器;
所述第一目录地址处理模块进一步用于,在发送第一同步命令之前,设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中,
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系;
如果为递归同步,则所述第一目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;
如果为非递归同步,则所述第一目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。
41.根据权利要求40所述的客户端,其特征在于,所述第一目录地址处理模块进一步用于从接收用户通过配置命令输入的待同步目录的地址。
42.一种实现数据同步的服务器,其特征在于,该服务器包括:
第二目录地址处理模块,用于在同步初始化阶段中确定待同步目录的地址并输出至第二数据同步模块;从第二数据同步模块接收待同步目录的地址并按此地址确定当前待同步目录,提供待同步目录下的客户端与服务器之间的数据同步处理;其中,所述待同步目录包括一个或多个目录;
第二数据同步模块,用于在同步阶段中从第二目录地址处理模块接收待同步目录的地址,构造携带该待同步目录地址的同步命令并输出至客户端;从客户端接收同步命令并从中解析得到待同步目录地址输出至第二目录地址处理模块;
所述第二目录地址处理模块进一步用于,在得到待同步目录之后,发送第一同步命令至客户端;
所述第二目录地址处理模块进一步用于,在发送第一同步命令之前,设置数据条目表Data Item Table、目录表Folder Table和数据条目-目录的对应关系索引表Index Table;其中,
数据条目表用于保存所有的数据项目信息,包括数据项目编号与具体的数据内容的对应关系;目录表用于保存所有的目录项信息,包括目录项编号、目录名、该目录项所属的父目录、该目录项状态以及这四者之间的对应关系,其中的目录项状态包括如下状态:现存未修改、新增、更新、删除、移动以及复制;数据条目-目录的对应关系索引表用于保存数据项目的归属关系,包括:数据项目编号、父目录以及数据项目状态的对应关系;
如果为递归同步,则所述第二目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令;根据数据条目-目录的对应关系索引表确定所述待同步目录下数据项目状态,构建表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;所述第一同步命令包括:表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,以及表示待同步目录下数据项目的数据类型、编号、具体数据和所属父目录的同步命令;
如果为非递归同步,则第二目录地址处理模块进一步用于,发送第一同步命令前,从所述目录表中确定待同步目录的目录项状态,构建表示待同步目录的数据类型、编号、具体数据和所属父目录的同步命令,作为第一同步命令。
CN2006101095911A 2005-10-27 2006-08-14 一种实现数据同步的方法、系统、客户端及服务器 Active CN1956452B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN2006101095911A CN1956452B (zh) 2005-10-27 2006-08-14 一种实现数据同步的方法、系统、客户端及服务器
PCT/CN2006/002887 WO2007048354A1 (fr) 2005-10-27 2006-10-27 Procede, systeme, terminal client et serveur de realisation de synchronisation de donnees
CN200680011960.1A CN101160903B (zh) 2005-10-27 2006-10-27 一种实现数据同步的方法、系统、客户端及服务器
ES06805092.1T ES2458303T3 (es) 2005-10-27 2006-10-27 Método, sistema, terminal de cliente y servidor para realizar la sincronización de datos
EP06805092.1A EP1845688B1 (en) 2005-10-27 2006-10-27 Method, system, client terminal and server for realizing data synchronization
JP2008536915A JP5294867B2 (ja) 2005-10-27 2006-10-27 データ同期を実行する方法、システム、クライアントおよびサーバ
US11/848,111 US8015319B2 (en) 2005-10-27 2007-08-30 Method, system, client and server for implementing data sync

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN200510116802.X 2005-10-27
CN 200510116802 CN1794724A (zh) 2005-10-27 2005-10-27 在SyncML层实现数据同步的方法
CN2006101095911A CN1956452B (zh) 2005-10-27 2006-08-14 一种实现数据同步的方法、系统、客户端及服务器

Publications (2)

Publication Number Publication Date
CN1956452A CN1956452A (zh) 2007-05-02
CN1956452B true CN1956452B (zh) 2012-02-29

Family

ID=37967418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006101095911A Active CN1956452B (zh) 2005-10-27 2006-08-14 一种实现数据同步的方法、系统、客户端及服务器

Country Status (5)

Country Link
EP (1) EP1845688B1 (zh)
JP (1) JP5294867B2 (zh)
CN (1) CN1956452B (zh)
ES (1) ES2458303T3 (zh)
WO (1) WO2007048354A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101309196B (zh) * 2007-05-17 2012-09-05 株洲南车时代电气股份有限公司 交通系统的数据传输方法及数据点播系统
CN101374144B (zh) * 2007-08-21 2012-04-25 华为技术有限公司 控制会话的数据同步的方法、装置和系统
CN101123490B (zh) * 2007-09-21 2012-05-30 北京意科通信技术有限责任公司 用消息服务机制实现不同服务器间发收同步数据的方法
US20090083566A1 (en) * 2007-09-26 2009-03-26 Momenee Karen N Method and System for Using Meta-Information to Manage Data Object Synchronization
CN101516131B (zh) * 2008-02-18 2012-04-04 华为技术有限公司 一种数据同步的方法、系统和装置
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
CN101610276A (zh) * 2008-06-16 2009-12-23 华为技术有限公司 数据软删除、恢复和同步方法及终端和系统
CN101610225B (zh) * 2008-06-20 2012-01-25 华为技术有限公司 一种同步处理方法、系统和装置
US10303787B2 (en) 2008-10-21 2019-05-28 Microsoft Technology Licensing, Llc Forgetting items with knowledge based synchronization
CN101662760B (zh) * 2009-07-31 2011-12-28 中兴通讯股份有限公司 将终端数据进行备份的方法及系统
US20110119232A1 (en) * 2009-11-18 2011-05-19 Raytheon Company Synchronizing data between a client and a server
CN102624686A (zh) * 2011-11-28 2012-08-01 苏州奇可思信息科技有限公司 网络文件夹的双向自动同步方法
CN104639592B (zh) * 2013-11-15 2018-09-28 华为技术有限公司 云存储网关间信息同步方法和系统、及云存储网关
CN103701925B (zh) * 2013-12-31 2017-04-05 北京网康科技有限公司 资源同步管控方法
CN105915573A (zh) * 2015-12-12 2016-08-31 乐视移动智能信息技术(北京)有限公司 一种移动终端同步文件的方法、装置和系统
CN107959658B (zh) * 2016-10-17 2019-04-26 视联动力信息技术股份有限公司 一种网络会议数据同步方法及其系统
CN106649625B (zh) * 2016-12-06 2020-12-22 曙光信息产业(北京)有限公司 文件同步的方法和系统
WO2018235224A1 (ja) 2017-06-22 2018-12-27 株式会社東芝 ウェブアプリケーションシステム、サーバ装置、端末装置、およびプログラム
CN107861995A (zh) * 2017-10-18 2018-03-30 福建中金在线信息科技有限公司 Linux服务器代码实时同步方法及装置
CN107911434A (zh) * 2017-11-10 2018-04-13 浪潮软件集团有限公司 一种烟草数据同步系统及方法
CN108768828B (zh) * 2018-05-23 2021-04-06 广东微校信息科技有限公司 一种调整本地通讯录并映射微信企业号通讯录的同步方法
CN113204378A (zh) * 2021-04-21 2021-08-03 深圳市广和通无线股份有限公司 配置文件状态同步方法、装置、终端、服务器和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1392704A (zh) * 2001-06-15 2003-01-22 诺基亚有限公司 选择同步数据
CN1625865A (zh) * 2002-04-30 2005-06-08 诺基亚有限公司 用于管理树状数据交换的方法和设备
CN1656468A (zh) * 2002-04-02 2005-08-17 诺基亚有限公司 用于同步不同数据存储器中数据存储方式的方法和设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI104593B (fi) * 1996-09-30 2000-02-29 Nokia Networks Oy Hierarkkinen synkronointimenetelmä
JPH11232159A (ja) * 1998-02-13 1999-08-27 The Japan Reserch Institute Ltd ファイル管理方法およびファイル管理のためのプログラムを記憶した媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1392704A (zh) * 2001-06-15 2003-01-22 诺基亚有限公司 选择同步数据
CN1656468A (zh) * 2002-04-02 2005-08-17 诺基亚有限公司 用于同步不同数据存储器中数据存储方式的方法和设备
CN1625865A (zh) * 2002-04-30 2005-06-08 诺基亚有限公司 用于管理树状数据交换的方法和设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SyncML initiative.SyncML Representation Protocol 1.0.1.http://www.syncml.org/docs/syncml representv10120010615.pdf,2001,58-61.
SyncML initiative.SyncML Representation Protocol 1.0.1.http://www.syncml.org/docs/syncml representv10120010615.pdf,2001,58-61. *

Also Published As

Publication number Publication date
EP1845688A4 (en) 2008-07-09
JP5294867B2 (ja) 2013-09-18
EP1845688A1 (en) 2007-10-17
WO2007048354A1 (fr) 2007-05-03
JP2009514074A (ja) 2009-04-02
CN1956452A (zh) 2007-05-02
EP1845688B1 (en) 2014-01-29
ES2458303T3 (es) 2014-04-30

Similar Documents

Publication Publication Date Title
CN1956452B (zh) 一种实现数据同步的方法、系统、客户端及服务器
CN101160903B (zh) 一种实现数据同步的方法、系统、客户端及服务器
US8015319B2 (en) Method, system, client and server for implementing data sync
CN1656468B (zh) 用于同步不同数据存储器中数据存储方式的方法、设备和系统
US6694335B1 (en) Method, computer readable medium, and system for monitoring the state of a collection of resources
CN102882985B (zh) 基于云存储的文件共享方法
US7930272B2 (en) Bi-directional data modification with synchronization
KR100866076B1 (ko) 트리 데이터 교환의 관리를 위한 방법 및 장치
US20090112870A1 (en) Management of distributed storage
WO2018036324A1 (zh) 一种智慧城市信息共享的方法和装置
CN106407214A (zh) 分布式存储方法与系统
KR20060045897A (ko) 전자 장치들 간의 데이터 동기화를 위한 방법 및 시스템
CN102082818A (zh) 基于云存储的图形化和结构化数据存储及管理方法和系统
CN105868286A (zh) 基于分布式文件系统小文件合并的并行追加方法及系统
CN101567858A (zh) 一种数据同步的方法和系统
CN101272313A (zh) 进行文件级的虚拟化的中间装置
CN106101265A (zh) 一种在网盘和桌面端之间进行文件同步的方法
CN101689135A (zh) 使用联合储存库增加文件存储规模
CN103034738A (zh) 用于管理异构非结构化数据的关系型数据库及其创建和查询非结构化数据描述信息的方法
CN110309102A (zh) 一种批量文件生成方法及系统
CN109951567A (zh) 一种双数据中心应用部署方法
TWI385543B (zh) Data Synchronization System and Method for Establishing Mediation Data in Directory Service Format
CN101106537A (zh) 一种选择性下载电子邮件的方法
JP2021528800A (ja) 追跡識別子を用いたオブジェクト管理方法、装置、コンピュータプログラムおよびその記録媒体
US20070297458A1 (en) Efficient and layered synchronization protocol for database systems

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