CN102089760A - 同步服务器处理 - Google Patents
同步服务器处理 Download PDFInfo
- Publication number
- CN102089760A CN102089760A CN2009801160700A CN200980116070A CN102089760A CN 102089760 A CN102089760 A CN 102089760A CN 2009801160700 A CN2009801160700 A CN 2009801160700A CN 200980116070 A CN200980116070 A CN 200980116070A CN 102089760 A CN102089760 A CN 102089760A
- Authority
- CN
- China
- Prior art keywords
- data
- client
- server
- data recording
- clients
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了提供同步服务器处理的技术和系统等。对数据同步会话进行处理包括对来自一个或多个客户端的发起同步会话的请求进行处理,以更新一个或多个数据记录,所述一个或多个数据记录包括一个或多个数据项。根据同步会话的一个或多个属性,选择性地将一个或多个客户端识别为受信客户端和非受信客户端中的一种,其中,受信客户端被配置成支持由服务器针对一个或多个数据记录而定义的格局。检测一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
Description
技术领域
本申请涉及数据同步服务器处理。
背景技术
用作远程数据仓库的网络设施能够储存从本地客户端上载的数据。远程数据仓库中储存的数据可以被修改、管理、与其他客户端共享、用来构建网页等。客户端与服务器之间的数据同步可以用同步协议(例如开放移动联盟-数据同步协议OMA DS/SyncML(此前称为SyncML协议))来进行。OMS DA/SyncML是这样一种同步协议:它允许数据类(dataclass)的串行同步,并对于每个数据类会要求五个或更多个来回(roundtrip)。
发明内容
本发明公开了用于提供执行各种同步服务器处理的同步服务器的技术和系统等内容。
在一个方面,对数据同步会话进行处理包括:对来自一个或多个客户端的发起同步会话的请求进行处理,以更新一个或多个数据记录,所述一个或多个数据记录包括一个或多个数据项。根据同步会话的一个或多个属性,这一个或多个客户端被选择性地识别为受信客户端和非受信客户端中的一种,其中,所述受信客户端被配置成支持由服务器针对一个或多个数据类而定义的格局。检测这一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
各种实现方式可以视情况包含下述特征中的一项或多项。当检测这一个或多个客户端被配置成支持记录级差异化时,这一个或多个数据记录中改变的数据项可以被识别。另外,响应于对同步会话进行处理,可以针对与这一个或多个数据记录相关联的一个或多个改变而生成改变日志。另外,响应于对同步会话进行处理,与服务器相关联的数据仓库可以被更新,以反映在所生成的改变日志中被标识出的对于一个或多个数据记录的一个或多个改变。此外,还可以使用桥客户端来访问另一数据仓库,并根据与服务器相关联的经更新的数据仓库来修改被访问的该另一数据仓库中储存的数据记录。另外,访问和修改所述另一数据仓库可以包括对所生成的改变日志进行处理以更新所述另一数据仓库。此外,还可以从一个或多个客户端接收对于一个或多个数据记录的更新;并可以在这些客户端与服务器的数据库房之间识别一个或多个冲突。来自这些客户端的更新可以被混合。另外,还可以通过给请求同步会话的一个或多个客户端中最近的那个赋予优先级,来解决所识别的一个或多个冲突。此外,当检测到这一个或多个客户端被识别为非受信客户端时,可以从由服务器针对与非受信客户端相关联的一组改变中牵涉到的一个或多个数据记录而定义的格局检测与非受信客户端相关联的这组改变中的一个或多个差别(discrepancy)。来自客户端的改变的一个或多个属性可以包括用于数据记录中包括的数据项的唯一标识符。
在另一个方面,这份说明书中描述的技术可以被实现为计算机程序产品,其包含在计算机可读介质上,并可操作以使数据处理设备执行下述各种操作。该计算机程序产品可以操作以使数据处理设备对来自一个或多个客户端的发起同步会话的请求进行处理,以更新一个或多个数据记录,所述一个或多个数据记录包括一个或多个数据项。该计算机程序产品可以操作以使数据处理设备根据同步会话的一个或多个属性,选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种,其中,所述受信客户端被配置成对于由服务器针对这些数据记录而定义的格局实施关系数据完整性约束。该计算机程序产品可以操作以使数据处理设备检测这一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
各种实现方式可以视情况包括下述特征中的一项或多项。该计算机程序产品可以操作以使数据处理设备当检测到所述一个或多个客户端被配置成支持记录级差异化时,识别所述一个或多个数据记录中被改变的数据项。要求保护的该计算机程序产品可以操作以使数据处理设备响应于对同步会话进行处理,而生成针对与这一个或多个数据记录相关联的一个或多个改变的改变日志,并更新与服务器相关联的数据仓库,以反映在所生成的改变日志中被标识出的对于一个或多个数据记录的一个或多个改变。该计算机程序产品还可以操作以使数据处理设备使用桥客户端来访问另一数据仓库,并根据与服务器相连的经更新的数据仓库来修改被访问的所述另一数据仓库。该计算机程序产品还可以操作以使数据处理设备访问所述另一数据仓库,包括对所生成的改变日志进行处理以更新所述另一数据仓库。另外,该计算机程序产品还可以操作以使数据处理设备从这一个或多个客户端接收对于一个或多个数据记录的更新。在所接收的更新和与服务器相关联的数据库房处储存的数据记录之间识别一个或多个冲突。来自这些客户端的更新被混合,以确保每个参与者(客户端或服务器数据库房)接收对于数据集的一组更新,这组更新在被应用于接收者的数据库房时,会在所有的远程数据库房中产生相同的数据集。该计算机程序产品还可以操作以使数据处理设备通过给请求同步会话的一个或多个客户端中最近的那个赋予优先级,来解决所识别的一个或多个冲突。此外,该计算机程序产品还可以操作以使数据处理设备当检测到所述一个或多个客户端被识别为非受信客户端时,从由服务器针对与非受信客户端相关联的一组改变中牵涉到的一个或多个数据记录而定义的格局识别与非受信客户端相关联的这组改变中的一个或多个差别。同步会话的这一个或多个属性可以包括用于数据记录中包括的数据项的唯一标识符。
在另一个方面,一种系统包括:被配置成运行传输协议以及一个或多个同步协议的处理器,传输协议允许打开与一个或多个客户端装置(这一个或多个客户端装置被配置为在一个或多个同步模式中同步数据)的一个或多个连接,同步协议允许服务器通过所打开的一个或多个连接来与一个或多个客户端同步一个或多个数据类。所述一个或多个同步协议允许服务器执行各种操作。同步协议允许服务器对来自所述一个或多个客户端的发起同步会话的请求进行处理。这一个或多个同步协议还允许服务器根据同步会话的一个或多个属性,选择性地将一个或多个客户端识别为受信客户端和非受信客户端中的一种,其中,所述受信客户端被配置成支持由所述服务器针对这些数据记录而定义的格局。此外,这一个或多个同步协议还允许服务器检测这一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
各种实现方式可以视情况包括下述特征中的一项或多项。处理器被配置成运行所述一个或多个同步协议,从而当所述一个或多个客户端被配置成支持记录级差异化时,识别所述一个或多个数据记录中被改变的数据项。另外,处理器可以被配置为运行所述一个或多个同步协议,以响应于对所述同步会话进行处理而执行下述内容:针对与这一个或多个数据记录相关联的一个或多个改变而生成改变日志;更新与服务器相关联的数据仓库,以反映在所生成的改变日志中被标识出的对于一个或多个数据记录的所述一个或多个改变。处理器可以被配置为运行所述一个或多个同步协议,以使用桥客户端来访问另一数据仓库,并根据与所述服务器相连的经更新的数据仓库来修改被访问的数据仓库中储存的数据记录。另外,处理器还可以被配置为运行所述一个或多个同步协议以通过对所生成的改变日志进行处理而更新所述另一数据仓库,来修改所述另一数据仓库。另外,处理器还可以被配置成运行所述一个或多个同步协议,以从一个或多个客户端接收对于一个或多个数据记录的更新;并识别所接收的更新和与服务器相关联的数据库房处储存的数据记录之间的一个或多个冲突。来自所述一个或多个客户端的更新可以被混合。处理器还可以被配置成运行所述一个或多个同步协议,以通过给请求同步会话的一个或多个客户端中最近的那个赋予优先级,来解决所识别的一个或多个冲突。此外,该服务器还可以被配置成当检测到所述一个或多个客户端被识别为非受信客户端时,从由服务器针对与非受信客户端相关联的一组改变中牵涉到的一个或多个数据记录而定义的格局识别与非受信客户端相关联的这组改变中的一个或多个差别。同步会话的这一个或多个属性可以包括用于这些数据记录中包括的数据项的唯一标识符。
实现根据本发明的技术和系统可能提供各种优点。这里所述同步服务器处理可以允许以各种粒度(granularity)进行同步改变处理。例如,同步服务器可以访问字段级差异化,其中,只有被改变的数据(差异)被交换。这可以减少对其他客户端和服务器进行未改变数据项的不必要的更新。另外,同步服务器支持受信客户端和非受信客户端。当与受信客户端进行接口时,同步服务器可以跳过对于非受信客户端可能是必须的某些完整性检查,以改善服务器的可扩展性(scalability)。
附图说明
图1的框图示出将多个客户端类型和多个客户端与一个或多个服务器进行同步的示例系统。
图2示出了用于维护同步数据库和客户端状态的同步服务器的示例性内部模型。
图3的框图示出了用于同步服务器的示例性应用架构。
图4的框图示出了示例性的同步服务器系统架构。
图5a、5b、5c、5d、5e、5f、5g和5h示出了同步服务器处理的示例。
图6示出了用于执行RLD向FLD转换的示例性服务器处理。
各附图中相同的符号和标号表示相同的要素。
具体实施方式
本申请公开了用于对服务器与多个客户端之间的同步进行管理的技术和系统。
图1的框图示出了用于在服务器与多个客户端之间对数据进行同步的示例性系统100。系统100包括通过网络170连接到通用服务器140的同步服务器110。同步服务器110被设计成通过网络190来与一个或多个web客户端120进行接口。另外,同步服务器110还被设计成通过网络180来与一个或多个客户端装置130进行接口。同步服务器110连接到同步数据仓库112,使同步服务器110能够作为针对web客户端120和客户端装置130的数据库房而工作。数据库管理系统(DBMS)数据库是可以使用的数据仓库112的一种类型。通用服务器140被设计成通过网络160来与一个或多个客户端计算机150(例如台式机和膝上型计算机)进行接口。通用服务器140连接到通用数据仓库142,使通用服务器140能够作为通用数据库房而工作。网络160、170、180和190可以包括各种有线的和无线的网络,例如局域网(LAN)、广域网(WAN)、以太网、互联网等。网络160、170、180和190可以是单个网络,也可以各自是单独的网络。
通用服务器140可以包括提供web服务和互联网工具(例如Dotweb服务和工具)的web服务器。可用的web服务可以与台式机或膝上型计算机的操作系统(OS)集成在一起。例如,Dot服务和工具可以与OS紧密地集成。可用的Dot服务之一包括在线盘储存服务,该服务可以作为任何其他的卷(volume)而安装在OS台式机上。另外,其他用户的的公开部分也可以安装在台式机上。利用用户可以向台式机上载文件和从台式机下载文件。另外,可以使用户能够创建网页,这些网页可以被上载到并被公开。类似地,使用和库工具等,其他数据也可以被上载到和从下载。其他的Dot服务可以包括通过@mac.com的web电子邮件服务,其既支持邮局协议(POP)也支持因特网消息访问协议(IMAP)。
通用服务器140可以使用在基于web的分布式创作和版本控制(WebDAV)上分层的结构化数据同步语义(semantics)来使能计算机对计算机的同步。WebDAV是一组对超文本传输协议(HTTP)的扩展,它允许用户协作编辑和管理远程万维网服务器上的文件。WebDAV提供了对远程服务器或web服务器(例如通用服务器140)上的文档进行创建、改变和移动的功能性。WebDAV使得能够进行可以由任何计算机从任何地方访问的、基于web的一般文件储存。
在工作中,WebDAV协议使每个客户端能够锁定特定的资源,以防止不期望地被其他客户端修改。WebDAV还支持各种特性,例如创建、移除和查询与作者、修改日期等有关的信息。WebDAV支持姓名空间管理,以使资源(例如网页或其他文档)能够在服务器的姓名空间中被拷贝和移动。此外,WebDAV还允许创建、移除和列出资源。
在WebDAV上分层的结构化数据同步语义可以包括同步分布式创作和版本控制(SyncDAV)协议,该协议允许计算机对计算机的同步。例如,SyncDAV协议可以允许在OS X(Tiger/Leopard)中进行对同步。另外,SyncDAV协议还允许计算机与或与其他计算机进行同步,以对各种用户数据(例如地址簿条目、iCal日期、Safari书签、钥匙链(keychain)、邮件帐户、邮件规则、邮件签名、智能邮箱等)进行更新和同步。
web客户端120可以包括各种Doc应用。另外,客户端装置130可以包括移动装置,例如移动电话132、个人数字助理(PDA)134、手持数据处理装置136等。移动电话132可以包括智能电话和集成移动装置,例如手持数据处理装置可以包括音频回放装置,例如MP3播放器和装置。
同步是这样的处理:它通过对在上次已知两个不同数据库房一致之后这些数据库房中的每一者已发生的改变周期性地进行比较,而在这些数据库房之间维持一致性。数据库房可以包括web客户端120和客户端装置130作为一方,以及同步服务器110和通用服务器140作为另一方。为了对每一方同步数据,这些数据库房被配置有各种能力。例如,每个数据库房被配置成在受到请求时提供全部数据。另外,每个数据库房还被配置成识别和提供自从上次同步以来的改变。每个数据库房被配置成对要保持同步的格局(schema)达成一致。每个数据库房被配置成对于数据表示形式(representation)达成一致。每个数据库房被配置成对于同步基原(primitive,即添加、更新、删除)的语义达成一致。此外,每个数据库房还被配置成:如果在同步过程中发生问题,则回滚(rollback)到此前的状态,以避免破坏这些数据库房。
经过同步的数据遵循关系模型,并被划分成“格局”或“数据类”,这些“格局”或“数据类”对结构化数据类型(“实体”)的定义进行了分组。每个数据类由格局表示,格局是有关实体和属性的网络。给定数据类中的实体可以通过“关系”来相互引用。分立数据类中的实体之间的关系被禁用,因此每个数据类完全独立于其他数据类。从用户的角度来看,数据类可以看起来由分开的专门应用来管理。例如,“联系人”数据类可以主要由地址簿应用来管理,而“日历”数据类可以由日历应用来管理。
同步服务器110允许各种同步模式,包括慢速、复位和快速。客户端装置和服务器首次同步时,针对数据类的全部数据被交换,以使被认为相同的现有数据项“匹配”。为了针对随后的同步操作优化同步和网络带宽利用水平,客户端装置130和服务器110可以仅交换二者自从上次同步以来改变过的数据。这样,每一实体(即客户端装置或服务器)应当能够确定哪些本地改变应当被发送到另一实体。另外,每一实体应当能够检测是否发生了下述情形:所述情形要求在“快速”同步能够恢复之前交换更多数据。
当客户端装置130和同步服务器110首次同步以建立共同基准线用于随后的“仅差异数据”交换时,可以要求慢速同步模式。在慢速同步过程中,客户端装置130把针对数据类的全部数据发送到同步服务器110。服务器试图将这些数据项与同步服务器110已知的那些项匹配。未能执行正确的“身份匹配”可能给数据造成不期望的重复或合并。同步服务器110随后用客户端装置130处缺失的数据项来作出响应。
复位同步模式被用来用服务器的数据把客户端装置130上的数据类的全部数据复位。当数据结构已被推送到客户端装置130时,或者在服务器110或客户端装置130确定该装置的本地数据受到破坏的情况下,可以发生这种情况。客户端装置130不发送数据,服务器用针对该数据类的完整数据结构来作出响应。
快速同步模式是最高效的模式,尤其是在使用有限带宽的连接的时候。客户端装置130仅发送自从与同步服务器110上次同步以来改变过的那些数据。同步服务器110仅用客户端装置130外部已改变的那些数据来作出响应。
同步服务器110是可扩展的解决方案,以给多个web客户端120和客户端装置130提供对于被同步到中心数据仓库142的数据的读/写访问。同步服务器110对于针对多个web客户端120和客户端装置130的同步交易进行管理,以更新同步数据仓库112中储存的一个或多个数据记录。同步服务器110对同步会话(session)进行处理,经过更新的同步数据仓库112被与通用服务器140所关联的中心数据仓库142相同步。在对中心数据仓库142与同步数据仓库112进行同步时,同步服务器110作为通用服务器140的另一个客户端来工作。这样,对于通用服务器140而言,同步服务器110表现得如同计算机客户端150之一。
为了允许高效的、可扩展的同步服务,同步服务器110根据无需结构化查询语言(SQL)的嵌入式B-Tree来实现同步数据仓库112。同步数据仓库112是嵌入式数据储存装置,例如Berkeley它包括同步服务器110上的除了实际数据库之外的任何内容。Berkeley DB Java Edition(“Berkeley DB JE”或“BDB JE”或“JE”)是纯Java数据库(来自Corporation,Redwood City,CA)。Berkeley DB提供了高度可扩展、高性能、事务型的B-Tree数据库。实现方式不限于Berkeley DB。在一些实现方式中,也可以使用其他持久性(persistence)机制(例如Hibernate)。Hibernate是用于Java和.Net的对象/关系型持久性和查询服务。
Oracle Berkeley DB是开源可嵌入式数据库引擎,给开发人员提供了快速、可靠和本地的数据持久性。作为嵌入式数据库,Berkeley DB库直接链接到web客户端应用120中。在与Berkeley DB链接之后,web客户端应用120可以在本地通过简单的函数调用来访问数据,从而消除了客户端-服务器架构中通常使用的基于网络的协议的性能损失。类似地,由于Berkeley DB是非SQL数据库,所以应用开发人员可以定义具体的数据访问模式。考虑到由Berkeley DB提供的控制和选项数量,应用开发人员能够获得对于数据本身的更优化、可预计的访问。
本地同步数据仓库112为非关系型,没有SQL的开销。另外,本地同步数据仓库112是进程内(in-process)型,没有客户端-服务器的开销。本地同步数据仓库112可以提供对于数据的方便收集式接口。此外,使每个用户具有单独的库房还减小了风险。
同步服务器110对于二进制数据属性(例如服务器110定义的格局中由“数据”表示的特性)具有特殊情形处理。“com.apple.Contacts”格局中的示例是“com.apple.contacts.Contact”实体上的“图像”特性。尽管持久性库房能够对这些数据类型进行序列化(serialize)和储存,但是使用更紧凑的数据类型将它们与属性分开储存可能更为高效。同步服务器110可以在“Blob”目录中储存二进制大对象(BLOB),并通过数据类和记录ID来组织它们。BLOB是数据库管理系统中以单一实体的形式储存的二进制数据的集合。BLOB包括图像、音频或其它多媒体对象。在一些实例中,二进制可执行代码可以以blob的形式储存。对于BLOB的引用被转换成文件引用URI。为了实现这种情况,同步服务器110实现拦截器,该拦截器可以用于在来自数据提供者的任意数据持久留存在中心数据仓库142或同步数据仓库112中之前对其进行拦截和转变(mutate)。拦截器可以将BLOB数据转换成文件引用,并对实际BLOB数据进行序列化。这使得同步服务器110能够在执行同步的处理中尽早将大块数据从存储器中移除,从而改善可扩展性。它还允许同步服务器110与对于中心数据库142和/或同步服务器112具有直接访问能力的其他后端应用共享这些BLOB引用,从而在这些处理需要取得数据时进一步改善了同步服务器的性能。此外,储存到中心数据库142的BLOB引用可以由服务器处理140和110以直接只读访问的形式通过相应的网络160、190和180提供给客户端150、120和130。这使得同步服务器110能够与其他服务器处理分担对于访问大块数据的责任。BLOB可以以外部文件的形式储存。
同步服务器110依赖于用于代表同步数据仓库142的最小限度的格局,消除了对于每个同步会话维持记录快照的需要。例如,同步服务器110使用数据类,这些数据类包括一组相互关联的实体。同步服务器110通过使用文本或二进制的属性列表文件(plist)来支持各种数据类。在OS X Cocoa、NeXTSTEP和GNUstep编程框架中,plist例如是储存序列化对象的文件。plist常常用来储存用户的设定,类似于Microsoft的Windows注册表的功能。属性列表文件也被用来储存与组件(bundle)和应用有关的信息。用标准的操作系统(OS)特性(例如NSPropertyListSerialization类)容易产生和解析plist。例如,同步服务器110可以使用OS 10 plist并产生用于数据类的内部对象模型,以理解如何对每个数据类进行支持和同步。这允许同步服务器110在不需要同步服务器本身发生改变的情况下,通过修改服务器的配置来动态地支持更多的数据类。
图2示出了同步服务器110支持的示例性数据模型。同步服务器110为每个数据类产生对象数据模型,其代表实体记录、属性、记录改变(添加、修改、删除)、属性改变(设定、清除)和id映射。同步服务器110既以结构化数据库房的形式又以SyncEngine的形式呈现其自身,同步服务器110的内部持久性模型对下列要求进行平衡:(1)真值(truth)访问(任何数据类和/或实体的当前版本)210;(2)历史管理(沿有关事件的时间线的字段级差异)220;(3)客户端状态(历史中最后一次得知的位置、同步模式、客户端类型)230以及(4)客户端装置130的装置细节240。在同步服务器的格局中,这些要求中的每一者在逻辑上是分开的。
真值数据210包含用于用户的完整的当前数据集。真值数据210储存在中心数据仓库140中。对于希望简单地得到当前数据的客户端,真值数据210使得能够用最小化的SyncEngine逻辑进行迅速的数据访问。真值数据210可以包括一个或多个数据记录212,这些数据记录212包括各种实体,例如全球唯一标识符(GUID)、实体名称(entity name)、dataclassName、deleted、creationTime、modificationTime等。每个记录212与各种参数214(例如名称和值)相关联。
真值历史220呈现事件的有序时间线(timeline)(根据History.id排序)。真值历史220包括具有各种实体的一个或多个历史数据222,这些实体包括ID、recordId、dataclassName、clientId、类型(type)、timestamp、synthetic等。每个真值历史数据222与一个或多个历史属性224(例如动作和名称)相关联。真值历史还包括冲突数据226。为了避免冗余,实际记录值并不储存在真值历史中。例如,同步服务器110不是版本控制(versioning)系统。相反,同步服务器110储存与下述内容有关的信息:什么记录和属性发生了改变(例如FLD);是否添加、修改或删除了记录;哪个客户端进行了这种改变。冲突在逻辑上也落在这个范围内。但是,冲突可以不在真值中持续。
客户端状态230可以包括用于使给定的客户端以及每个数据类的同步状态维持存在的各种实体。客户端状态实体包括GUID、名称、帐户(account)、类型、状态、isEnabled、isRegisteredWithBridgeStore、firstSyncDate、lastSyncDate、buildversion、创建时间、修改时间、deviceinfor或activation。数据类232与各个客户端相关联。这些数据类包括名称、anchor、fastSync、lastSync、last reset、lastSyncState、hash、lastSyncHistory、enabled、创建时间(creation time)、pending updates、pendingIdmapping和deviceDataclass State。
另外,每个数据类与sync Anchor 236数据类相关联。Sync Anchor信息可以包括generation、historyid、syncMode、syncDirection和changelogVersion。数据类可以与dataclass history 238相关联。dataclass history 238可以包括recordId、类型、time stamp。此外,每个数据类还可以与IdMapping 239相关联。
装置状态240可以包括DeviceInfo 242和Activation 244,它们与客户端数据232有关。Activation 244可以包括msisdn、carrier和notifyelements。另外,装置状态240可以包括DeviceDataClassState 246,DeviceDataClassState 246包括各种实体(包括名称、anchors、flter、creationTime和modificationTime)。装置或客户端状态240可以包括RecordidMap 248,RecordidMap 248包括各种数据实体(包括LUID、GUID、dataclass:clientID、创建时间和修改时间。DeviceDataclassState 246可以包括DeviceAnchorType 250和过滤器信息(例如map和enabled)。这里的这些实体由OTA客户端130专门使用。
受信客户端
同步服务器110被配置成既支持受信客户端又支持非受信客户端。在与受信客户端接口时,同步服务器可以跳过某些完整性检查,这些完整性检查对于非受信客户端而言可能是必需的。受信客户端是满足与同步服务器110之间的某种契约的客户端。例如,受信客户端支持将同步服务器ID用作固有ID(native ID)。这样,受信客户端的局部唯一标识符(LUID)被由同步服务器110产生的通用唯一标识符(UUID)代替。另外,受信客户端支持同步服务器110的全部实体和属性。而且,受信客户端保证根据同步服务器110的格局来维持所注入的改变。同步服务器110所支持的格局或数据类包括联系人、日历和书签。
在与非受信客户端接口时,同步服务器可以试图处理由这些非受信客户端所发送的改变。同步服务器110可以查看由非受信客户端所请求的数据改变的结构,并决定所请求的数据改变是否合法(与同步服务器110的要求相符)。另外,同步服务器110还可以决定所请求的记录改变对于所识别的格局而言是否有意义。例如,同步服务器可以确定这些非受信客户端是否在试图添加不具有所需属性的记录。同步服务器可以确定这些非受信客户端是否在通过设定与不存在的有关ID之间的关系而尝试修改记录。当同步服务器110检测到非法的数据改变请求时,同步服务器110对该改变进行标记。同步服务器110所不能改变的那些改变被拒绝。在一些实例中,某些非法的数据改变可以由同步服务器110修理(fix)并接受,而无需明确的客户端干预。
例如,下述的非法数据改变可以由同步服务器110修理。考虑由非受信客户端发送的添加联系人和电话号码的请求。该联系人与电话号码之间存在“对多(to-many)”关联性。该联系人条目例如可以被指派给多个电话号码。对于首要电话号码,由于联系人具有一个首要电话号码,所以关联性是一对一的。当非受信客户端添加联系人和电话号码时,该电话号码被链接到该联系人。该电话号码自身具有指向相关联的联系人的联系人关联性或反向指针(back pointer)。这样,当给联系人添加电话号码时,应当指明这些关系性。这些关联性中的许多具有逆(inverse)。联系人数据类中电话号码的关系对于电话号码实体(这是联系人关联性)具有逆关联性。例如,“contacts.phone_numbers”可以表示一种关联性,该关联性的逆关联性可以表示为“phone_number_entity.contact_property”逆关联性。当这些关联性中的一项或多项缺失或者不正确时,同步服务器110可以校正缺失的或不正确的关联性,例如逆关联性。
在另一示例中,联系人实体(例如Foo)可以引用电话号码实体“Bar”。在非受信客户端中,电话号码实体Bar的联系人反向指针可能不正确地反向引用到联系人实体Baz。同步服务器110可以校正这种不正确的反向指针。受信客户端不会产生这种不正确的关联性。
因此,在同步服务器110正与非受信客户端接口、并且用于逆关联性的反向指针未被设定时,同步服务器110考虑这种情况并确定这不是合法的。另外,同步服务器110可以得知能够做什么来修理这种错误。同步服务器110将与联系人实体的电话号码有关的属性集与指向引用该电话号码的联系人实体的反向指针进行合成。这样,对于非受信客户端,同步服务器110可以通过对同步服务器110可接受的属性改变进行合成来提供帮助。另外,同步服务器110还可以向非受信客户端通知已经根据同步服务器的推断执行了这种修理。
同步服务器110可以根据推理来确定客户端是否是受信的。某些客户端由于使用特定的协议而被识别或检测为受信的。例如,软件开发工具包(SDK)客户端120由于使用基于SDK的协议而受信。SDK是一组开发工具,其使得软件工程师能够针对某些软件包、软件框架、硬件平台、计算机系统、视频游戏控制台、操作系统或类似的平台而创建应用。另外,SyncDAV客户端150也是受信的。SyncDAV是基于WebDAV的有线协议,用于将来自计算机客户端150(例如)的改变储存在通用服务器140(例如Dot服务器)上。
同步服务器110还可以动态地确定客户端是否是受信客户端。同步服务器110可以通过检测当前同步的属性来作出这种确定。例如,非受信客户端可能已被更新(例如通过更新固件)而作为受信客户端工作。那么在下一次同步时,同步服务器110就可以检测到该客户端是受信客户端。另外,例如,同步服务器110还可以检测该客户端是否发送LUID或UUID。另外,同步服务器110还可以针对客户端来检测在装置信息的客户端定义中设定的标志。此外,同步服务器110还可以检测该客户端正在使用慢速同步模式,并从而检测这些改变是RLD而不是FLD。另外,客户端可以通过同步服务器客户端SDK 320来与服务器110进行接口,并从而表明与公开的SDK相符的那些客户端是受信客户端。在一些实现方式中,受信客户端的库可以被公开以设定可接受的受信客户端的标准。
每个被同步的数据具有通用唯一记录ID即UUID。为了高效,同步服务器110可以使用OS X上的SyncServices的UUID。或者,例如,客户端装置130上的应用可以给数据使用其本地唯一ID(LUID),以提高本地数据库房效率。
服务器120允许客户端装置130(数据库房)在需要时使用其自身的LUID来引用数据项。在此情况下,服务器120维护LUID对UUID的映射,以使客户端装置130能够通过使用其自身的本地ID来透明地引用全局记录。当针对数据类接受了“慢速”或“复位”同步模式时,服务器120重新建立新的映射
同步服务器110为受信客户端设定权威同步服务器UUID。通过为每个数据实体设定权威UUID,同步服务器110可以废除LUID一全球唯一标识符(GUID)映射。对于非受信客户端,同步服务器110根据需要维护LUID-GUID映射248。LUID-GUID映射使得外部客户端能够通过客户端自身的本地标识符来访问数据实体。但是,这对于如何表示改变需要附加的登录(bookkeeping)。通过要求受信客户端(例如web应用)支持同步服务器的UUID,可以避免高开销的LUID-GUID映射。这例如能够减少同步服务器110的处理工作。
当客户端正在添加的数据项已存在于同步数据仓库112中时,同步服务器110可以执行身份匹配。当检测到身份匹配时,同步服务器110向客户端通知:应当通过同步服务器110的新UUID来引用该数据项。例如,考虑试图对类似数据集(例如一组地址联系人)进行同步的两个这些是使用SyncDAV协议的受信客户端。每个会将其自身的UUID指派给这些数据实体。当第一与通用服务器140进行同步时,根据身份匹配,来自该第一的UUID被接收,因为该数据实体尚不存在。这个同步被通知给同步服务器110,因而同步服务器110执行SyncDAV同步,以获得所添加的、由第一指派了UUID的数据实体。然后,当第二对同一数据集进行同步并通过慢速同步而提供其自身的UUID时,同步服务器110不接受该新的UUID,并指派来自第一的其他UUID值。
字段级差异化(field level differencing)与记录级(record level)差异化
数据中的差异可以以各种粒度(granularity)来受到同步。在交换同步数据时,对于记录级差异化(RLD),客户端装置130和web客户端120可以为每个改变的记录发送完整数据。或者,对于字段级差异化(FLD),可以只发送各个改变的记录的那些改变的字段。FLD可以比RLD优选,尤其是当数据记录包括许多个字段或者包含大量数据(例如联系人数据类中的图像)的时候。
服务器110可以动态地既支持从客户端装置130接收的数据的RLD表示形式又支持其FLD表示形式。改变的数据表示形式表明客户端装置130和/或web客户端120对于给定的数据类正在使用RLD还是FLD。当维护元信息(meta information)以支持FLD的复杂性并不合理时,这给客户端装置数据库房实现方式提供了最大的灵活性。
当接收RLD改变时,为了处理、储存和通信的效率,同步服务器110在内部将这些改变转换成FLD格式。同步服务器110期望RLD客户端装置130发送完整的记录。受客户端装置130支持、并且从客户端装置的数据记录中缺失的数据字段被假定已被客户端装置130清理/删除。但是,可以提供一种机制,使得客户端装置130能够表明某些数据字段异常值未改变,而不发送这些值。
RLD客户端可以发送整个数据集,其中具有用以表明所改变的数据实体的标志。FLD客户端只发送所改变的数据实体。在某些实现方式中,受信客户端可以只发送FLD改变。使用FLD减少了带宽使用率,以及对于中心数据仓库142具有访问能力的其他客户端和服务器的不必要的更新。
冲突解决
当两个或更多个客户端试图改变相同的数据实体和/或属性时,可能存在冲突。例如,当两个客户端试图改变联系人条目的姓时,同步服务器110试着自动解决该冲突。在确定要接受哪个改变时,可以使用时间排序。同步服务器110试图确定最近的改变,并给该改变分配较高的优先级。
但是,时间排序可能是棘手的。例如,同步服务器10可能不能信任客户端的内部时钟,所以使用时间戳是有风险的。另外,时间排序可能受到各个客户端所用的网络的质量的影响。总的来说,在检测到冲突时,同步服务器110给发起当前同步的那个客户端分配较高的优先级。
在某些情形中,某些改变(即使是更近的)也可以被认为较弱,或者应当被赋予比更旧的改变更低的优先级。例如,改变的类型,RLD或FLD,可以对哪个改变取得较高优先级有影响。首先,同步服务器110检测来自RLD客户端的联系人改变,该联系人具有名和姓。然后,检测到来自FLD客户端的、添加中间名的改变。当该RLD客户端发送新的电话号码时,RLD客户端尚未看到所添加的中间名。因此,尽管这是最近的同步,但空的中间名没有被检测为清理或删除,因为同步服务器110明白该改变来自RLD客户端。在这种实例中,在RLD向FLD的推断过程中,同步服务器110不删除中间名。因此,同步服务器110所合成的改变(所推断的清理)即使更近,也被认为是较弱的改变。虽然用户知道用户输入这些改变的顺序,但是该顺序对于同步服务器110可能并不很明显。
将中心数据仓库与同步数据仓库进行同步
SyncDAV改变日志是一些文件,这些文件表明一组记录改变。单一的记录改变涉及数据的一条记录,并表示三种操作之一:(1)添加,(2)修改,或(3)删除。每个修改改变具有属性改变,这些属性改变包括属性名称、属性值、以及动作。另外,动作可以是设定或清除。无论客户端何时被与同步服务器110同步,改变日志都被生成。所生成的改变日志包括最新的记录改变以及头部(header)。另外,所生成的改变日志受到压缩。例如,在OS 10 Cocoa类中,称为NSArchiver的类被实现,以取得对象的对象图表,并将其序列化到存储器或文件中。为了减小空间,对于重新发生的对象执行游程符号化(run-length tokenization)。这样,每个对象被编码一次,每个经过编码的对象可以被称为其符号(token)。符号可以包括值,所述值包括数字。
改变日志可以相当复杂,并可以不是开放格式。NSArchiver在Java中被再次实现,以使同步服务器客户端SDK库320客户端能够理解Cocoa类,例如NSArray和NSMutableArray;NSDictionary和NSMutableDictionary;NSSet和NSMutableSet;NSData和NSMutableData;NSDate和NSCalendarDate;NSTimeZone和NSLocaltimeZone;NSColor;NSURL等。
同步服务器110可以将这些类和存档链接读取到通用服务器140(例如OS 10服务器)。这些改变日志被用来在同步服务器110与通用服务器140或网络储存装置(例如)之间提供桥梁。这些改变日志是针对具有其自身关系完整性的数据类的序列化改变集。这些改变日志不引用尚不存在的实体。
同步服务器100被配置成读取这些改变日志,并在中心数据仓库142(例如SyncDAV数据库房)与客户端装置130(例如)和web客户端120(例如web应用)之间作为桥梁。改变日志被串行地存储并且是加性的(additive)。通过对一系列改变日志进行处理,同步服务器110处理一系列事务。这样,当同步服务器110完成对某个数目的改变日志的处理时,同步服务器110可以获取中心数据仓库的版本。当同步服务器110处理全部这些改变日志时,同步服务器可以获取中心数据仓库142的当前版本。
同步服务器110对这些改变日志进行序列化并与中心数据仓库142进行同步。在这种处理过程中,同步服务器110被呈现给通用服务器140(例如SyncDAV服务器),就像另一个SyncDAV客户端150对于SyncDAV服务器那样。这样,对于SyncDAV服务器而言,同步服务器110例如表现得如同另一个客户端。
SyncDAV协议被用于通过WebDAV基原对同步语义进行分层。WebDAV支持获取(get)、放入(put)、删除和锁定操作。这些是用于WebDAV服务器(例如)的标准功能。作为WebDAV服务器而工作的通用服务器140可以在例如两个之间对SyncDAV改变进行同步。
当与中心数据仓库142进行同步时,在与同步的数据类和客户端相关联的WebDAV资源上设置锁。这有效地防止了其他客户端在该同步操作过程中对同一数据类进行同步。这样,SyncDAV协议可能引起与序列化之间的各种竞争。
同步服务器110允许对中心数据仓库142进行迅速的访问。这样,同步服务器110的那些客户端不必知道同步。同步服务器110将这些客户端像单独的数据库房那样对待。
另外,同步服务器110从SyncDAV库房(中心数据仓库142)断开。为了促进快速和高效的同步,同步服务器110不能承担在提供用于web应用客户端120的数据之前等待客户端完成同步。这样,实现了用于服务器110的本地同步数据仓库112(例如Berkeley数据库),它能够作为中心数据仓库142(SyncDAV数据库房)的备份。
为了使两个数据仓库(同步数据仓库112和中心数据仓库142)保持同步,产生了桥客户端。在SyncDAV中,每个同步客户端必须在SyncDAV数据库房(中心数据仓库142)中有表示形式。由于同步服务器110表现得如同SyncDAV客户端150一样,所以同步服务器110创建了这些表示形式之一。这样,对于通用服务器140(SyncDAV服务器),同步服务器看起来类似于另一个
同步服务器110与中心数据仓库142执行无缝动态同步,以避免将任何其他客户端锁在外面。例如,客户端装置130(例如iPhone)可能正在与同步服务器110更新联系人。同时,另一客户端(例如)可能正在与通用服务器140(SyncDAV服务器)执行对于相同联系人的所计划的同步。中心数据仓库142(SyncDAV数据库房)可以由该锁定,并且同步服务器110注意到该锁定。同步服务器110不阻止来自iPhone的改变进入中心数据仓库142。由于同步服务器110包括内部同步数据仓库112,所以同步服务器110更新其内部同步数据仓库112。此后,当与的同步完成时,同步服务器110接收由后端处理提供的通知,该通知表明中心数据仓库142(SyncDAV服务器)具有需要更新的改变。这触发了这两个数据仓库之间的同步,这两个数据仓库都取得这些改变。通过能够向内部同步数据仓库112进行更新,可以避免当中心数据仓库142(SyncDAV数据库房)忙于对来自SyncDAV客户端的改变进行同步时阻止客户端装置(例如iPhone)。
在一些实现方式中,当同步数据仓库112受到破坏时,同步服务器110可以通过对SyncDAV改变日志进行序列化和处理,来从中心数据仓库142恢复数据。中心数据仓库142可以对同步数据仓库112做同样的事情。这样,每个数据仓库可以用作另一数据仓库的备份。
同步服务器110用传输协议(例如HTTP传输协议)与这些客户端装置130和这些web客户端120相连,以完成安全数据连接。例如,通过该传输协议,同步服务器110使用空中传送(over-the-air,OTA)同步协议来允许经连接的客户端装置130与同步服务器110之间的数据同步。所同步的数据可以包括各种数据类,例如联系人(例如地址和电话号码)、日历等。数据同步可以通过网络180来执行。共同在审的美国专利申请No.__/____(题为“数据同步协议,代理人卷号No.18814-104001)中描述了同步服务器110支持的示例性OTA同步协议和格局,该申请的全部内容通过引用方式结合于此,作为本说明书的一部分。
通过该传输协议,同步服务器110可以用同步服务器客户端SDK库320来与web客户端120同步。在一种实现方式中,同步服务器客户端SDK库320可以被实现为使用Java平台的jar文件。例如,同步服务器110可以实现同步服务器客户端SDK库320来确保web客户端120表现得如同完全支持同步服务器的格局和数据类的受信客户端。同步服务器客户端SDK库320可以被实现来执行全部的关系完整性检查,在web客户端120上产生要由同步服务器110接受的UUID。同步服务器客户端SDK库320可以对设定这些关联性进行处理,并确保其向同步服务器110传输的记录与将该记录传输到同步服务器110之前相同。
另外,同步服务器客户端SDK库320还处理异常,例如在同步服务器那方处理的数据仓库复位异常。当客户端装置130推送整个数据集时,以及随后当web客户端120试图更新该数据集时,web客户端120接收异常消息,该消息表示该web客户端必须在客户端装置130能够发送该更新之前从中心数据仓库重新装载该数据集。由于web客户端120被检测为受信客户端,所以关系完整性检查从同步服务器110卸载到同步服务器客户端SDK库320。另外,同步服务器客户端SDK库320保护web客户端120不受同步服务器110的复杂性困扰。
同步服务器客户端SDK库320实现同步服务器格局的完整的对象模型。在一些实现方式中,用于每个数据类的Java类被生成。例如生成用于联系人的Java类、以及用于e-mail地址的Java类。然后,同步服务器SDK库320设定email地址与联系人之间的关系。当web客户端120要求同步操作时,同步服务器客户端SDK库320将这些改变推向同步服务器110。同步服务器客户端SDK库320解对于同步服务器110格局所需的属性和关系,并保证同步服务器客户端SDK库320的用户遵循这些所需的属性和关系。当客户端试图提交包含坏数据(例如在同步服务器格局之外)的改变时,同步服务器SDK库320向用户发送运行时错误(runtime error)。这样,在该格局中实施校正的责任可以从同步服务器的CPU卸载。通常在web应用中,同步服务器客户端SDK库320可以在另一个CPU上运行。
通过允许每天至少1.5M个同步,同步服务器110可以改善后端可扩展性(scalability)和简易性。另外,同步服务器110还支持对于同步服务器110的滴流同步(trickle-sync)改变。
图3的框图示出用于同步服务器110的示例性应用架构。同步服务器110包括各种组件,这些组件运行本说明书中所述的各种功能。例如,同步服务器110可以包括Java NSArchivers组件302、通知机构304、管理接口306、客户端协议机构308、差异化引擎(Mingler、Conflicts)310、公共组件312、SyncDAV改变日志组件314、格局(定义、有效性)组件316和真值(持久性)组件318。服务器110通过协议340连接到客户端SDK 320。SDAP协议340可以包括有线协议,例如同步服务器客户端SDK。
同步服务器客户端SDK 320是这样的库:该库通过同步服务器数据访问协议(SDAP)提供对同步服务器的访问,而不需要客户端120具有专门的协议知识。SDAP 340是用于访问同步数据仓库112并执行同步的协议。SDAP由下述内容组成:用于同步数据仓库112的数据和改变的XML格局;HTTP协议语义,这些语义定义了用于数据类、记录和属性的URL方案;用于HEAD、GET、PUT和DELETE的语义;定制的X-header,用于交换专用于同步的数据,例如客户端id和同步锚(anchor)。
SDAP 340使得客户端120能够与同步服务器110进行接口(aka Metropolis)。同步服务器110支持基本的和摘要的(digest)认证。web客户端120与同步服务器110之间的通信不被加密,因为web客户端(例如web应用)120与同步服务器110都在内部部署在服务器那方。SDAP可以支持基本认证。同步服务器110或者单独的网关服务器可以包括认证和会话处理,以支持与空中传送(OTA)客户端130进行同步。另外,SDAP为注册设备以及针对各个数据类许用/禁用同步提供便利。
SDAP使得web客户端120能够与web服务器110同步并访问同步数据仓库112,而无需复杂的客户端同步状态机。SDAP允许对同步数据仓库112和中心数据仓库142中经过同步的数据进行无状态(stateless)访问,其中,响应时间目标在低于500毫秒的范围。SDAP能够代替各个服务器(例如Dot Mac服务器(Replicant,SFDE和WOA))之间任何现有的协议(例如Sync API)。另外,SDAP还允许同步各种数据类,包括联系人、日历和书签。扩展的示例性数据类包括“com.apple.Contacts”、“com.apple.Calendars”和“com.apple.Bookmarks”。此外,SDAP还使web应用120和客户端装置130能够与同步服务器110进行滴流同步。希望使用SDAP的客户端应用(例如web客户端120)必须支持字段级改变,并将属性全体保持为与API所发送的一样。
同步服务器客户端SDK 320可以是这样的Java库:该库通过SDAP提供对于同步服务器110的访问,而无需专门的协议知识。在一些实现方式中,同步服务器客户端SDK 320可以使用其他语言和技术来实现。同步服务器客户端SDK 320提供用于主数据类(书签、联系人和日历等)的对象模型,并使得客户端能够与同步服务器同步数据而不必具有它们自身的数据库房。如上所述,为了改善服务器的可扩展性,SDK将保证实现关系完整性的任务从服务器卸载到客户端(使之成为受信客户端)并消除了服务器上对于LUID-GUID映射的需要。同步服务器客户端SDK被.Mac联系人和日历面向web架构(WOA)用来与同步服务器110进行同步。
SDAP定义其自身的XML格局以描述同步数据仓库112和同步操作,例如“记录”和“属性”的改变。用于SDAP的XML格局遵循同步服务器110的数据模型。例如,该XML格局可以代表:实体记录;属性;记录改变,例如添加、修改和删除;属性改变,例如设定和清除;id映射。
同步服务器客户端SDK 320包括与同步服务器110的同步会话过程中可以使用的各种组件。同步服务器客户端SDK 320可以包括同步服务器110所定义的数据类或所支持的格局。这些数据类可以包括联系人322、日历324以及书签326。这些数据类各自包括通过关系而组织的数据项。同步服务器客户端SDK 320还包括SDAP客户端组件328、共用(XML、记录、改变)组件330和实体库房332。
图4的框图示出了示例性的同步服务器系统架构。该系统架构包括一个或多个客户端410和412,这些客户端与通用服务器140进行接口,以在一个或多个同步会话中对一个或多个数据记录进行同步。客户端410、412可以包括计算机,例如运行OS X Tiger和Leopard的计算机。这些客户端410和412可以是连接到一个或多个Dot服务的Dot客户端。
客户端410和412可以通过网络420而向通用服务器140进行HTTP连接。网络设备414(例如路由器)管理至目的地的连接。通用服务器140可以包括SyncDAV服务器,该服务器提供在线储存服务器,例如通用服务器140连接到中心数据仓库142,该仓库作为最新和最完整的数据库房而工作。当更新可用时,响应于由客户端410、412发送的改变,同步服务器110得到通知。然后,同步服务器110可以处理对于通用服务器140的同步会话,以接收这些更新。
同步服务器110可以连接到其他的Dot服务器416,以提供额外服务以及定义所支持的数据类和格局。例如,联系人、日历和书签数据类可以被支持。此外,还可以提供单独的服务器418和/或处理器来管理同步服务器110。
图5a、5b、5c、5d、5e、5f、5g和5h示出了用于对同步会话进行处理的示例性处500。在协商阶段510中,同步服务器110从一个或多个客户端120、130等接收(511)发起同步会话的请求。从这一个或多个客户端120、130等接收的请求包括所需的数据类以及对于该数据类建议的同步模式。例如,操作移动设备(例如)的用户可以在联系人数据类中输入新的名称。响应于所输入的新的名称,发起同步会话的请求可以从该客户端向同步服务器31发送,以发起对于同步服务器110的同步会话。同步服务器110判定(512)所建议的同步模式是否可接受。当同步服务器110判定为所建议的同步模式不可接受时,同步服务器110将可接受的同步模式(慢速或快速)通知(513)给请求发起同步会话的这一个或多个客户端120、130。当同步服务器110判定为所建议的同步模式可接受时,同步服务器110向请求发起同步会话的客户端通知(514):所建议的模式被接受。
在聚集阶段520,同步服务器110判定(521)是否有其他客户端可以加入当前的同步任务。当前的同步任务可以包括对联系人数据类进行同步。当有其他客户端可用时,同步服务器110判定(522)该用户是否在中心数据仓库142中具有数据并判定(523)该数据是否未被锁定。在未锁定时,使用(524)桥客户端来代(proxy)对于中心数据仓库142中的用户数据的访问。例如,当操作的用户在中心数据仓库142(例如SyncDAV数据库房)中具有联系人数据类时。同步服务器110检查中心数据仓库中的联系人数据类是否未被锁定。当同步服务器110判定为联系人数据类未被锁定时,代理对中心数据仓库的访问的桥客户端被添加到同步任务,作为“对等者(peer)客户端”。同步服务器110还判定(525)所聚集的对等者是否希望推送同步数据。当所聚集的对等者希望推送整个数据集的代替数据(例如对等者希望推送真值)时,用于发起者的同步模式被重新协商(526)。其他对等者将被要求接受“复位”同步模式。
在拉取(pull)阶段530,同步服务器110接收(531)来自所有客户端120、130等的改变。同步服务器110基于服务器110所定义的格局来验证(532)所接收的改变。同步服务器110判定(533)这些客户端是受信的还是非受信的。当检测到某客户端是非受信客户端时,产生(534)综合改变以实施该格局的关系完整性。另外,基于同步会话的一个或多个属性,这一个或多个客户端120、130被选择性地识别(504)成受信客户端和非受信客户端中的一种。受信客户端被配置成履行与同步服务器110的某种契约。例如,受信客户端支持将同步服务器ID用作固有ID。这样,受信客户端的本地唯一标识符(LUID)被由同步服务器110产生的通用唯一标识符(UUID)代替。另外,受信客户端支持由同步服务器110定义的全部实体、属性和数据类。而且,受信客户端可以确保根据正被同步的数据类的格局来维持所注入的改变。同步服务器所支持的格局或数据类例如包括联系人、日历和书签。
在混合(mingle)阶段540,同步服务器110对于每个客户端执行下述操作:(1)判定(541)来自中心数据仓库142的何种更新应当去往各个客户端;(2)判定(542)来自各个客户端的哪些改变应当被发送到对等者;以及(3)识别(543)来自中心数据仓库142或对等者的哪些改变彼此冲突。根据这种识别,产生(544)一个或多个冲突。每个冲突包括冲突中的记录id、客户端1(发起者)、客户端2(对等者或真值)、冲突属性名称的集合、公共属性名称的集合、“弱”属性名称的集合等。根据事件的相对时间排序,所产生的冲突得到解决(545)。例如,来自发起者的改变被看作“晚于”来自中心数据仓库142的和来自所聚集的对等者的改变。所识别的“较晚的改变”通常“赢得”该冲突(即,胜者的改变超越(override)败者的改变)。当来自发起者的改变相对于来自所聚集的对等者的改变被看作“弱”时存在例外。当冲突得到解决时,来自胜者(例如获胜的客户端、获胜的所聚集的对等者或获胜的中心数据仓库142等)的全部冲突属性被应用于该冲突的记录。这种结果被应用(546)到中心数据仓库和落败的客户端、落败的所聚集的对等者等,作为更新。
当两个或更多个客户端与同步服务器进行同步以更新或改变相同的记录时,可能发生冲突。例如,同步服务器110可以处理与这些客户端之一的用于更新一个或多个数据记录的同步会话。同步服务器110可以处理与这些客户端中的另外一者的用于另外更新这一个或多个数据记录的另一同步会话。当在两个同步会话之间检测到一个或多个冲突时,通过向这些同步会话中最近的一者赋予优先级,所识别的冲突可以得到解决(514)。这样,由最近的同步会话所牵涉的客户端发送的改变战胜由另一客户端所发送的较早的有冲突的改变。如上所述,这种一般规则可能存在例外。例如,在一些情况下,较早的FLD改变可以战胜较近的RLD改变。
当没有检测到冲突时,同步数据仓库112被更新(512)以反映来自(一个或多个)同步会话的改变。另外,在冲突被解决之后,同步服务器112也可以被更新。
在推送阶段550,同步服务器110向所有的对等者发送(552)更新。在提交(commit)阶段560,同步服务器查询(562)全部的对等者,以确定(564)这些对等者是否能够提交更新和id映射。当检测到这些对等者不能提交时,同步服务器110保存(566)更新和id映射表,以便所保存的更新和id映射表可以在该客户端下次请求发起同步会话时被发送到客户端。同步服务器110还用锚和下一同步模式来更新(568)对等者同步状态。
在通知阶段570,同步服务器110判定(572)改变是否已被施加到中心数据仓库142。当检测到这些改变已被施加到中心数据仓库142时,同步服务器110向其他已知客户端通知(574)所改变的数据类510向中心数据仓库142施加了何种同步。
图6示出了用于执行RLD向FLD转换的示例性服务器处理。当处理与支持RLD的一个或多个客户端120、130之间的所请求同步会话时,同步服务器110也可以执行RLD向FLD的转换。任何下述所支持属性都应被作为从客户端120、130的清除(CLEAR)而对待:所述属性在中心数据仓库142储存的记录中具有值但在客户端RLD记录改变中没有设定(SET),并且在中心数据仓库历史中也没有要作为更新而被发送到客户端的针对所述属性的SET操作。来自客户端120、130的任何下述所支持属性都可以从RLD记录改变中除去:所述属性具有SET,具有与中心数据仓库中的属性的当前值相匹配的值。
支持字段级差异化的客户端120、130只对于要被更新的一个或多个数据记录而发送改变的数据项。相反,支持记录级差异化的客户端120、130发送要被更新的一个或多个数据记录中所包括的全部数据项。
在图6所示的示例中,同步服务器110识别(602)由客户端描述plist(clientdescription.plist)所规定的、由客户端120、130支持的格局属性。对于作为修改(MODIFY)命令的每个RLD记录(例如,我们可以忽略添加(ADD)或删除(DELETE)),对于该客户端针对该实体所支持的每个属性,同步服务器110判定或识别(604)记录的实体名称(例如com.apple.contacts.Contact)。同步服务器110判定(606)该属性是否从RLD记录缺失。当同步服务器110检测到该属性从RLD记录缺失时,同步服务器110对于该属性产生(608)“弱”的CLEAR操作,并且中心数据仓库142中没有尚未作为更新而被发送(612)到客户端120、130的SET。否则,如果该属性在RLD记录中是SET,并且该值与中心数据仓库中对于该属性的当前值匹配(610),则同步服务器110从RLD记录除去(612)该属性。否则,如果该属性在RLD记录中是SET,并且该值的哈希值与发送到该客户端的最后已知哈希值匹配(614),则同步服务器110从RLD记录除去(612)该属性。
另外,一旦同步会话对于数据记录造成改变,则可以对于与这一个或多个数据记录相关联的全部改变而产生改变日志。改变日志是对于给定的同步会话过程中施加的格局数据类的全部改变的表示形式。改变日志可以被序列化,以积累这些改变。这样,改变可以被渐渐更新,或者突然一起更新。使用桥客户端,同步服务器110可以访问中心数据仓库142中储存的数据。一旦被访问,同步服务器110就可以使用改变日志来对与通用服务器140连接的中心数据仓库142进行更新。这样,所产生的改变日志可以被用来对中心数据仓库142(“真值”)进行更新。
根据所处理的同步会话,同步服务器110可以判定这一个或多个客户端120、130是支持(540)FLD还是RLD。例如,由客户端表明的同步模式可以是慢速,并从而表明RLD。此外,改变的数据表示形式可以表明客户端装置130和/或web客户端120对于给定的数据类正在使用FLD还是RLD。当这一个或多个客户端被配置成支持记录级差异化时,同步服务器110执行RLD至FLD转换(542),以在这一个或多个数据记录中识别所改变的数据项。同步服务器110可以将客户端所发送的数据记录与同步数据仓库112进行比较,以识别已经改变的数据记录中的数据项。与同步数据仓库112相同的那些数据项被丢弃。当同步服务器110判定为这些客户端支持FLD时,由这些客户端发送的数据记录中的全部数据项被接受(544),作为改变的数据。这包括添加的、修改的和删除的数据。
另外,在检测到一个或多个客户端被识别为非受信客户端时,在与所述非受信客户端相关联的同步会话中,根据由服务器针对与所述非受信客户端相关联的同步会话中牵涉到的一个或多个数据记录而定义的格局,可以检测到一个或多个差别。
这份说明书中描述的主题和功能性操作的实施例可以实现为数字电路的形式,或者计算机软件、固件或硬件的形式,或者它们中的一项或多项的结合的形式,这些软件、固件或硬件包含这份说明书中所公开的结构以及它们的结构等同物。这份说明书中描述的主题的实施例可以被实现为一个或多个计算机程序产品,即一个或多个计算机程序指令模块,这些模块被编码在有形的程序载体上,以由数据处理设备执行或控制数据处理设备的操作。有形的程序载体可以是传播的信号或计算机可读介质。传播的信号是人工产生的信号,例如机器产生的电信号、光信号或电磁信号,这些信号被产生以对信息进行编码,用于传输到合适的接收器设备以由计算机执行。计算机可读介质可以是机器可读的储存装置、机器可读的储存基底、存储器装置、实现机器可读传播信号的物质组分、或者它们中一项或多项的组合。
术语“数据处理设备”涵盖了用于处理数据的所有的设备、装置和机器,例如包括可编程的处理器、计算机、或者多个处理器或计算机。设备除了硬件以外,还可以包括给所涉及的计算机程序创建执行环境的代码,例如构成下述内容的代码:处理器固件、协议栈、数据库管理系统、操作系统、或者它们中一项或多项的组合。
计算机程序(也称为程序、软件、软件应用、脚本、或代码)可以写成任何形式的编程语言,包括编译语言或解释语言,或者表述性或过程性的语言,它可以以任何形式来部署,包括作为独立的程序或者作为模块、组件、子例程或者适用于计算环境中的其他单元。计算机程序不一定要对应于文件系统中的文件。程序可以被储存在保存其他程序或数据(例如标记语言文档中储存的一个或多个脚本)的文件的一部分中,专用于所涉及的程序的单一文件中,或者多个协作的文件中(例如储存一个或多个模块、子程序或代码部分的多个文件)。计算机程序可以部署成在一个计算机或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络而互连。
这份说明书中所述的处理和逻辑流程可以由一个或多个可编程处理器来执行,这些处理器执行一个或多个计算机程序来通过对输入数据进行操作并产生输出而执行功能。也可以由专门目的的逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行这些处理和逻辑流程并且设备可被实现为这些专门目的的逻辑电路。
适于执行计算机程序的处理器例如既包括通用和专用目的的微处理器,也包括任何种类的数字计算机的任一个或多个处理器。通常,处理器将从只读存储器、或随机存取存储器、或者这二者接收指令和数据。计算机的主要元件是用于执行指令的处理器以及用于储存指令和数据的一个或多个存储器装置。通常,计算机还会包括用于储存数据的一个或多个海量储存装置(例如磁盘、磁光盘或光盘),或者以可操作的方式耦合来从其接收数据、向其传输数据或既接收又传输。但是,计算机不一定要具有这些装置。此外,计算机也可以嵌入其他装置中。
适于储存计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,例如包括半导体存储器装置(例如EPROM、EEPROM和闪存装置)、磁盘(例如内部硬盘或可移动盘)、磁光盘、以及CD ROM和DVD-ROM盘。处理器和存储器可以给专门目的的逻辑电路提供补充,或者结合到其中。
为了提供与用户的交互,这份说明书中所述主题的实施例可以在具有用于向用户显示信息的显示装置(例如CRT(阴极射线管)或LCD(液晶显示器))以及键盘和点选装置(例如鼠标器或轨迹球)的计算机上实现,用户能够通过所述键盘和点选装置来向计算机提供输入。其他种类装置也可以用来提供与用户的交互,例如,来自用户的输入可以以任何形式被接收,包括声波、语音或触觉输入。
这份说明书中所述主题的实施例可以在下述形式中实现:包括后端组件(例如作为数据服务器)的计算系统、或者包括中间件组件(例如应用服务器)的计算系统、或者包括前端组件(例如客户端计算机,其具有图形用户界面或web浏览器,用户可以通过它们来与这份说明书中所述主题的实现形式进行交互)的计算系统、或者一个或多个这种后端组件、中间件组件或前端组件的组合。系统的组件可以由任何形式的数字数据通信介质(例如通信网络)来互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此处于远程,并通常通过通信网络来交互。客户端和服务器的关系起因于运行在各个计算机上、并彼此具有客户端-服务器关系的计算机程序。
尽管这份说明书包含了许多具体细节,但是这些不应认为是对任何发明的或所要求保护的范围的限制,而应作为可以专用于特定发明的特定实施例的特征的描述。这份说明书中在不同实施例的上下文中描述的某些特征也可以在一个实施例中结合来实现。相反,在单一实施例的上下文中描述的各个特征也可以在多个实施例中分别实现或者以任何合适的子组合形式来实现。此外,尽管上文可能将多个特征描述为以特定组合的形式来作用并且甚至最初如此主张了权利,但在某些情况下,来自所主张权利的组合形式的一个或多个特征也可以从该组合形式中被除去,所主张权利的组合形式也可以针对子组合或者子组合的变更形式。
类似地,尽管在附图中以特定顺序描述了多个操作,但是这不应认为要求这些操作必须以所示的顺序或依次的顺序来执行,或者必须执行全部的所示操作来获得所需的结果。在某些情况下,多任务和并行处理可能是有利的。另外,在上述实施例中各个系统组件的分开不应认为在所有实施例中都要求这种分开,应当明白,所述的程序组件和系统可以大体上一起集成在单一的软件产品或封装在多个软件产品中。
只描述了一些实现形式和示例,根据本申请中所述和所示的内容可以作出其他的实现形式、改进形式和变更形式。
Claims (27)
1.一种在服务器处执行的方法,包括:
对来自一个或多个客户端的发起同步会话的请求进行处理,以更新一个或多个数据记录,所述一个或多个数据记录包括一个或多个数据项;
根据所述同步会话的一个或多个属性,选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种,其中,所述受信客户端被配置成支持由所述服务器针对所述一个或多个数据记录而定义的格局;以及
检测所述一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
2.根据权利要求1所述的方法,还包括:
当检测到所述一个或多个客户端被配置成支持记录级差异化时,执行从所述记录级差异化向所述字段级差异化的转换,以识别所述一个或多个数据记录中被改变的数据项。
3.根据权利要求1所述的方法,还包括:
响应于对所述同步会话进行处理,
生成改变日志,所述改变日志标识了与所述一个或多个数据记录相关联的一个或多个改变;以及
更新与所述服务器相关联的数据仓库,以反映在所生成的改变日志中标识出的对于一个或多个数据记录的所述一个或多个改变。
4.根据权利要求3所述的方法,还包括:
使用桥客户端来访问另一数据仓库,并根据与所述服务器相关联的经更新的数据仓库来修改被访问的所述另一数据仓库中储存的数据记录。
5.根据权利要求3所述的方法,其中,访问所述另一数据仓库包括对所生成的改变日志进行处理以更新所述另一数据仓库。
6.根据权利要求1所述的方法,还包括:
从所述一个或多个客户端接收对于所述一个或多个数据记录的更新;
识别所接收的更新和与所述服务器相关联的数据库房处储存的数据记录之间的一个或多个冲突;以及
将来自所述一个或多个客户端的更新混合。
7.根据权利要求6所述的方法,还包括:通过给请求所述同步会话的一个或多个客户端中最近的那个赋予优先级,来解决所识别的一个或多个冲突。
8.根据权利要求1所述的方法,还包括:
当检测到所述一个或多个客户端被识别为非受信客户端时,根据由所述服务器针对与非受信客户端相关联的一组改变中牵涉到的一个或多个数据记录而定义的格局来识别与非受信客户端相关联的这组改变中的一个或多个冲突。
9.根据权利要求1所述的方法,其中,选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种包括:
检测所述同步会话的一个或多个属性,所述属性包括用于所述数据记录中包括的数据项的唯一标识符。
10.一种计算机程序产品,包含在计算机可读介质上,可操作以使数据处理设备执行包括下述内容的操作:
对来自一个或多个客户端的发起同步会话的请求进行处理,以更新一个或多个数据记录,所述一个或多个数据记录包括一个或多个数据项;
根据所述同步会话的一个或多个属性,选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种,其中,所述受信客户端被配置成支持由所述服务器针对所述一个或多个数据记录而定义的格局;以及
检测所述一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
11.根据权利要求10所述的计算机程序产品,还可操作以使数据处理设备当检测到所述一个或多个客户端被配置成支持记录级差异化时,识别所述一个或多个数据记录中被改变的数据项。
12.根据权利要求10所述的计算机程序产品,还可操作以使数据处理设备执行包括下述内容的操作:
生成改变日志,所述改变日志标识了与所述一个或多个数据记录相关联的一个或多个改变;以及
更新与所述服务器相关联的数据仓库,以反映在所生成的改变日志中标识出的对于一个或多个数据记录的所述一个或多个改变。
13.根据权利要求12所述的计算机程序产品,还可操作以使数据处理设备:使用桥客户端来访问另一数据仓库,并根据与所述服务器相关联的经更新的数据仓库来修改被访问的所述另一数据仓库中储存的数据记录。
14.根据权利要求13所述的计算机程序产品,还可操作以使数据处理设备访问所述另一数据仓库,包括对所生成的改变日志进行处理以更新所述另一数据仓库。
15.根据权利要求10所述的计算机程序产品,还可操作以使数据处理设备执行包括下述内容的操作:
从所述一个或多个客户端接收对于所述一个或多个数据记录的更新;
识别所接收的更新和与所述服务器相关联的数据库房处储存的数据记录之间的一个或多个冲突;以及
将来自所述一个或多个客户端的更新混合。
16.根据权利要求15所述的计算机程序产品,还可操作以使数据处理设备:通过给请求所述同步会话的一个或多个客户端中最近的那个赋予优先级,来解决所识别的一个或多个冲突。
17.根据权利要求10所述的计算机程序产品,还可操作以使数据处理设备:当检测到所述一个或多个客户端被识别为非受信客户端时,根据由所述服务器针对与非受信客户端相关联的一组改变中牵涉到的一个或多个数据记录而定义的格局来识别与非受信客户端相关联的这组改变中的一个或多个差别。
18.根据权利要求10所述的计算机程序产品,还可操作以通过执行下述操作来选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种:
检测所述同步会话的一个或多个属性,所述属性包括用于所述数据记录中包括的数据项的唯一标识符。
19.一种服务器,包括:
处理器,其被配置成运行
传输协议,该协议允许打开与一个或多个客户端的一个或多个连接;和
一个或多个同步协议,该协议允许所述服务器通过所打开的一个或多个连接来与所述一个或多个客户端同步一个或多个数据类,其中,所述一个或多个同步协议允许所述服务器:
对来自所述一个或多个客户端的发起同步会话的请求进行处理,以更新一个或多个数据记录,所述一个或多个数据记录包括一个或多个数据项;
根据所述同步会话的一个或多个属性,选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种,其中,所述受信客户端被配置成支持由所述服务器针对所述数据记录而定义的格局;以及
检测所述一个或多个客户端是被配置成支持字段级差异化还是记录级差异化,所述字段级差异化只针对所述一个或多个数据记录发送被改变的数据项,所述记录级差异化发送所述一个或多个数据记录中包括的全部数据项。
20.根据权利要求19所述的服务器,其中,所述处理器被配置成运行所述一个或多个同步协议,从而当所述一个或多个客户端被配置成支持记录级差异化时,识别所述一个或多个数据记录中被改变的数据项。
21.根据权利要求19所述的服务器,其中,所述处理器被配置为运行所述一个或多个同步协议,以执行下述内容:
响应于对所述同步会话进行处理,
生成改变日志,所述改变日志表明与所述一个或多个数据记录相关联的一个或多个改变;以及
更新与所述服务器相关联的数据仓库,以反映在所生成的改变日志中表明的对于一个或多个数据记录的所述一个或多个改变。
22.根据权利要求19所述的服务器,其中,所述处理器被配置为运行所述一个或多个同步协议,从而
使用桥客户端来访问另一数据仓库,并根据与所述服务器相连的经更新的数据仓库来修改被访问的数据仓库中储存的数据记录。
23.根据权利要求22所述的服务器,其中所述处理器被配置为运行所述一个或多个同步协议以通过对所生成的改变日志进行处理而更新所述另一数据仓库,来修改所述另一数据仓库。
24.根据权利要求19所述的服务器,其中,所述处理器被配置成运行所述一个或多个同步协议,以执行包括下述内容的操作:
从所述一个或多个客户端接收对于所述一个或多个数据记录的更新;
识别所接收的更新和与所述服务器相关联的数据库房处储存的数据记录之间的一个或多个冲突;以及
将来自所述一个或多个客户端的更新混合。
25.根据权利要求24所述的服务器,其中,所述处理器被配置成运行所述一个或多个同步协议,以通过给请求所述同步会话的一个或多个客户端中最近的那个赋予优先级,来解决所识别的一个或多个冲突。
26.根据权利要求19所述的服务器,其中,所述处理器被配置成运行所述一个或多个同步协议,以当检测到所述一个或多个客户端被识别为非受信客户端时,根据由所述服务器针对与非受信客户端相关联的一组改变中牵涉到的一个或多个数据记录而定义的格局来识别与非受信客户端相关联的这组改变中的一个或多个差别。
27.根据权利要求19所述的服务器,其中,所述处理器被配置成运行所述一个或多个同步协议,以通过下述方式来选择性地将所述一个或多个客户端识别为受信客户端和非受信客户端中的一种:检测所述同步会话的一个或多个属性,所述属性包括用于所述数据记录中包括的数据项的唯一标识符。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/042,305 US7991740B2 (en) | 2008-03-04 | 2008-03-04 | Synchronization server process |
US12/042,305 | 2008-03-04 | ||
PCT/US2009/035912 WO2009111495A1 (en) | 2008-03-04 | 2009-03-03 | Synchronization server process |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102089760A true CN102089760A (zh) | 2011-06-08 |
CN102089760B CN102089760B (zh) | 2015-07-01 |
Family
ID=40651459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980116070.0A Active CN102089760B (zh) | 2008-03-04 | 2009-03-03 | 同步服务器处理 |
Country Status (9)
Country | Link |
---|---|
US (3) | US7991740B2 (zh) |
EP (2) | EP2426611A1 (zh) |
JP (1) | JP5624479B2 (zh) |
KR (2) | KR101265455B1 (zh) |
CN (1) | CN102089760B (zh) |
AU (1) | AU2009222001B2 (zh) |
CA (1) | CA2717415C (zh) |
GB (1) | GB2470871B (zh) |
WO (1) | WO2009111495A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103716370A (zh) * | 2013-10-13 | 2014-04-09 | 北界创想(北京)软件有限公司 | 在多个客户端之间进行数据同步的方法和装置 |
CN103714105A (zh) * | 2012-09-14 | 2014-04-09 | 哈曼贝克自动系统股份有限公司 | 更新导航装置的数据库的方法和装置 |
CN103873519A (zh) * | 2012-12-14 | 2014-06-18 | 北京金山云网络技术有限公司 | 一种数据同步方法、客户端、服务器、终端和系统 |
CN104125249A (zh) * | 2013-04-24 | 2014-10-29 | 北京远方环宇通讯技术有限责任公司 | 通信终端配置文件的同步系统和方法 |
CN104346479A (zh) * | 2014-11-26 | 2015-02-11 | 北京奇虎科技有限公司 | 一种数据库同步方法及装置 |
CN106027593A (zh) * | 2015-03-30 | 2016-10-12 | 国际商业机器公司 | 用于动态地维护数据结构的方法和系统 |
CN108874884A (zh) * | 2018-05-04 | 2018-11-23 | 广州多益网络股份有限公司 | 数据同步更新方法、装置和系统、服务器设备 |
CN110069567A (zh) * | 2019-04-02 | 2019-07-30 | 北京信安世纪科技股份有限公司 | 一种数据库之间的数据同步方法及系统 |
CN111797070A (zh) * | 2019-04-08 | 2020-10-20 | 杭州晨熹多媒体科技有限公司 | 票务数据处理方法及装置 |
CN111939565A (zh) * | 2020-08-28 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 虚拟场景的显示方法、系统、装置、设备以及存储介质 |
CN112667309A (zh) * | 2020-12-22 | 2021-04-16 | 互联网域名系统北京市工程研究中心有限公司 | DoT在DNS权威服务器上的支持方法及系统 |
CN112989239A (zh) * | 2016-03-17 | 2021-06-18 | 谷歌有限责任公司 | 混合的客户端-服务器数据提供的方法 |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437484B2 (en) | 2003-12-29 | 2008-10-14 | International Business Machines Corporation | Method for optimizing synchronization |
US7516108B2 (en) * | 2005-12-22 | 2009-04-07 | International Business Machines Corporation | Block allocation times in a computer system |
US7991740B2 (en) | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
US8010487B2 (en) * | 2008-06-27 | 2011-08-30 | Microsoft Corporation | Synchronization and collaboration within peer-to-peer and client/server environments |
US8135670B2 (en) * | 2008-07-22 | 2012-03-13 | International Business Machines Corporation | Embedded change logging for data synchronization |
US8437456B2 (en) * | 2008-07-28 | 2013-05-07 | At&T Intellectual Property I, L.P. | Method and apparatus for managing contact books |
US9753746B2 (en) * | 2008-12-19 | 2017-09-05 | Paul Krzyzanowski | Application store and intelligence system for networked telephony and digital media services devices |
US9002787B2 (en) * | 2009-01-30 | 2015-04-07 | Blackberry Limited | Method and apparatus for tracking device management data changes |
US20100211544A1 (en) * | 2009-02-19 | 2010-08-19 | Jyshyang Chen | System with session synchronization |
US8028070B2 (en) * | 2009-05-18 | 2011-09-27 | Microsoft Corporation | Synchronizing tasks between servers |
US20110078332A1 (en) * | 2009-09-25 | 2011-03-31 | Poon Roger J | Method of synchronizing information across multiple computing devices |
US8516137B2 (en) * | 2009-11-16 | 2013-08-20 | Microsoft Corporation | Managing virtual hard drives as blobs |
US8572022B2 (en) | 2010-03-02 | 2013-10-29 | Microsoft Corporation | Automatic synchronization conflict resolution |
CN102193841B (zh) * | 2010-03-04 | 2013-07-31 | 阿里巴巴集团控股有限公司 | 一种Subversion配置库的备份方法及装置 |
US9467338B2 (en) | 2010-04-01 | 2016-10-11 | Blackberry Limited | Method for communicating device management data changes |
US20110258160A1 (en) * | 2010-04-15 | 2011-10-20 | Po-Yen Lee | Data synchronization methods for synchronizing data in communication system and communication systems |
US8527591B2 (en) | 2010-05-20 | 2013-09-03 | Actual Works, Inc. | Method and apparatus for the implementation of a real-time, sharable browsing experience on a guest device |
US10318477B2 (en) * | 2010-05-26 | 2019-06-11 | Red Hat, Inc. | Managing and archiving system and application log files |
CN102315930B (zh) | 2010-06-30 | 2014-07-23 | 国际商业机器公司 | 用于在数据同步中减少数据传输量的方法和系统 |
US9349368B1 (en) * | 2010-08-05 | 2016-05-24 | Google Inc. | Generating an audio notification based on detection of a triggering event |
US8521854B2 (en) | 2010-08-06 | 2013-08-27 | International Business Machines Corporation | Minimising network resource overhead consumption by reports from one or more agents distributed in an electronic data network of nodes |
US8478772B2 (en) | 2010-10-21 | 2013-07-02 | Oracle International Corporation | On-device database service for mobile device |
KR20120107022A (ko) * | 2011-03-14 | 2012-09-28 | 삼성전자주식회사 | 개인 정보 동기화 방법 및 장치 |
CN103620599B (zh) * | 2011-06-03 | 2016-10-12 | 苹果公司 | 云存储 |
US9825967B2 (en) | 2011-09-24 | 2017-11-21 | Elwha Llc | Behavioral fingerprinting via social networking interaction |
US9083687B2 (en) | 2011-09-24 | 2015-07-14 | Elwha Llc | Multi-device behavioral fingerprinting |
US20130191887A1 (en) * | 2011-10-13 | 2013-07-25 | Marc E. Davis | Social network based trust verification Schema |
US8869241B2 (en) | 2011-09-24 | 2014-10-21 | Elwha Llc | Network acquired behavioral fingerprint for authentication |
US9298900B2 (en) | 2011-09-24 | 2016-03-29 | Elwha Llc | Behavioral fingerprinting via inferred personal relation |
US9015860B2 (en) | 2011-09-24 | 2015-04-21 | Elwha Llc | Behavioral fingerprinting via derived personal relation |
US8689350B2 (en) | 2011-09-24 | 2014-04-01 | Elwha Llc | Behavioral fingerprint controlled theft detection and recovery |
US9729549B2 (en) | 2011-09-24 | 2017-08-08 | Elwha Llc | Behavioral fingerprinting with adaptive development |
US8713704B2 (en) | 2011-09-24 | 2014-04-29 | Elwha Llc | Behavioral fingerprint based authentication |
US9348985B2 (en) | 2011-11-23 | 2016-05-24 | Elwha Llc | Behavioral fingerprint controlled automatic task determination |
US9621404B2 (en) | 2011-09-24 | 2017-04-11 | Elwha Llc | Behavioral fingerprinting with social networking |
US9396277B2 (en) * | 2011-12-09 | 2016-07-19 | Microsoft Technology Licensing, Llc | Access to supplemental data based on identifier derived from corresponding primary application data |
US8601121B2 (en) | 2012-01-09 | 2013-12-03 | International Business Machines Corporation | Tracking changes to data within various data repositories |
KR20130094608A (ko) * | 2012-02-16 | 2013-08-26 | 삼성전자주식회사 | 통합주소록 서버에 의한 문서 복원 방법 및 이를 위한 통합주소록 클라이언트 단말 |
EP2701106A3 (en) * | 2012-08-20 | 2014-05-14 | BlackBerry Limited | Methods and devices for applying constraints to data object |
US9218405B2 (en) * | 2012-10-10 | 2015-12-22 | Apple Inc. | Batch processing and data synchronization in cloud-based systems |
KR101529162B1 (ko) * | 2012-10-25 | 2015-06-16 | 주식회사 케이티 | 동기화 정보 제공 시스템 및 그 방법 |
CN102932439A (zh) * | 2012-10-26 | 2013-02-13 | 华为终端有限公司 | 一种内容同步的方法和装置 |
US9197700B2 (en) * | 2013-01-18 | 2015-11-24 | Apple Inc. | Keychain syncing |
US9077759B2 (en) | 2013-01-18 | 2015-07-07 | Apple Inc. | Conflict resolution for keychain syncing |
US9449061B2 (en) * | 2013-03-15 | 2016-09-20 | Tactile, Inc. | Storing and processing data organized as flexible records |
US20160110261A1 (en) * | 2013-05-07 | 2016-04-21 | Axcient, Inc. | Cloud storage using merkle trees |
US10963431B2 (en) * | 2013-06-11 | 2021-03-30 | Red Hat, Inc. | Storing an object in a distributed storage system |
KR20150029185A (ko) * | 2013-09-09 | 2015-03-18 | 삼성전자주식회사 | 애플리케이션 제공 방법 및 장치 |
WO2015035396A1 (en) * | 2013-09-09 | 2015-03-12 | Layer, Inc. | Federated authentication of client computers in networked data communications services callable by applications |
US9552407B1 (en) * | 2013-09-11 | 2017-01-24 | Amazon Technologies, Inc. | Log-based synchronization with conditional append |
US9251235B1 (en) | 2013-09-11 | 2016-02-02 | Amazon Technologies, Inc. | Log-based synchronization |
US10956446B1 (en) | 2013-09-11 | 2021-03-23 | Amazon Technologies, Inc. | Log-based synchronization with inferred context |
US11075996B2 (en) * | 2013-10-15 | 2021-07-27 | Red Hat Israel, Ltd. | Remote dashboard console |
US9690838B2 (en) * | 2013-10-31 | 2017-06-27 | Microsoft Technology Licensing, Llc | Master data management |
CN104679530B (zh) * | 2013-11-26 | 2017-12-29 | 英业达科技有限公司 | 服务器系统与固件更新方法 |
US10645157B2 (en) | 2014-03-31 | 2020-05-05 | Google Llc | Content synchronization using profiles |
US10574745B2 (en) * | 2015-03-31 | 2020-02-25 | Western Digital Technologies, Inc. | Syncing with a local paired device to obtain data from a remote server using point-to-point communication |
US10497044B2 (en) | 2015-10-19 | 2019-12-03 | Demandware Inc. | Scalable systems and methods for generating and serving recommendations |
US10397319B2 (en) * | 2015-11-24 | 2019-08-27 | Dropbox, Inc. | Server-side selective synchronization |
CN110572437A (zh) * | 2016-03-01 | 2019-12-13 | 张君 | 客户端与服务端在网与离网状态下数据交互方法、系统 |
US10740298B2 (en) | 2016-10-12 | 2020-08-11 | Microsoft Technology Licensing, Llc | File synchronization with reduced conflicts in computing systems |
CN107204854A (zh) * | 2017-06-30 | 2017-09-26 | 上海测吧信息技术有限公司 | 一种基于usb‑token的数字签章方法 |
CN110019469B (zh) | 2017-12-07 | 2022-06-21 | 金篆信科有限责任公司 | 分布式数据库数据处理方法、装置、存储介质及电子装置 |
US10216508B1 (en) | 2018-01-05 | 2019-02-26 | Bank Of America Corporation | System and method for configurable services platform |
CN110309191B (zh) * | 2018-04-08 | 2023-07-04 | 腾讯科技(深圳)有限公司 | 存储业务数据的方法、装置和系统 |
KR102133925B1 (ko) * | 2018-07-30 | 2020-07-14 | 네이버 주식회사 | 데이터 동기화 트래픽을 최소화하기 위한 방법 및 시스템 |
US11914612B2 (en) * | 2018-09-24 | 2024-02-27 | Salesforce, Inc. | Selective synchronization of linked records |
JP7234726B2 (ja) * | 2019-03-20 | 2023-03-08 | 富士フイルムビジネスイノベーション株式会社 | 通信装置、通信システム、及びプログラム |
US11055274B2 (en) | 2019-04-24 | 2021-07-06 | Microsoft Technology Licensing, Llc | Granular change detection in distributed storage systems |
US11080265B2 (en) | 2019-04-24 | 2021-08-03 | Microsoft Technology Licensing, Llc | Dynamic hash function composition for change detection in distributed storage systems |
US11061936B2 (en) | 2019-04-24 | 2021-07-13 | Microsoft Technology Licensing, Llc | Property grouping for change detection in distributed storage systems |
CN110086719B (zh) * | 2019-04-30 | 2021-07-27 | 深圳市腾讯网域计算机网络有限公司 | 数据处理方法、装置及服务器 |
KR102171027B1 (ko) * | 2019-07-26 | 2020-10-28 | 이화여자대학교 산학협력단 | 비정형 로그를 처리하기 위한 추종 서버 장치 및 선도 서버 장치, 이를 포함하는 합의 시스템 및 그 방법 |
US11037207B2 (en) * | 2019-08-20 | 2021-06-15 | Shopify Inc. | Channel synchronization engine with call control |
FR3101976B1 (fr) * | 2019-10-11 | 2023-06-02 | Thales Sa | Procede de mise a jour d'une base de donnees par un groupe d'applications, produit programme d'ordinateur et systeme embarque associes |
US11474921B2 (en) | 2020-07-13 | 2022-10-18 | Micron Technology, Inc. | Log compression |
US20230385307A1 (en) * | 2022-05-25 | 2023-11-30 | Hop.dev, Inc. | Enabling communication between multiple disparate systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030163494A1 (en) * | 2002-02-28 | 2003-08-28 | International Business Machines Corporation | Weak record locks in database query read processing |
US20040193618A1 (en) * | 2003-03-28 | 2004-09-30 | International Business Machines Corporation | Record trimming method, apparatus, and system to improve processing in a sort utility |
CN1551555A (zh) * | 2003-05-09 | 2004-12-01 | 数据复制中的分区计算和变化传播的结构 | |
US20070100834A1 (en) * | 2004-09-15 | 2007-05-03 | John Landry | System and method for managing data in a distributed computer system |
Family Cites Families (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1403580A (en) * | 1920-05-03 | 1922-01-17 | George G Venema | Clamp |
JP3621433B2 (ja) * | 1993-05-24 | 2005-02-16 | 日本電信電話株式会社 | データベース排他制御方法 |
US6173335B1 (en) * | 1993-07-30 | 2001-01-09 | Apple Computer, Inc. | Structure and protocol for routing information in a system |
US5684984A (en) * | 1994-09-29 | 1997-11-04 | Apple Computer, Inc. | Synchronization and replication of object databases |
US5873093A (en) * | 1994-12-07 | 1999-02-16 | Next Software, Inc. | Method and apparatus for mapping objects to a data source |
US5706509A (en) * | 1995-04-28 | 1998-01-06 | Intel Corporation | Application independent record level synchronization |
EP0750253B1 (en) * | 1995-06-22 | 2002-04-03 | Hewlett-Packard Company, A Delaware Corporation | Method and apparatus for shared management information via a common repository |
US5728335A (en) * | 1996-06-26 | 1998-03-17 | Union Carbide Chemicals & Plastics Technology Corporation | Process for extrusion |
US5758355A (en) * | 1996-08-07 | 1998-05-26 | Aurum Software, Inc. | Synchronization of server database with client database using distribution tables |
US5926816A (en) * | 1996-10-09 | 1999-07-20 | Oracle Corporation | Database Synchronizer |
US5884325A (en) * | 1996-10-09 | 1999-03-16 | Oracle Corporation | System for synchronizing shared data between computers |
US6446092B1 (en) * | 1996-11-01 | 2002-09-03 | Peerdirect Company | Independent distributed database system |
US6182141B1 (en) * | 1996-12-20 | 2001-01-30 | Intel Corporation | Transparent proxy server |
US6253228B1 (en) * | 1997-03-31 | 2001-06-26 | Apple Computer, Inc. | Method and apparatus for updating and synchronizing information between a client and a server |
US7490112B1 (en) * | 1997-04-15 | 2009-02-10 | Intellisync Corporation | System and methods for synchronizing information among disparate datasets |
US5999937A (en) * | 1997-06-06 | 1999-12-07 | Madison Information Technologies, Inc. | System and method for converting data between data sets |
JPH113368A (ja) * | 1997-06-11 | 1999-01-06 | Nippon Telegr & Teleph Corp <Ntt> | 分散環境におけるスケジュールデータ管理方法及びシステム及びスケジュールデータ管理プログラムを格納した記憶媒体 |
US6041325A (en) * | 1997-10-09 | 2000-03-21 | Alcatel Usa Sourcing, L.P. | System and method for controlling access to a telephony database |
US6026408A (en) * | 1998-01-28 | 2000-02-15 | Unisys Corp. | Method for synchronizing the schema of a database with its representation in an object-oriented repository |
JP3204206B2 (ja) * | 1998-03-13 | 2001-09-04 | 日本電気株式会社 | 部分抽出型リモートメンテナンス方式 |
DE19813929A1 (de) * | 1998-03-28 | 1999-10-07 | Mannesmann Vdo Ag | Aufnahme für ein als Kugelkopf ausgebildetes Ende eines Stößels |
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
US6341291B1 (en) * | 1998-09-28 | 2002-01-22 | Bentley Systems, Inc. | System for collaborative engineering using component and file-oriented tools |
US6477543B1 (en) | 1998-10-23 | 2002-11-05 | International Business Machines Corporation | Method, apparatus and program storage device for a client and adaptive synchronization and transformation server |
US6449622B1 (en) * | 1999-03-08 | 2002-09-10 | Starfish Software, Inc. | System and methods for synchronizing datasets when dataset changes may be received out of order |
WO2000033217A1 (en) * | 1998-11-30 | 2000-06-08 | Siebel Systems, Inc. | Client server system with thin client architecture |
US6516327B1 (en) * | 1998-12-24 | 2003-02-04 | International Business Machines Corporation | System and method for synchronizing data in multiple databases |
US6247135B1 (en) * | 1999-03-03 | 2001-06-12 | Starfish Software, Inc. | Synchronization process negotiation for computing devices |
US6430576B1 (en) * | 1999-05-10 | 2002-08-06 | Patrick Gates | Distributing and synchronizing objects |
EP1093061A1 (de) * | 1999-10-14 | 2001-04-18 | SAP Aktiengesellschaft | Integriertes Datenbank-Verbundsystem |
US6393434B1 (en) * | 1999-09-14 | 2002-05-21 | International Business Machines Corporation | Method and system for synchronizing data using fine-grained synchronization plans |
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6820088B1 (en) * | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
CA2409920C (en) * | 2000-06-22 | 2013-05-14 | Microsoft Corporation | Distributed computing services platform |
US20050055382A1 (en) * | 2000-06-28 | 2005-03-10 | Lounas Ferrat | Universal synchronization |
US20020059299A1 (en) * | 2000-07-14 | 2002-05-16 | Frederic Spaey | System and method for synchronizing databases |
US20020026474A1 (en) * | 2000-08-28 | 2002-02-28 | Wang Lawrence C. | Thin client for wireless device using java interface |
US7284271B2 (en) * | 2001-03-14 | 2007-10-16 | Microsoft Corporation | Authorizing a requesting entity to operate upon data structures |
DE60213419T2 (de) * | 2001-03-16 | 2007-10-31 | Novell, Inc., Provo | Client-server-modell zur synchronisation von dateien |
US7177866B2 (en) * | 2001-03-16 | 2007-02-13 | Gravic, Inc. | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only |
US6829655B1 (en) * | 2001-03-28 | 2004-12-07 | Siebel Systems, Inc. | Method and system for server synchronization with a computing device via a companion device |
US7099896B2 (en) * | 2001-04-06 | 2006-08-29 | Patientkeeper, Inc. | Synchronizing data between disparate schemas using composite version |
US6970876B2 (en) * | 2001-05-08 | 2005-11-29 | Solid Information Technology | Method and arrangement for the management of database schemas |
US7149813B2 (en) | 2001-08-14 | 2006-12-12 | Microsoft Corporation | Method and system for synchronizing mobile devices |
US7761535B2 (en) * | 2001-09-28 | 2010-07-20 | Siebel Systems, Inc. | Method and system for server synchronization with a computing device |
US7155521B2 (en) * | 2001-10-09 | 2006-12-26 | Nokia Corporation | Starting a session in a synchronization system |
FI112015B (fi) * | 2001-11-12 | 2003-10-15 | Nokia Corp | Datan synkronoinnin järjestäminen tietoliikennejärjestelmässä |
US6920469B2 (en) * | 2001-11-13 | 2005-07-19 | Tadpole Technology Plc | Unique ID management in disconnected database replication |
US6728335B1 (en) | 2002-01-25 | 2004-04-27 | Carl-Zeiss-Stiftung | Controller for array of miniature radiation sources |
US7346616B2 (en) * | 2002-03-20 | 2008-03-18 | Extended System, Inc. | Synchronizing data shared between two devices independent of any other devices that may also share the data |
US6920486B2 (en) * | 2002-05-20 | 2005-07-19 | Nokia Corporation | Method and apparatus for enabling synchronizing data in different devices having different capabilities and unmatched data fields |
US6983293B2 (en) * | 2002-07-24 | 2006-01-03 | International Business Machines Corporation | Mid-tier-based conflict resolution method and system usable for message synchronization and replication |
US7206788B2 (en) * | 2002-07-30 | 2007-04-17 | Microsoft Corporation | Schema-based services for identity-based access to device data |
US20060190984A1 (en) * | 2002-09-23 | 2006-08-24 | Credant Technologies, Inc. | Gatekeeper architecture/features to support security policy maintenance and distribution |
CA2406079C (en) * | 2002-09-30 | 2010-03-30 | Ibm Canada Limited-Ibm Canada Limitee | System and method for synchronizing data repositories |
US7359991B2 (en) * | 2002-11-05 | 2008-04-15 | Microsoft Corporation | Folder synchronization |
US20060259524A1 (en) * | 2003-03-17 | 2006-11-16 | Horton D T | Systems and methods for document project management, conversion, and filing |
US7890091B2 (en) * | 2003-05-08 | 2011-02-15 | Good Technology, Inc. | Collaborative data and intelligent synchronization for mobile devices |
US7660833B2 (en) * | 2003-07-10 | 2010-02-09 | Microsoft Corporation | Granular control over the authority of replicated information via fencing and unfencing |
JP2005056063A (ja) * | 2003-08-01 | 2005-03-03 | Hitachi Ltd | 情報処理装置、ネットワークにおけるユーザ認証プログラム、および記録媒体 |
KR101109399B1 (ko) * | 2003-08-21 | 2012-01-30 | 마이크로소프트 코포레이션 | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한정보 단위들에 대한 동기화 스키마들의 구현을 위한시스템들 및 방법들 |
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 |
US7080104B2 (en) * | 2003-11-07 | 2006-07-18 | Plaxo, Inc. | Synchronization and merge engines |
KR100547896B1 (ko) * | 2004-03-05 | 2006-01-31 | 삼성전자주식회사 | 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법 |
US20050251523A1 (en) * | 2004-05-07 | 2005-11-10 | Oracle International Corporation | Minimizing downtime for application changes in database systems |
US7809682B2 (en) * | 2004-05-24 | 2010-10-05 | Apple Inc. | Data synchronization between multiple devices |
EP1754186A1 (en) | 2004-05-24 | 2007-02-21 | Apple Computer, Inc. | Methods for sharing groups of objects, synchronising, and synchronising between three or more devices |
US7567988B2 (en) * | 2004-07-16 | 2009-07-28 | Sap Ag | Synchronizing agent for multiple clients/applications on a computer system |
US20060080468A1 (en) * | 2004-09-03 | 2006-04-13 | Microsoft Corporation | Smart client add-in architecture |
US7506006B2 (en) * | 2004-09-03 | 2009-03-17 | Microsoft Corporation | Synchronization for smart clients |
US20060088038A1 (en) * | 2004-09-13 | 2006-04-27 | Inkaar, Corporation | Relationship definition and processing system and method |
US20070038642A1 (en) * | 2004-09-15 | 2007-02-15 | Scott Durgin | Method for providing extensible software components within a distributed synchronization system |
CN1753359B (zh) * | 2004-09-24 | 2011-01-19 | 华为技术有限公司 | 实现传输SyncML同步数据的方法 |
US8069226B2 (en) * | 2004-09-30 | 2011-11-29 | Citrix Systems, Inc. | System and method for data synchronization over a network using a presentation level protocol |
US7657925B2 (en) * | 2004-10-14 | 2010-02-02 | Oracle International Corporation | Method and system for managing security policies for databases in a distributed system |
US8001082B1 (en) * | 2004-10-28 | 2011-08-16 | Good Technology, Inc. | System and method of data security in synchronizing data with a wireless device |
US7962448B2 (en) * | 2004-12-17 | 2011-06-14 | International Business Machines Corporation | Optimizing a three tiered synchronization system by pre-fetching and pre-formatting synchronization data |
US8230326B2 (en) * | 2004-12-17 | 2012-07-24 | International Business Machines Corporation | Method for associating annotations with document families |
US7908247B2 (en) * | 2004-12-21 | 2011-03-15 | Nextpage, Inc. | Storage-and transport-independent collaborative document-management system |
US9020887B2 (en) * | 2004-12-21 | 2015-04-28 | Proofpoint, Inc. | Managing the status of documents in a distributed storage system |
US20060155716A1 (en) * | 2004-12-23 | 2006-07-13 | Microsoft Corporation | Schema change governance for identity store |
US7593942B2 (en) * | 2004-12-30 | 2009-09-22 | Oracle International Corporation | Mandatory access control base |
US7317907B2 (en) * | 2005-01-31 | 2008-01-08 | Research In Motion Limited | Synchronizing server and device data using device data schema |
US7677441B2 (en) * | 2005-04-01 | 2010-03-16 | Microsoft Corporation | Relaxed currency constraints |
US7516478B2 (en) * | 2005-06-03 | 2009-04-07 | Microsoft Corporation | Remote management of mobile devices |
NO20052719D0 (no) | 2005-06-06 | 2005-06-06 | Ericsson Telefon Ab L M | Synkronisering av informasjonsenheter med tilhorende referanser |
US20060277224A1 (en) * | 2005-06-07 | 2006-12-07 | Microsoft Corporation | Synchronizing arbitrary data using a flexible schema |
US7770785B2 (en) * | 2005-06-13 | 2010-08-10 | Qualcomm Incorporated | Apparatus and methods for detection and management of unauthorized executable instructions on a wireless device |
JP4867249B2 (ja) * | 2005-09-20 | 2012-02-01 | 富士ゼロックス株式会社 | データサーバ、およびプログラム |
US20070130217A1 (en) * | 2005-10-13 | 2007-06-07 | Unwired Software, Inc. | Many to many data synchronization |
US8015319B2 (en) * | 2005-10-27 | 2011-09-06 | Huawei Technologies Co., Ltd. | Method, system, client and server for implementing data sync |
CN1956452B (zh) * | 2005-10-27 | 2012-02-29 | 华为技术有限公司 | 一种实现数据同步的方法、系统、客户端及服务器 |
CN1852309A (zh) * | 2005-11-16 | 2006-10-25 | 华为技术有限公司 | 数据同步处理方法及其客户端 |
US7543000B2 (en) * | 2006-01-23 | 2009-06-02 | International Business Machines Corporation | Method and system combining state replication and operational-replay synchronization |
US7712137B2 (en) * | 2006-02-27 | 2010-05-04 | Microsoft Corporation | Configuring and organizing server security information |
US7756829B2 (en) * | 2006-04-18 | 2010-07-13 | Sandeep Bhanote | Method and apparatus for mobile data collection and management |
US8108388B2 (en) * | 2006-04-26 | 2012-01-31 | Microsoft Corporation | Significant change search alerts |
US7860825B2 (en) * | 2006-05-08 | 2010-12-28 | Palm, Inc. | Method for synchronizing software application and user data for asynchronous client-server and peer to peer computer networks |
US7792792B2 (en) * | 2006-05-22 | 2010-09-07 | Microsoft Corporation | Synchronizing structured web site contents |
EP1883257A1 (fr) * | 2006-07-28 | 2008-01-30 | Gemplus | Procédé de synchronisation entre un equipement mobile et une carte a puce |
US7827138B2 (en) * | 2006-10-02 | 2010-11-02 | Salesforce.Com, Inc. | Method and system for synchronizing a server and an on-demand database service |
US20080155112A1 (en) * | 2006-12-22 | 2008-06-26 | Nokia Corporation | System and method for updating information feeds |
US20080294729A1 (en) * | 2007-05-22 | 2008-11-27 | Nokia Corporation | Email object for open mobile alliance data synchronization usage |
US8090685B2 (en) * | 2007-09-14 | 2012-01-03 | Microsoft Corporation | Knowledge based synchronization of subsets of data with no move condition |
US7991740B2 (en) | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
US20110078332A1 (en) | 2009-09-25 | 2011-03-31 | Poon Roger J | Method of synchronizing information across multiple computing devices |
-
2008
- 2008-03-04 US US12/042,305 patent/US7991740B2/en active Active
-
2009
- 2009-03-03 CN CN200980116070.0A patent/CN102089760B/zh active Active
- 2009-03-03 EP EP11190642A patent/EP2426611A1/en not_active Ceased
- 2009-03-03 CA CA2717415A patent/CA2717415C/en active Active
- 2009-03-03 JP JP2010549824A patent/JP5624479B2/ja active Active
- 2009-03-03 KR KR1020127019611A patent/KR101265455B1/ko active IP Right Grant
- 2009-03-03 EP EP09154249.8A patent/EP2098962B1/en active Active
- 2009-03-03 GB GB1016655.1A patent/GB2470871B/en active Active
- 2009-03-03 WO PCT/US2009/035912 patent/WO2009111495A1/en active Application Filing
- 2009-03-03 AU AU2009222001A patent/AU2009222001B2/en not_active Ceased
- 2009-03-03 KR KR1020107022201A patent/KR101217389B1/ko active IP Right Grant
-
2011
- 2011-08-01 US US13/195,780 patent/US8290908B2/en not_active Expired - Fee Related
-
2012
- 2012-09-14 US US13/616,638 patent/US10749953B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030163494A1 (en) * | 2002-02-28 | 2003-08-28 | International Business Machines Corporation | Weak record locks in database query read processing |
US20040193618A1 (en) * | 2003-03-28 | 2004-09-30 | International Business Machines Corporation | Record trimming method, apparatus, and system to improve processing in a sort utility |
CN1551555A (zh) * | 2003-05-09 | 2004-12-01 | 数据复制中的分区计算和变化传播的结构 | |
US20070100834A1 (en) * | 2004-09-15 | 2007-05-03 | John Landry | System and method for managing data in a distributed computer system |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714105A (zh) * | 2012-09-14 | 2014-04-09 | 哈曼贝克自动系统股份有限公司 | 更新导航装置的数据库的方法和装置 |
CN103873519A (zh) * | 2012-12-14 | 2014-06-18 | 北京金山云网络技术有限公司 | 一种数据同步方法、客户端、服务器、终端和系统 |
CN103873519B (zh) * | 2012-12-14 | 2018-03-27 | 北京金山云网络技术有限公司 | 一种数据同步方法、客户端、服务器、终端和系统 |
CN104125249A (zh) * | 2013-04-24 | 2014-10-29 | 北京远方环宇通讯技术有限责任公司 | 通信终端配置文件的同步系统和方法 |
CN103716370B (zh) * | 2013-10-13 | 2018-01-02 | 北界创想(北京)软件有限公司 | 在多个客户端之间进行数据同步的方法和装置 |
CN103716370A (zh) * | 2013-10-13 | 2014-04-09 | 北界创想(北京)软件有限公司 | 在多个客户端之间进行数据同步的方法和装置 |
CN104346479A (zh) * | 2014-11-26 | 2015-02-11 | 北京奇虎科技有限公司 | 一种数据库同步方法及装置 |
CN106027593A (zh) * | 2015-03-30 | 2016-10-12 | 国际商业机器公司 | 用于动态地维护数据结构的方法和系统 |
CN106027593B (zh) * | 2015-03-30 | 2019-05-10 | 国际商业机器公司 | 用于动态地维护数据结构的方法和系统 |
CN112989239A (zh) * | 2016-03-17 | 2021-06-18 | 谷歌有限责任公司 | 混合的客户端-服务器数据提供的方法 |
CN108874884A (zh) * | 2018-05-04 | 2018-11-23 | 广州多益网络股份有限公司 | 数据同步更新方法、装置和系统、服务器设备 |
CN110069567A (zh) * | 2019-04-02 | 2019-07-30 | 北京信安世纪科技股份有限公司 | 一种数据库之间的数据同步方法及系统 |
CN111797070A (zh) * | 2019-04-08 | 2020-10-20 | 杭州晨熹多媒体科技有限公司 | 票务数据处理方法及装置 |
CN111939565A (zh) * | 2020-08-28 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 虚拟场景的显示方法、系统、装置、设备以及存储介质 |
CN111939565B (zh) * | 2020-08-28 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 虚拟场景的显示方法、系统、装置、设备以及存储介质 |
CN112667309A (zh) * | 2020-12-22 | 2021-04-16 | 互联网域名系统北京市工程研究中心有限公司 | DoT在DNS权威服务器上的支持方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2098962A1 (en) | 2009-09-09 |
US20130006929A1 (en) | 2013-01-03 |
GB2470871B (en) | 2012-11-14 |
CA2717415C (en) | 2013-05-28 |
EP2098962B1 (en) | 2014-05-21 |
US20110289050A1 (en) | 2011-11-24 |
WO2009111495A1 (en) | 2009-09-11 |
JP5624479B2 (ja) | 2014-11-12 |
KR101265455B1 (ko) | 2013-05-22 |
KR101217389B1 (ko) | 2013-01-02 |
US8290908B2 (en) | 2012-10-16 |
US20090228509A1 (en) | 2009-09-10 |
GB201016655D0 (en) | 2010-11-17 |
KR20120105544A (ko) | 2012-09-25 |
JP2011513863A (ja) | 2011-04-28 |
AU2009222001A1 (en) | 2009-09-11 |
US7991740B2 (en) | 2011-08-02 |
KR20100124801A (ko) | 2010-11-29 |
CA2717415A1 (en) | 2009-09-11 |
CN102089760B (zh) | 2015-07-01 |
AU2009222001B2 (en) | 2011-10-20 |
US10749953B2 (en) | 2020-08-18 |
EP2426611A1 (en) | 2012-03-07 |
GB2470871A (en) | 2010-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102089760B (zh) | 同步服务器处理 | |
Carpenter et al. | Cassandra: The Definitive Guide,(Revised) | |
US11755616B2 (en) | Synchronized organization directory with team member folders | |
US10755234B2 (en) | System and method for offline synchronization of exception items of shared services for client applications | |
EP2028599B1 (en) | Synchronising data | |
US8250102B2 (en) | Remote storage and management of binary object data | |
KR101376916B1 (ko) | 소프트웨어 애플리케이션을 신규 버전의 소프트웨어 애플리케이션으로 점진적으로 업그레이드하기 위한 방법, 기계 판독가능 저장 매체를 포함하는 제품 및 장치 | |
US9762664B2 (en) | Optimistic concurrency utilizing distributed constraint enforcement | |
US20090112870A1 (en) | Management of distributed storage | |
WO2006018843A2 (en) | A system and method for the synchronization of data across multiple computing devices | |
JP2023544518A (ja) | オペレーティングシステムを公開するためのブロックチェーンベースのシステムおよび方法 | |
CN115114372A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
AU2011253726B2 (en) | Synchronization server process | |
Bartlang | Architecture and methods for flexible content management in peer-to-peer systems | |
Hvelplund | A distributed CMS based on LAMP |
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 |