用于中央同步服务器的缓存机构的系统和方法

文档序号:6423363阅读:247来源:国知局
专利名称:用于中央同步服务器的缓存机构的系统和方法
技术领域
本发明涉及不同客户端之间的数据同步的方法和系统,尤其涉及使用经网络与后端数据存储器相连的中央同步服务器在移动客户端之间进行的数据同步。
背景技术
同步可以被定义为在不同客户端之间保持数据的一致性,例如,保持笔记本日历和个人数字助理(PDA)日历之间数据的一致性,并且这些客户端的数据用不同的标识符以不同的数据格式存储。同步数据也可以包括完备的计算机程序或这些程序的部分。
通常,通过使用中央同步服务器,数据可以在不同的客户端之间进行交换(见图1)。中央同步服务器可以本地存储所有的数据(即在使用私人数据格式时),这些数据通常由具有高负载的运营商(例如,雅虎)使用,或者可以直接访问像DB2、Domino或Exchange那样的后端数据存储器。对后端数据存储器的直接访问所具有的不利之处是,同步过程可能非常耗费时间,这取决于中央同步服务器和后端数据存储器之间的业务量。对移动电话的用户而言这是非常不利的,因为他们必须为与后端数据存储器的连接时间支付费用。
美国专利5,974,238描述了存于手提式计算机和主计算机的数据之间的动态同步的装置,其中手提式计算机和主计算机每个均具有包含至少一个公共数据集合的多个数据集合,每个计算机具有公共数据集合的副本。手提式计算机具有处理器,通信端口和数据同步引擎。数据同步引擎具有伪缓存器,和一个或多个连接到伪缓存器的标记。当数据被写入主存储器时,和/或当相关伪缓存器标记无效时,数据要进行同步。通过严格遵守一组协议,取得数据的一致,因为系统总是知道谁拥有数据,谁拥有数据的副本,谁对数据进行了更改。数据同步引擎解析副本中的任何差异并使得主计算机和手提式计算机中存储有公共数据集合的相同副本。
这项现有技术专利并不涉及使用后端数据存储器的同步结构。因此,上述所提到的涉及后端数据存储器的问题不能被该项专利处理和解决。

发明内容
因此本发明的目的在于提供一种新方法和系统,用于在使用与后端数据存储器相连的中央同步服务器但避免了现有技术方案的缺点的同步结构中的数据同步。
该目的通过独立权利要求的方案来实现。进一步的优选实施例如从属权利要求所述。
本发明公开了使用与后端数据存储器相连的中央同步服务器在不同客户端之间进行数据同步的新同步结构,所述后端数据存储器还提供缓存器,该缓存器通过指派唯一缓存器标识(ID)将传入的更新永久缓冲到永久存储器中。写入新记录项到缓存器的同步服务器与从后端复制到缓存器的更新之间的写入冲突可以使用基于缓存器ID的阻塞机制来解决,使得在同步会话期间,只要来自客户端的具有相同缓存器ID的传入更新没有完全写入缓存器中,后端更新就被阻塞。在本发明的进一步的优选实施例中,时间标志被缓存机构额外赋给每个更新,从而允许只有当时间标志较新时,才在缓存器中缓存更新。缓冲到该缓存器中的更新可以通过缓存机构以不同模式,例如批处理模式或连续模式,在后端数据存储器和客户端之间往返复制。本发明最好适于这样的同步结构,其具有大量的客户端连接到中央同步服务器,而后端数据存储器的阻塞,到后端数据存储器的连接和传输为最小。中央同步服务器与后端数据存储器的分离并使用缓存器允许比直接访问后端数据存储器处理更高的负载,因为缓存机构能够批处理更新请求并仅将批处理发送到后端数据存储器,这比针对每个更新请求均与后端数据存储器联系的方式更加有效。


