访问不同类型后端数据存储器的系统和方法

文档序号:6409044阅读:231来源:国知局
专利名称:访问不同类型后端数据存储器的系统和方法
技术领域
本发明涉及不同客户机之间数据交换和同步的方法和系统,特别是涉及使用与不同类型后端数据存储器链接的中央同步服务器对客户机之间数据的同步。
同步可定义为保持不同客户机之间数据的一致性,例如笔记本日历和个人数字助理(PDA)日历,并在这些客户机将数据存入具有不同标识符的不同数据格式中。同步数据还能包含完全的计算机程序或这些程序的一些部分。
经常是使用中央同步服务器,数据能通过它在不同的客户机之间进行交换(

图1)。中央同步服务器或者能本机存储全部数据(即当使用专有数据格式时),它通常由具有高负载的通信公司(carrier)(如Yahoo)使用,或者能直接访问后端数据存储器(store),如DB2、Domino或Exchange(见图2)。
后端数据存储器有它们自己的协议和机制用于访问和存储信息。尽管关系数据库使用ODBC作为公共接口,例如存储个人信息管理(PIM)的数据库,但数据通常被以专有方式访问并依赖于内容的很特定的数据结构。这造成基于万维网(Web)服务器的应用依赖于特定的数据库和被访问内容的特定类型。当对于现有的软件采用新的数据库和新的内容类型时便需要付出很大的努力。
例如,在下列情况中下,要开发一个涉及很多不同数据库制造商和多种多媒体内容的大规模同步解决方案是相当困难的同步引擎(它包括同步多个客户机设备的逻辑)需要适应于每个被支持内容类型和每个被连接的数据库。事实上,今天的同步引擎强烈依赖于含有这些数据的后端存储器。为实现复杂的同步引擎而进行的大量投资只是使一个或几个后端系统受益(图3)。
如果一个通知系统要通过发送那些被收集和存储在不同后端系统中的数据来通知用户的话,也会出现同样的问题。同样,从不同系统聚集数据的门户需要不依赖于系统的方法去访问信息。
美国专利5,974,238描述了一种装置,用于实现在手持计算机和主计算机中存储的数据之间的动态同步,每个计算机有多个数据集,包括至少一个共同数据集,每个计算机有该共同数据集的副本。该手持计算机有处理器、通信端口和数据同步引擎。该数据同步引擎有一个伪高速缓存以及与该伪高速缓存连接的一个或多个标记(tag)。每当数据被写入主存储器和/或当相关联的伪高速缓存标记变为无效时,数据便被同步。通过严格地遵守一组协议实现了数据的一致性,因为系统总是知道谁拥有该数据,谁有该数据的副本和谁已修改了该数据。数据同步引擎消除各副本之间的任何差别并允许在主计算机中和在手持计算机中存储共同数据集的相同副本。
这一现有技术专利没有针对使用后端数据存储器的同步体系结构。所以,上述与后端数据存储器有关的问题或者没有被上述专利应对或者没有被上述专利解决。
所以,本发明的目的是提供一种新的方法和系统,用于在使用与不同类后端数据存储器链接的中央同步服务器的体系结构中数据的交换和同步,然而又避免现有技术解决方案中的缺点。
这一目的由独立权利要求的特征来实现。在附属权利要求中列出进一步的优选实施例。
本发明公开说明了一个框架,它允许同步引擎独立于后端数据存储器的体系结构和数据格式进行移动设备和后端数据存储器之间的数据同步。该框架引入内容适配器,它们从后端数据存储器中访问同步数据。这些适配器将数据转换成独立于后端数据存储器的表现形式,需要以通用方式访问不同后端的所有应用或模块都能使用这种表现形式。用于检测和解决冲突的通用同步引擎是这类模块的一个例子。能使用内容适配器的其他应用是“通知框架”或门户以及所有其他聚集数据的应用。针对任何后端数据存储器的问题由内容适配器的依赖后端的部分处置,这部分能容易地由第三方提供并插入该框架。
下面将参考附图更详细地描述本发明,其中图1显示本发明可基于的简化的同步体系结构,图2显示直接访问后端存储器的现有技术同步体系结构,图3显示具有不同后端数据存储器的现有技术同步体系结构,图4显示可由本发明优选实现的SyncML通信协议,图5显示本发明的内容适配器框架(CAF)的基本体系结构,图6显示CAF的一个优选实现,图7显示CAF接口,图8显示客户机、同步引擎、CAF以及具有会话认证的后端系统之间的通信流,图9显示如由CAF使用的继承模型,以及图10显示CAF特有过程流。
使用中央同步服务器进行不同客户机之间的同步基于一种同步协议,它通常由下列步骤构成预同步为准备实际同步,在发生这种同步之前必须采取一些行动。这些行动归属于以下各组认证、授权以及确定客户机能力。“认证”保证服务器是它自称的那个服务器,客户机是它自称的那个客户机。“授权”检验该客户机是否被允许进行所请求的行动(例如删除、更新或只创建新条目)。最后,服务器确定设备能力(如最大缓存区大小)以优化到客户机的数据流。
同步这是进行同步数据交换的部分。在两个同步伙伴之间,数据条目的所有局部ID被映射为两个伙伴都知道的全局ID。所以,每个伙伴有一个映射表,将局部ID映射为全局ID。然后,只有被更新的、新的或被删除的条目被交换。如果两个伙伴更新同一数据条目,则将会有一个冲突产生。能以不同的方式解决这一更新冲突试图合并这些更新,复制条目,让一个条目战胜另一个,或者只是什么也不做并报告该冲突,从而用户能解决它。
后同步在后同步阶段进行所有的清理任务,如更新映射表,报告未解决的冲突等。
一种广泛使用的同步协议是SyncML。SyncML提供基于XML的传输协议,用于不依赖该传输协议的同步。每个同步消息是一个XML文档。一个典型的SyncML系统示于图4,其中应用B(例如个人数字助理)在通过它的客户机同步引擎向SyncML框架(framework)发送同步数据。SyncML框架将API调用(如更新、创建)和数据翻译成有效的SyncML文档并将其发送给服务器。在服务器一侧,SyncML框架接收该文档,对其进行解析,然后将命令和数据发送给服务器同步引擎,然后该引擎与应用A(例如一个笔记本的Lotus Notes日历)对话。
图5显示本发明的内容适配器框架(CAF)的基本体系结构,该内容适配器框架用于移动客户机和不同类型后端数据存储器之间的通信体系结构中。
不同的移动客户机2、4、6经由无线或有线网关8和通过万维网服务器10访问同步引擎12,而同步引擎12经由CAF 20与不同类型的后端数据存储器24、26通话。CAF 20提供通过单一后端中性(neutral)接口(CAF接口22)访问不同后端数据存储器24、26的数据并容易地添加新的后端数据存储器的基础设施(infrastructure)。CAF 20由至少一个单一CAF接口22和一个或多个内容适配器28、30构成。
CAF接口22代表同步服务器10访问后端数据的单一接口,所以使数据检索与同步服务器分离。通过CAF接口22,同步引擎12能独立地从特定后端数据存储器24、26中访问内容。为了CAF接口22和同步服务器10之间的数据交换,优选地使用“数据对象”作为数据格式。
内容适配器基本上能提供所有数据存储器所特有的依赖关系。
在本发明的优选实施例中,每个内容适配器28、30包括一个抽象的独立于后端的部分(Back End independent part)和一个依赖后端的部分(Back End dependent part)。依赖后端的部分含有所有数据存储器特有的依赖性。它实现对同步的后端数据的访问和创建该数据的独立于数据存储器的表达形式(representation),使用CAF接口22将这种表达形式提供给同步引擎12或应用层。CAF特有过程流由内容适配器28、30的独立于后端的部分管理。独立于后端的部分提供对所有后端数据存储器通用(common)的功能,如排队机制、通信处理。
为了包括能由应用(例如同步引擎)使用的语义信息,定义共同数据对象的分类层次结构数据对象的特殊子类别描述所支持的数据类型的典型特性,如地址、日历、多媒体信息、关系数据库等。对于特定种类信息,能从通用标准中取出描述数据对象的特性,如用于地址薄信息的vCard(交换业务名片信息的标准格式)或用于日历条目的vCal(交换日历信息的标准格式)。应用XML甚至允许独立于特定数据库表示客户特有的数据库。
最后,框架20提供基础设施使得能容易地集成同步引擎12和后端数据存储器24、26之间的高速缓存机构,以用于大体量的系统或慢速后端系统(见图6)。
内容适配器提供可适用于不同后端系统(如Domino、DB2、Exchange)的快速读/写访问,支持多种SyncML消息,总是具有一致的数据并可适用于不同的内容格式。
由CAF的基本体系结构实现的方法可简要概括如下客户机请求与同步服务器进行同步会话。服务器认证客户机并接受同步会话。客户机向服务器发送更新。同步服务器创建数据对象并填入从客户机接收的更新。然后同步服务器调用CAF接口并移交数据对象。CAF选择内容适配器的适当的后端特有部分。
CAF调用后端特有部分并将数据对象传送给它。内容适配器的后端特有部分将数据对象转换成后端特有格式并调用后端特有API(应用编程接口)。
与现有技术相比,本发明的主要优点之一是使访问特定后端数据库与调用应用无关。CAF集成来自不同数据库提供商的部件并通过高级接口提供对它们的数据库功能的访问。
通过使用公共接口,内容适配器保证应用与多个后端系统之间的互操作性。例如,同步引擎不依赖于特定数据库的专有命令。再有,这些部件隐藏了在数据库和应用之间交换的内容的复杂性。这显著减小编程所需努力和解决方案的复杂性。还有,CAF允许后端系统提供商只为访问该后端数据存储器的不同应用开发一个接口。这节省了双方(应用提供商和后端提供商)的大量时间和金钱。
CAF允许·同步引擎使用同一协议和API与不同的后端系统对话·后端系统提供商创建它们自己的为它们的后端系统定制的内容适配器·提供同步引擎、CAF和处理认证的后端系统之间的会话,使能重用后端连接以提高效率·允许使用高速缓存系统实现同步引擎与CAF的低延时通信·允许部件的负荷平衡和防故障分布图6显示CAF的优选实现。CAF100包含CAF接口22、内容管理器30和高速缓存机构。
CAF接口22提供单一接口供同步服务器访问后端数据存储器24,所以使内容检索与同步服务器10分离。
内容管理器30向后端管理器80转发认证和后端管理请求(例如得到同步锚点),使用持久性存储器40向高速缓存50写新的数据,以及通过持久性存储器40从高速缓存50得到更新。在后端上进行搜索和执行命令。
高速缓存机构提供永久性高速缓存50以及将更新缓存到高速缓存50中并使缓存的更新与各客户机同步的机构。永久性高速缓存50可以是关系数据库,如Oracle或IBM DB2,并可例如经由JDBC调用被访问。优选地,该高速缓存机构由高速缓存监视器70、后端监视器60、后端管理器80以及持久性存储器40构成。后端管理器80包括抽象后端管理器80”及其后端特有(specific)部分80’(内容适配器),高速缓存管理器70包括抽象高速缓存管理器70”及其后端特有高速缓存监视器部分70’(内容适配器),而后端监视器60包括抽象后端监视器60”及其后端特有后端监视器部分60’(内容适配器)。
高速缓存监视器70主要用于将全部新数据从高速缓存复制到后端数据存储器,取决于后端要求,可采用不同的复制策略,如批复制或涓流(trickle)复制。如果主要目的是更好地支持同步客户机,而不是正常的(regular)后端客户机,则优先批处理方式。高速缓存监视器70的依赖后端的部分(Back End dependent part)70’是针对每个后端数据存储器的,必须利用后端数据存储器(如DB2、Domino)的特性。它还把同步对象翻译成内容存储特有格式(如Lotus Domino或MS Exchange)。
后端监视器60把在后端数据存储器中发生的更新从同步服务器外部涓涓注入高速缓存50(如正常的Lotus Notes客户机更新数据库)。这允许同步客户机总是与最新近的后端数据同步而无需对每次同步会话完全复制的开销。后端监视器60的后端特有部分60’是针对每个后端数据存储器的,它把内容存储特有格式(例如Lotus Domino或MS Exchange)翻译成CAF同步对象。
后端监视器能有不同的更新政策,包括进取型和懒惰型更新,以优化整个系统性能。
后端管理器80提供对后端数据存储器管理功能的访问。优选下列提供支持CAF的功能使用户认证有效、检索已认证用户的访问许可、检索当前后端特有时间戳(当前“同步锚点”)以及增加/去掉CAF想要监视其改变的URI。后端管理器80的后端特有部分80’是针对每个后端数据存储器的,它把内容存储特有格式(例如Lotus Domino或MSExchange)翻译成CAF同步对象。
要被同步的数据或者能直接存入远程内容存储器(后端)或由于性能的原因能持久地高速缓存在服务器上(本地的)。持久性存储器40使用持久性存储介质(如高速缓存)以优化对后端数据存储器的读/写访问,然而,该体系结构不阻止持久性存储器经由高速缓存50和后端监视器直接与后端数据存储器连接。
在上述CAF实现内的通信流可简要概括如下内容管理器30接收来自同步引擎12的请求并将它们转发给持久性存储器40(如果需要检索或存储数据的话)或转发给后端管理器(如果需要时间戳或请求认证的话)。该后端登记表(registry)(如果可以得到的话)含有全部可得到的后端管理器80和监视器60、70,并可从内容管理器30和持久性存储器40访问。高速缓存监视器70从持久性存储器40得到被更新的数据,把这些数据翻译成后端格式,并使用高速缓存管理器的依赖后端的部分70’将数据转发给后端数据存储器24。后端监视器60的依赖后端的部分60’从后端数据存储器24接收更新,将它们翻译成数据对象,并将它们转发给持久性存储器40。
在得不到高速缓存或对给定数据库指定了对后端24的直接访问的情况中,内容管理器30将getUpdates(得到更新)调用转发给后端监视器60,并将要被更新的项目转发给高速缓存监视器70。两个监视器将使用所提供的用户ID和口令访问后端。
以CAF认证同步引擎同步引擎有两种选择用于认证它对CAF的请求1.为每条命令提供所需要的后端用户ID和口令2.通过提供用户ID和口令向CAF请求关于一个后端的认证令牌。对于这一同步会话,发到CAF的每个后续命令都能以这一令牌(类似于LTPA令牌)认证。下列令牌类型可得到支持只读访问、读/写访问或无限制读访问,但写必须每次在后端认证。
向后端数据存储器认证CAF向后端数据存储器认证所需要的认证水平(level)存储在供每个后端数据存储器使用的访问控制列表中并由同步适配器检验。根据这一列表,CAF或者以对通过同步服务器更新他们的数据的所有用户有效的组用户和组口令、或者在每个用户的基础上向后端数据存储器认证其自身。
图7显示图6的优选实现中的CAF的接口(I/F)。
同步引擎12使用CAF接口22以通用方式访问后端数据存储器。为在通用同步引擎12和CAF接口22之间有效地交换数据,优选地,CAF接口22使用原值(raw value)二进制编码方案供数据交换。这些原数据与CAF元数据一起作为ActionData对象嵌入SyncObj。
CAF元数据是·时间戳,代表SyncObj的当前同步锚点。它作为java.sql.Timestamp类对象存储。
·ActionType,代表SyncObj的数据行动类型。可能的值在类常数中定义(创建、更新、删除)。它作为短值存储。
·GUID,代表后端特有的SyncObj全局id。它作为java.lang.String值存储。
·CUID,代表CAF特有的SyncObj高速缓存id。它作为java.lang.String值存储。
·DatabaseURI,代表SyncObj属于的那个后端数据库的URI。它作为com.ibm.caf.URI类对象存储。
·userID,代表发起SyncObj属于的同步的那个客户机的用户id。它作为java.lang.String值存储。
CAF特有过程流的接口抽象监视器类提供把后端特有监视器集成到CAF体系结构中所需的基本功能。提供了两个抽象类,称作抽象高速缓存监视器和抽象后端监视器,它们能用于通过继承创建新的监视器类(见图8)。
这些抽象类提供如下功能·用于不同更新政策(涓流/批量更新)的排队机制·在后端登记表上的登记/去掉登记·为在系统偏好部件上进行更新所用的读和登记·处理与CAF持久性存储器(高速缓存)的通信CAF特有过程流由抽象后端监视器60和抽象高速缓存监视器70通过这一专利申请中定义的接口进行管理。与后端数据存储器24的直接通信是在后端特有部件70’、60’中实现的,这两个部件是从抽象监视器类继承的(见图9)。
每个监视器实现一个内部队列,它使得能采取不同的更新和数据传输政策。取决于使用情况,可能必须成组向后端发送被更新的数据或以大的时间间隔进行更新。
抽象监视器部件实现一个可配置的排队机制,它提供如下更新政策量触发器(Amount Trigger)
量触发器监视内部队列的大小。当达到某个可配置的阈值时它便传播所收集的项目。这一更新政策能用于配置特定监视器中的批(阈值>1个项目)或涓流(阈值=1个项目)更新机制。
间隔触发器间隔触发器监视自上一次传播以来已过去的时间。当达到某个可配置的时间间隔时,它将发送所收集的项目。
组合触发器组合触发器利用上述两种政策每当这两个触发器之一被激活时它将传播所收集的项目。
会话处理会话处理的主题主要适用于高速缓存监视器,它是整个CAF处理的一部分。在后端监视器中的会话处理完全依赖于后端特有的实现。
高速缓存监视器有两种不同的使用模式带有或不带有CAF高速缓存。当使用高速缓存时,根本不支持任何会话处理。更新从高速缓存异步复制到后端。由于对后端数据库的访问是通过一个类似于系统管理员的用户帐户来进行的,所以对所有正在发生的更新,将各个连接组合起来(pooling)是可能的。
在不使用高速缓存的情况中,使用方法beginConnect()和endConnet()进行会话处理。所有更新在“每用户”基础上分组,这允许每个进行同步的用户利用给定的证书进行连接组合。
图8显示用于双向同步的同步流,利用由本发明CAF优选采用的会话认证。
当客户机有被更新项目A、B和F,被删除项目C和被创建项目D时进行客户机和服务器之间的双向同步。经由外部客户机(例如Notes客户机),在后端上创建了E,而B、C和F被更新。
来自客户机的包1发送请求后端数据存储器的证书。同步引擎把这些证书转发给CAF供确认。CAF请求负责的后端确认这些证书并向同步引擎返回一个同步会话有效的认证令牌。对于这一同步会话,这一令牌需要包括在将来对CAF的任何请求中。
在包3中,客户机向同步服务器发送它的更新。同步引擎通过呈现认证令牌,从CAF请求后端更新。现在同步引擎比较列表、解决冲突和把被更新的条目提供到CAF和客户机。CAF把这些更新存储在它的高速缓存中,并在其后将这些改变复制到后端系统中。
不与CAF交互作用的同步引擎利用映射表信息处理包5。
权利要求
1.一种使用中央同步服务器(10)在不同客户机(2、4、6)之间进行数据交换的系统,该中央同步服务器具有与所述客户机(2、4、6)的连接和与后端数据存储器(24、26)的连接,其中所述客户机具有用于创建被同步数据的程序和利用所述中央同步服务器(10)进行同步的同步引擎(12),其中所述系统的特征在于进一步包含与所述同步引擎(12)接口的单一后端中性接口(CAF接口;22),以及至少一个包含依赖后端的部分的部件(内容适配器;28、30),该依赖后端的部分具有与所述单一后端中性接口(22)及所述后端数据存储器(24、26)接口的接口。
2.根据权利要求1的系统,其中所述部件(28、30)进一步包含抽象的独立于后端的部分,其中所述抽象的独立于后端的部分提供由所有依赖后端的部分使用的通用功能。
3.根据权利要求2的系统,其中每类后端数据存储器(24、26)被赋予一个自己的部件(28、30)。
4.根据权利要求1的服务器,其中所述数据交换是数据的同步。
5.根据权利要求2的系统,进一步包含一个高速缓存(50),用于永久性缓存所述后端数据存储器(24)和所述客户机的更新,所述部件(28、30)包含一个高速缓存机构,用于控制和执行将更新缓存到所述高速缓存中和将被缓存的更新复制到所述各客户机和所述后端数据存储器(24)。
6.根据权利要求5的系统,其中所述高速缓存机构具有一个后端监视器(60)。
7.根据权利要求5的系统,其中所述高速缓存机构进一步具有一个高速缓存监视器(70)。
8.根据权利要求6的系统,其中所述高速缓存机构进一步具有一个后端管理器(80)。
9.根据权利要求6的系统,其中所述高速缓存机构为每类后端数据存储器(24)提供自己的后端监视器、高速缓存监视器和后端管理器,它们分别具有依赖后端的部分(60’、70’、80’)及抽象的独立于后端的部分(60”、70”、80”)。
10.根据权利要求5的系统,其中所述高速缓存机构进一步包含持久性存储器(40)。
11.根据权利要求7的系统,所述高速缓存监视器(70)以批方式或连续涓流方式将更新从所述高速缓存复制到后端数据存储器(24)。
12.根据权利要求6的系统,其中所述后端监视器(60)以批方式或连续涓流方式在所述高速缓存(50)和后端数据存储器(24)之间复制更新。
13.根据权利要求5的系统,其中所述高速缓存(50)和所述后端数据存储器(24)是数据库。
14.根据权利要求1的系统,其中所述客户机是移动客户机。
15.根据权利要求4的系统,其中的同步协议是SyncML。
16.使用权利要求1-15的系统对数据进行同步的方法,包含如下步骤接收来自所述客户机的同步会话请求,针对所述同步服务器认证所述客户机,接收来自所述客户机的更新,使用后端监视器通过所述CAF接口针对后端数据存储器认证所述客户机,利用所述同步服务器创建数据对象并填入从所述客户机接收的所述更新,调用所述CAF接口并移交所述数据对象,选择赋予所述后端数据存储器的所述部件的适当的后端特有部分,将所述数据对象CAF转换成后端特有格式,通过调用后端特有部分和向其传送数据对象来执行所述更新。
17.根据权利要求16的方法,其中所述后端特有部分是从赋予所述后端数据存储器的所述抽象的独立于后端的部分继承下来的。
18.根据权利要求16的方法,其中所述数据对象用于将所述客户机请求传送给后端特有部分。
19.根据权利要求18的方法,其中所述数据对象包含元数据。
20.根据权利要求16的方法,其中在所述客户机和所述中央同步服务器之间使用的同步协议是SyncML,由所述中央同步服务器接收的所述更新被作为XML文档被呈现。
21.一种存储在数字计算机内部存储器中的计算机程序产品,含有软件代码部分执行根据权利要求16-20的方法,如果该产品在该计算机上运行的话。
全文摘要
本发明公开了一个框架,它允许同步引擎在移动设备和后端数据存储器之间同步数据而独立于后端数据存储器的体系结构和数据格式。该框架引入内容适配器,它们访问来自后端数据系统的同步数据。这些适配器将数据转换成独立于后端数据存储器的表现形式,这种表现形式能由需要以通用的方式访问不同后端的所有应用或模块使用。用于检测和解决冲突的通用同步引擎是这类模块的一个例子。能使用内容适配器的其他应用是通知框架或门户以及所有其他聚集数据的应用。
文档编号G06F9/52GK1653457SQ03811176
公开日2005年8月10日 申请日期2003年4月4日 优先权日2002年5月31日
发明者乌维·汉斯曼, 斯特凡·海波, 劳萨尔·梅尔克, 托马斯·斯托伯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1