本发明将结合附图进行更详细的描述,其中图1示出了本发明可基于的简化同步结构;图2示出了最好可被本发明实施的SyncML通信协议;图3示出了直接访问后端数据存储器的现有技术同步结构;图4示出了使用发明缓存机构的同步结构;图5示出了如图4所示使用提供有时间标志的缓存机构的本发明同步结构的优选实施例;图6示出了经过中央同步服务器连接到缓存器的客户端之间更新同步的方法步骤;图7示出了利用缓存器对后端数据存储器的更新进行复制的方法步骤;图8示出了利用后端数据存储器对缓存器中出现的更新进行复制的方法步骤;图9示出了本发明的扩展缓存机构。
具体实施例方式
使用中央同步服务器的不同客户端之间的同步基于通常包括下列步骤的同步协议预同步为了准备进行实际的同步,在可以实际同步之前必须采取的某些动作。这些动作分成下列类别认证,授权和确定客户端能力。认证确保服务器是其要求的服务器,客户端是其要求的客户端。授权检查客户端是否被允许执行所请求的动作(例如,删除,更新或仅仅建立新记录项)。最后,服务器确定设备能力(例如,最大缓冲器的大小)以优化流向客户端的数据流。
同步这是交换同步数据的部分。在两个同步方之间,所有数据记录的本地ID都被映射成双方已知的全局ID。因此每一方都具有一个将本地ID映射到全局ID的映射表。于是,只有更新过的、新的或删除的记录项被交换。如果双方更新相同的数据记录项,将会产生冲突。这种更新冲突可以用不同的方式加以解决尝试合并更新,复制记录项,让一个记录项优先于另一个记录项,或只是简单地报告冲突,以便用户能够来解决。
后同步在后同步过程中,进行所有的清理工作,例如更新映射表,报告未解决的冲突等等。
广泛使用的同步协议是SyncML。SyncML为独立于传输协议的同步提供了基于XML的传输协议。每个同步消息均是一个XML文件。通常的SyncML系统如图2所示,其中应用B(例如个人数字助理)正通过它的客户端同步引擎发送同步数据到SyncML框架。SyncML框架将API调用(例如更新,创建,...)和数据转换成有效的SyncML文件并将其发送到服务器。在服务器侧,SyncML框架接收该文件,对其进行分析,然后将命令和数据发送到服务器同步引擎,服务器同步引擎则与应用A(例如,笔记本上的Lotus Notes日历)进行对话。
在图3中,给出了现有技术中直接访问后端数据存储器的同步结构。客户端A和B可以是移动客户端(例如,移动电话或个人数字助理),其与中央同步服务器(同步服务器(SynchServer),特别是同步引擎(SyncEngine))具有有线或无线连接。来自移动客户端的更新或新记录项经SyncML适配器发送到同步引擎。中央同步服务器针对后端数据存储器直接读出和写入更新。中央同步服务器和后端数据存储器之间的通信可以是Java JDBC调用,ODBC调用,SOAP或HTTP请求,或专用通信协议。后端数据存储器可以是类似Oracle或IBM DB2的关系数据库,或者类似Microsoft Exchange或LotusDomino的非关系型数据库。后端数据存储器经Intranet或Internet与中央同步服务器相连。这可能在下列情形产生瓶颈与后端数据存储器的慢速连接;在后端数据存储器上进行的读/写是慢操作;后端数据存储器无法进行很好的调节;后端数据存储器不支持精细粒度的数据记录或块的阻塞。
图4给出了本发明的基本同步结构。与现有技术中的同步结构(见图3)相比较,本发明基本上提供了永久(permanent)缓存器24,和将更新缓冲到缓存器24中并将使缓存的更新与各个客户端2、4同步的缓存机构。该永久缓存器24可以是像Oracle或IBMDB2这样的关系数据库,也可以通过例如JDBC调用进行访问。缓存机构最好包括缓存监视器20,后端监视器18和缓存器管理部件。缓存监视器20控制从缓存器到后端数据存储器16的客户端更新的复制。后端监视器18控制从后端数据存储器到缓存器24的后端更新的复制。缓存器管理部件23为中央同步服务器6(同步服务器),缓存监视器20和后端监视器18提供用于访问已缓存的更新的接口。缓存器管理部件23也提供创建缓存器ID,将缓存器ID映射到后端ID和将后端ID映射到缓存器ID的功能。当中央同步服务器6正将更新写入缓存器24时,缓存监视器20以及后端监视器18接收至少含有指派给待缓存的更新的缓存器ID的消息。借助于含有后端ID和指派的缓存器ID的映射表26,只要来自客户端的具有相同缓存器ID的更新没有完全被缓冲到缓存器24中,后端监视器18就阻塞每个传入更新从后端数据存储器到缓存器24的缓冲。最好由中央同步服务器启动的同步过程被针对缓存监视器20的同步启动调用(beginSync)打开,并且被针对缓存监视器20的同步结束调用(endSync)关闭。在同步会话期间,缓存监视器20不允许复制带有缓冲到缓存器24中的beginSync调用的缓存器ID的更新。
图5示出了本发明的进一步的优选实施例。与图4中所示的基本同步结构相比,这个优选实施例还包含永久(persistent)存储器22。永久存储器22代替图4中的缓存器管理部件23,并提供后端ID和缓存器ID之间的映射,确保只有具有较新的时间标志的更新才被写入缓存器24中。例如客户端A2打开与中央同步服务器6(同步服务器)的同步会话,并发送至少包含本地通用标识符(LUID),版本号和要更新的数据的更新1。LUID唯一标识客户端数据存储器上的数据记录。中央同步服务器6具有映射表10,用于将客户端的LUID(包含客户端ID和数据库URI)映射到缓存器ID,缓存器ID用于在缓存器24上标识更新请求。客户端使用递增计数器作为时间标志,因为许多移动客户端2、4在其数据存储器中不支持时间标志。同步服务器6的同步引擎12(同步引擎)部分知道将更新的版本号映射8到同步会话时间标志。同步引擎12正将带有同步会话时间标志和缓存器ID的更新发送到永久存储器22。永久存储器22将此更新的时间标志与缓存器中的更新的时间标志相比较。如果更新请求的时间标志较新,则该更新请求被缓冲到缓存器24中。如果更新请求不新,则此更新请求被忽略。同时,出现后端数据存储器16中的更新,并且后端监视器18正通过包含时间标志,后端ID和要更新的数据的更新19来调用永久存储器22。永久存储器22将后端ID映射到所指派的缓存器ID,比较时间标志,并且如果传入更新的时间较新,更新缓存器24。这两个更新的结果如图6所示。
图6示出了如何使来自客户端的更新通过中央同步服务器与缓存器中的数据同步的本发明方法步骤。
客户端,例如移动电话,请求2与同步服务器(同步服务器)进行同步会话。在更新能够被发送到中央同步服务器之前,必须完成客户端和中央同步服务器之间的认证。如果认证成功4,则中央同步服务器接受同步过程,并且客户端可以发送其更新6。
更新最好包含版本号,LUID和要更新的数据。中央同步服务器接收8更新,并利用映射表将版本号转换成所指派的时间标志。在下一步骤中,利用含有LUID和其指派的缓存器ID的映射表对更新的LUID进行映射10。如果LUID不包含12在缓存器映射表中,永久存储器创建14新的缓存器ID并用它来更新映射表。如果该LUID已经含于缓存器映射表中,中央同步服务器请求16永久存储器在缓存器中缓冲更新。接着,永久存储器检查18、20传入更新的时间标志,和缓存器中已缓冲的具有相同缓存器ID的更新的时间标志。如果传入更新的时间标志较新,则传入更新覆盖22缓存器中的旧更新。如果时间标志较旧,则传入更新被忽略21。
图7示出了来自后端数据存储器的更新如何在缓存器中被复制的方法步骤。假定访问后端数据存储器的应用在后端数据存储器中更新记录项,例如一位秘书可以在后端数据存储器中产生其主管的日历数据的更新。每个记录更新包含后端ID,时间标志和要更新的数据。按照下列模式可将更新数据发送到后端监视器后端数据存储器向后端监视器通知每个新记录项或更新。后端监视器为接收更新而发起读请求。这种模式被称为推送(push)模式,或者后端监视器周期性地启动针对后端数据存储器的查询。后端数据存储器返回更新或新记录项的后端ID。借助于该后端ID,后端监视器启动对那些更新的访问。这种模式被称为轮询(polling)模式。
后端监视器从后端检索更新并将后端数据格式转换成包含后端ID和时间标志的缓存器数据格式4、6。后端监视器将更新发送8到永久存储器,该永久存储器根据映射表将后端ID映射到指派的缓存器ID。如果后端ID没有含在映射表中,永久存储器创建新缓存器ID 12并将新缓存器ID.和指派的后端ID插入到映射表14中。接着永久存储器将检查传入更新的时间标志与缓存器中已存在的更新(如果有)的时间标志。
如果传入时间标志较新,则缓存器中的更新被覆盖20。如果该时间标志较旧,则传入更新被忽略18。
图8示出了如何通过同步服务器(同步服务器)在后端数据存储器中复制缓存器中出现的更新的方法步骤。按照如图6所示的方法步骤,在缓存器中更新记录项。永久存储器现在向缓存监视器通知4缓存器中的新记录项。缓存监视器使用6映射表选择对应于新记录的缓存器ID的指派后端ID。如果该缓存器ID在映射表中没有指派的后端ID,缓存监视器被启动以创建新的后端记录项。起初,缓存监视器将含有时间标志和记录项数据的缓存器数据转换10成后端系统的数据格式,与后端数据存储器建立连接,并在后端数据存储器中创建12含有时间标志,更新数据和后端ID的新记录项。新后端ID经缓存监视器被发送到永久存储器16,此永久存储器将这个新后端ID插入含有缓存器ID和相应指派的后端ID的映射表中。如果该缓存器ID在映射表中有指派的后端ID,则通知20缓存监视器在后端中启动该更新记录项。缓存监视器将更新记录项的缓存器数据格式转换22成后端数据格式,含有时间标志和后端ID的更新记录项在后端存储器中得到执行24。
图9示出了扩展缓存机构。这里外部应用10经拦截器(interceptor)12访问后端数据存储器16。拦截器12了解同步服务器的缓存器24,并在从后端数据存储器16检索数据之前首先查看该缓存器。这解决了读写冲突问题,但是从外部应用的观点来看,当然这是一种低性能的折衷考虑。
总之,与最接近的现有技术相比,本发明的优点如下后端数据存储器的每一次变化都立即复制到缓存器中。当存在缓存器复制时,不阻塞同步服务器。当同步服务器正对缓存器进行写入操作时,缓存器和后端数据存储器的更新均被完全阻塞。为了取得最高性能,可针对实际使用情景,例如批处理或滴流(trickle)模式,对缓存器更新策略和后端更新策略进行更精细的调节。
如果需要,外部应用的读写冲突可以通过使用拦截器进行解决。
权利要求
1.一种通过使用中央同步服务器(6)在不同客户端(2、4)之间同步数据的系统,所述中央同步服务器具有到所述客户端(2、4)的连接,和到后端数据存储器(16)的连接,其中所述客户端具有产生要同步的数据的程序,与所述中央同步服务器进行同步的同步引擎,其中所述后端数据存储器(16)具有与外部应用(15)之间的数据连接,以允许在所述后端数据存储器(16)中进行所述数据的更新,其中所述系统的特征在于以下部件缓存器(24),用于永久缓存所述后端数据存储器(16)和所述客户端(2、4)的更新,和缓存机构部件,用于控制和执行将更新缓存到所述缓存器(24)的操作,并且将所缓存的更新复制到所述各个客户端和所述后端数据存储器(16)。
2.如权利要求1所述的系统,其中所述缓存机构具有缓存器管理部件(23),它通过指派唯一缓存器标识(ID)提供在所述缓存器(24)中缓存所述客户端(2、4)的更新的功能,并且从所述缓存器(24)向所述客户端(2、4)复制更新,所述缓存机构还具有后端监视器(18),其中在同步会话期间,如果来自所述客户端的具有相同缓存器ID的更新没有完全被写入缓存器(24)中,后端监视器(18)阻塞更新从所述后端数据存储器到所述缓存器的缓存。
3.如权利要求1所述的系统,其中所述缓存机构具有永久存储器(22),其提供这样的功能,其中仅当时间标志比在所述缓存器(24)中缓存或正在缓存的具有相同缓存器ID的更新的时间标志新时,该功能将所述客户端或所述后端数据存储器(16)的更新缓存到所述缓存器(24)中。
4.如权利要求3所述的系统,其中所述永久存储器(22)还提供将缓存器ID映射到后端ID的功能。
5.如权利要求2所述的系统,其中所述缓存机构具有缓存监视器(20),它以批处理或连续滴流模式将更新从所述缓存器(24)复制到后端数据存储器(16)。
6.如权利要求2所述的系统,其中所述缓存机构具有后端监视器(18),它以批处理或连续滴流模式在所述缓存器(24)和后端数据存储器(16)之间复制更新。
7.如权利要求1所述的系统,其中所述缓存器(24)和所述后端数据存储器(16)是数据库。
8.如权利要求1所述的系统,其中所述客户端(2、4)是移动客户端。
9.如权利要求1所述的系统,其中同步协议是SyncML。
10.一种使用如权利要求1-9所述的系统在客户端之间进行更新同步的方法,包括步骤通过所述客户端的同步引擎从所述客户端接收包含版本号,LUID和更新数据的更新(2),使用映射表将所述更新的版本号映射到所指派的同步时间标志(8),使用映射表将所述更新的LUID映射到所指派的缓存器ID(10),仅当所述更新的时间标志比所述缓存器中具有相同缓存器ID的更新的时间标志新时,将包含时间标志和缓存器ID的更新数据缓存到所述缓存器中(20),使用映射表将所述更新的缓存器ID映射到所指派的后端ID(6),将所述更新的缓存器数据格式转换成所述后端数据存储器的数据格式(22),启动所述后端数据存储器中包含更新数据,时间标志和后端ID的更新(24)。
11.一种使用如权利要求1-9所述的系统在客户端之间进行更新同步的方法,包括步骤通过所述客户端的同步引擎从所述客户端接收包含版本号,LUID和更新数据的更新,使用映射表将所述更新的版本号映射到所指派的同步时间标志,使用映射表将所述更新的LUID映射到所指派的缓存器ID,仅当所述更新的时间标志比所述缓存器中具有相同缓存器ID的更新的时间标志新时,将包含时间标志和缓存器ID的更新数据缓存到所述缓存器中,如果将缓存器ID映射到后端ID的操作不成功,生成新的后端ID,将所述更新的缓存器数据格式转换成所述后端数据存储器的数据格式,启动所述后端数据存储器中的所述更新的新记录项,所述新记录项包含新记录项数据,时间标志和后端ID,将新的后端ID插入到映射表中。
12.如权利要求10或11所述的方法,其中在所述客户端和所述中央同步服务器之间使用的同步协议是SyncML,并且所述中央同步服务器接收的所述更新被表示成XML文件。
13.一种使用如权利要求1-9所述的系统从所述后端数据存储器向所述缓存器复制更新的方法,包括步骤由所述中央同步服务器从所述后端数据存储器接收包含更新数据,时间标志和后端ID的更新,将所述后端更新的后端数据格式转换成缓存器数据格式,使用映射表将后端ID映射成缓存器ID,仅当时间标志比所述缓存器中缓存的具有相同缓存器ID的更新的时间标志新时,从所述后端数据存储器向所述缓存器缓存所述更新。
14.如权利要求13所述的方法,其中在同步会话期间,如果来自所述客户端的具有相同缓存器ID的更新数据没有完全被写入到所述缓存器中,阻塞从所述后端数据存储器到所述缓存器的更新缓存。
15.如权利要求13所述的方法,还包括步骤当从后端ID到缓存器ID的映射不成功时,生成新的缓存器ID,和将所述新的缓存器ID插入到映射表中。
16.一种存储在数字计算机的内存中的计算机程序产品,包含当所述产品在计算机上运行时用于执行根据权利要求10至15的方法的软件代码部分。
全文摘要
本发明公开了使用与后端数据存储器相连的中央同步服务器在不同客户端之间进行数据同步的新同步结构,所述后端数据存储器还提供缓存器,该缓存器通过指派唯一缓存器标识(ID)将传入的更新永久缓冲到永久存储器中。写入新记录项到缓存器的同步服务器与从后端复制到缓存器的更新之间的写入冲突可以使用基于缓存器ID的阻塞机制来解决,使得在同步会话期间,只要来自客户端的具有相同缓存器ID的传入更新没有完全写入缓存器中,后端更新就被阻塞。本发明最好适于这样的同步结构,其具有大量的客户端连接到中央同步服务器,而后端数据存储器的阻塞,到后端数据存储器的连接和传输为最小。
文档编号G06F17/30GK1520562SQ02812723
公开日2004年8月11日 申请日期2002年6月25日 优先权日2001年6月30日
发明者乌韦·汉斯曼, 斯特凡·黑珀尔, 托马斯·施托贝尔, 道格拉斯·海因茨曼, 阿普拉逖姆·普拉卡亚萨, 施托贝尔, 黑珀尔, 乌韦 汉斯曼, 斯 海因茨曼, 逖姆 普拉卡亚萨 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1