请求和接收数据库改变通知的系统和方法

文档序号:6396132阅读:177来源:国知局
专利名称:请求和接收数据库改变通知的系统和方法
技术领域
本发明涉及数据库,更特别地,涉及注册数据库查询来接收数据库改变通知并发送指示已注册的数据库查询结果已改变的数据库改变消息的系统和方法。
背景技术
计算和网络技术已改变了日常生活的很多重要方面。计算机已成为家用商品而非奢侈品,教育工具和/或娱乐中心,它还向用户提供财务管理和预测、控制如加热、制冷、照明和安全这样的日常操作,并在持久可靠的媒体中存储记录和图像的工具。
已有的商业实践随着计算和网络技术而发展。例如,传统的银行交易包括收集如银行账号、存折和标识这样的信息、用专门时间到银行去、乘坐交通工具、排队等待并通过出纳员完成银行交易。今天,消费者可以通过因特网访问他/她的账户并通过点击鼠标按钮执行越来越多的可用交易,如查询余额、基金转账和账单支付。
随着计算和网络技术变得健壮、安全和可靠,更多的消费者、批发商、零售商、企业、教育机构、支持团体及其类似正在改变其模式并使用因特网而非传统方法来完成业务。例如,很多公司和消费者提供网站和/或在线服务(如,用于购买食品和衣服、搜索信息、发送电子邮件和玩交互式游戏)。在另一个例子中,股票市场网站可以向用户提供检索股票报价和购买股票的工具。
通常,客户应用的用户接口(如,网页)用于和服务器交互,服务器在可由客户程序访问的数据库中存储信息。数据库对可以在多个用户和应用之间共享的数据提供持续、持久的存储。客户应用通常通过查询从数据库中检索数据,查询返回的结果包含应用感兴趣的数据的子集。然后应用使用、显示、变换、存储或处理那些结果,并可以基于检索到的结果提交改变。
一旦检索到结果,可以对数据库中使原先检索到的结果中和数据库中的状态不一致的数据做出改变。这样的改变通常对保存原先检索到的结果的客户是不可见的,除非该客户向数据库重新提交请求。

发明内容
下面提供发明简单的概要以提供对本发明一些方面的基本理解。此概要并不是本发明全面的总述。其目的并不是标识本发明的关键/重要元件或限定本发明的范围。此概要唯一的目的是以简化的形式提供本发明的一些概念,作为后面更加详细的说明的先导。
本发明涉及注册数据库查询以在使注册时的查询结果和数据库的当前状态不一致的数据库改变发生时接收通知的系统和方法。
通常,用户请求可以初始化数据库查询以从数据库中检索满足该请求的数据。在很多情况下,数据库可以成为资源争用的源。例如,不止一个用户可以发送请求同时查询数据库得到类似的结果。然后数据库表示在用户之间共享的状态。共享状态争用会限制系统和/或架构的可伸缩性。在其他情况下,用户可以对数据库频繁执行类似的请求。例如,用户可以重复点击鼠标来对数据库发起类似的请求以定期刷新由应用和/或网页显示的数据并且/或者应用可以对数据库定期提交查询以确定数据库的状态是否已改变。例如,重复的数据库查询很耗时、降低带宽、降低性能并消耗很多资源。
现有的用于减少查询数量(如通过一个或多个用户)的技术包括在数据库外部保存经常使用的数据。然后用户可以使用保存的数据而不是重复执行查询。然而保存的数据的一致性和准确性被破坏,因为随后的数据库改变会使得保存的数据与(在已改变的数据库中的)当前数据不一致,而这为用户所不知。
根据本发明的一个方面,本发明的系统和方法减轻数据库负载(如减少查询)、增加可伸缩性并确保数据一致性。例如,一个或多个用户可以提交数据库查询并注册该数据库查询以在数据库改变更改了或会更改)已注册的数据库查询的结果时接收通知。
在实践中,查询的结果可以被保存在数据库之外(如在web服务器上的高速缓存中)并由用户使用,其中用户可以多次使用保存的结果,而非另外进行返回类似结果的查询。当发生的数据库改变会使随后的查询的结果和保存的结果不一致时,向用户发送通知,指示保存的结果已变得不一致。然后用户可以例如使用通知来使保存的数据变得无效、执行查询来刷新保存的数据,和/或忽略通知。
本发明包括注册数据库查询、维护查询注册信息、检测影响已注册的数据库查询的数据库改变、提供指示已注册的数据库查询已受到影响的消息的系统和方法。例如,注册接收数据库改变通知通常包括组装数据库查询注册信息并将其提供给服务器。当发生的数据库改变使数据库状态和原先的结果不一致时,关联的数据库查询注册信息变得可由消息发送服务访问。发送服务使用数据库查询注册信息来构建和发送改变消息。改变消息被用于帮助发送改变通知到和已注册的查询的结果关联的组件以通知所述组件原先的结果已变得无效。
所述系统和方法可用于各种环境,包括客户机/服务器环境(如,基于SQL的)和web环境。因此,本发明提供监控数据库查询的改变的方法并在已注册的查询的结果改变时得到通知。若用户使用已保存的从数据库检索到的数据并希望在保存的数据变得不一致、需要刷新向用户显示的数据、和/或需要基于改变的结果采取动作时得到通知,上述系统和方法是有利的。另外,本发明可以用于现有的架构以发挥安全性、可靠性及可伸缩性,并提供熟悉的编程环境。
对上述和相关目标的实现,本发明包括随后详细说明并由权利要求特别指出的特性。下述说明和附图详细阐述本发明展示性的特定方面和实现。然而这些只是实现本发明原理的各种方法中的一部分。通过下面对本发明的详细说明和附图,本发明的其他目标、优点和新特性将变得显而易见。


图1根据本发明的一个方面展示典型的数据库改变消息发送系统;图2根据本发明的一个方面展示典型的服务器;图3根据本发明的一个方面展示典型的数据鉴定系统;图4根据本发明的一个方面展示典型的注册系统;图5根据本发明的一个方面展示典型的通知系统;图6根据本发明的一个方面展示典型的客户机/服务器系统;图7根据本发明的一个方面展示另一个典型的客户机/服务器系统;图8根据本发明的一个方面展示典型的安全技术;图9根据本发明的一个方面展示典型的客户机/服务器系统;
图10根据本发明的一个方面展示注册和发送方法;图11根据本发明的一个方面展示第一个注册、发送和通知方法;图12根据本发明的一个方面是图10的延续;及图13根据本发明的一个方面展示典型的操作系统。
具体实施例方式
现参考附图对本发明进行说明,其中类似的编号在全文中被用于参考类似的元件。在下面的说明中,为了说明起见,阐明了很多特定的细节以提供对本发明的完整理解。然而,很显然,可以不用这些特定的细节来实现本发明。在其他情况下,以方框图的形式展示众所周知的结构和设备以帮助说明本发明。
如在此申请中所用,术语“组件”指计算机相关的实体,或者为硬件、硬件和软件的组合、软件,或正在执行的软件。例如,组件可以为,但不仅限于,在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用和服务器都可以视为计算机组件。一个或更多组件可以驻留在进程和/或执行的线程内且组件可以位于一个计算机上和/或分布在两个或更多计算机上。“线程”是进程内由操作系统内核调度执行的实体。如在技术中所知,每个线程有关联的“上下文”,所述上下文是和线程的执行关联的易变的数据。线程的上下文包括系统寄存器的内容及线程所在进程的虚拟地址。因此,包括线程上下文的实际数据随者执行而不同。
本发明涉及在数据库改变会影响已注册的数据库查询的结果时提供通知的系统和方法。所述系统和方法通常使用帮助传送数据库查询注册信息和发送数据库改变消息的服务代理、存储来自服务代理的数据库查询注册信息的队列以及发送数据库改变消息的通知发送服务。系统和方法可选地使用各种机制来接收注册请求、组装注册消息、发送注册消息、检测数据库改变、接收数据库改变消息并提供数据库改变通知。
参考图1,根据本发明的一个方面展示典型的数据库改变消息发送系统100(简称系统100)。系统100包括帮助传输数据库查询注册信息的服务代理、存储向服务代理110提供的数据库查询注册信息的第一个队列1201到第N个队列120N(N为大于等于1的整数)和至少部分基于数据库查询注册信息发送改变消息的通知发送服务130。第一个队列1201到第N个队列120N可以整体称为队列120。
通常,组件(如,客户机、用户和应用)可以用使用系统100的系统注册(如订阅)数据库队列。查询注册通常包括连接和/或独立于查询结果的请求提供数据库查询注册信息。数据库查询注册信息可以包括,例如,唯一的标识符、发送地址、队列名称、超时期间和各种通讯及安全选项。可以使用查询注册以在已注册的查询随后的执行会返回不同的结果时接收改变消息(如鉴定消息)。会产生改变消息的典型的数据库改变的例子包括插入、更新和删除,以及大纲的改变。应理解,可以附加使用过期期间(如,象包含在注册信息中的超时期间那样的超时期间)和/或其他准则。例如,数据库查询的注册可以包括提供过期期间,以使得将在注册的“X”秒后产生改变消息。
当其中随后的使用已注册的查询的请求会返回不同的结果的数据库改变发生时,向服务代理110提供数据库查询注册信息。另外,可以顺序和/或同时提供其他信息,如说明通知原因的信息给服务代理110。服务代理110顺序和/或同时向队列120中的一个提供数据库查询注册信息的至少部分,且服务代理110和/或队列120调用通知发送服务130。调用通知发送服务130包括激活通知发送服务130,如果它还没有被激活。已激活的通知发送服务130可以访问队列120并使用存储在其上的数据库查询注册信息来构建并发送改变消息到注册数据库查询的组件。如上所述,改变消息通常指示随后的查询会返回不一致的结果。
应理解,一个或多个组件可以注册一个或多个数据库查询,且所述一个或多个数据库查询可以返回类似的结果,如下所述。进一步来说,应理解,队列120中的任何一个都可以对一个或多个组件和/或一个或多个查询存储数据库查询注册信息。上述系统在队列120间提供同类的存储。例如,在本发明的一个方面,可以在类似的队列中存储返回类似结果的查询的数据库查询注册信息。因此,已注册接收和返回类似结果的查询关联的改变消息的组件的数据库查询注册信息可以由队列来分组。在本发明的另一个方面,和类似组件关联的数据库查询注册信息(如,一个或多个查询的)可以被存储在类似的队列中。因此,数据库查询注册信息也可以通过组件来分组。然而,应理解,也可以使用不同类的存储。另外,用于存储数据库查询注册信息的队列可以是缺省的,例如基于数据库查询注册信息和/或通过其他技术来选择。
再者,应理解可以激活不止一个通知发送服务。例如,在本发明的一个方面,可以激活多个通知发送服务来访问类似的队列来减轻队列中数据库查询注册信息的增加。在本发明的另一个方面,通知发送服务130可以访问不止一个队列120,并可以发送改变消息到一个或多个组件。在本发明的又一个方面,可以激活多个通知发送服务来访问多个队列120。
虽然图1为展示数据库改变消息发送系统100的组件的方框图,应理解,服务代理110、第一个队列1201到第N个队列120N和通知发送服务130可以作为一个或多个计算机组件实现,如计算机组件这个术语在此的定义。因此,应理解,根据本发明,用于实现数据库改变消息发送系统100、服务代理110、第一个队列1201到第N个队列120N和/或通知发送服务130的计算机可执行组件可以被存储在计算机可读媒体上,计算机可读媒体包括但不仅限于,ASIC(特定用途集成电路)、CD(光盘)、DVD(数字视频盘)、ROM(只读存储器)、软盘、硬盘、EEPROM(电子可擦除只读存储器)和存储器棒。
下面请见图2,根据本发明的一个方面展示典型服务器200。服务器200包括帮助存储和传输数据库查询注册信息的服务代理210、存储数据库查询注册信息的队列220和发送指示已注册的数据库查询结果已改变的改变消息的通知发送服务230。
服务器代理210帮助存储和发送数据库查询注册信息。如上所述,数据库注册信息在注册或订阅数据库查询的请求之后组装。然后数据库查询注册信息可以例如作为消息被发送到服务器200。典型的数据库注册消息是作为基于XML的文件(如“cookie”)来构建的,并通常包括位移的标识符、发送地址、队列名称和超时期间中的至少一个。
在服务器200通过已注册的数据库查询接收会改变随后的查询结果的数据库改变请求之后,向服务代理210提供数据库查询注册信息。应理解,可以使用各种技术来确定是否发生了数据库改变及改变是否将影响已注册的数据库查询的结果。
服务代理210在队列220中存储数据库查询注册信息的至少部分(如发送地址和唯一的标识符)并调用通知发送服务230。通常通过从数据库查询注册信息中抽取队列名称来确定所用的队列220。
在实践中,使用缺省的队列名称或最优选择的队列(如,部分基于概率、统计、学习模型(如,神经网络)和/或自适应技术)。如果查询注册信息并不包括合法的队列名称和/或队列不可访问(如,不存在),那么关联的查询可能会失败、随后对关联数据的更新可能会失败,且/或可能返回指示查询注册失败的警告(和结果一起,如果查询注册信息和查询同时提交)。
调用通知发送服务230包括激活通知发送服务230,如果它还没有被激活。提供激活机制减少与在会影响已注册的查询的结果的数据库改变之前配置和/或手动地初始化通知发送服务230关联的开销。然而,如果需要,可以预先配置通知发送服务230和队列。另外,激活机制提供“握手”来校验通讯以减少发送如果通知发送服务未被激活时可能丢失的信息。应理解通知发送服务230可以另外通过外部的刺激和/或用户由其他组件激活,例如在系统启动(如冷启动和热启动)时。
激活的通知发送服务230可以访问队列220。激活期间通常由参数确定,例如通过数据库查询注册信息、当通知发送服务230已被激活和/或作为缺省的时候在通知发送服务230的设置(如配置)期间数据库查询注册信息之前、同时和/或之后动态地发送的附加信息来提供所述参数。所述参数可以指定例如绝对时间长度(如,在激活后的“X”秒)、服务一定数量的队列项(如,队列220中的“Y”个项),和/或停止期间(如,在指定的时间期间内没有新的数据库查询注册信息被发送到队列220)。在激活期间过期后,停止通知发送服务130使其进入停止状态。
另外可以使用激活期间作为优化技术。例如,激活期间可以用来在已注册的数据库经常改变时维护通知发送服务230和队列220之间的连接。维护该连接降低频繁激活通知发送服务230的成本。进一步来说,激活期间可以设置为“一直为开”来保持通讯。再者,可以使用缺省激活期间和/或部分基于启发式方法的激活期间。
一旦被激活,通知发送服务230访问存储在队列220中的数据库查询注册信息。数据库查询注册信息被用来构建并发送指示已注册的查询随后的执行会返回不同结果的改变消息。数据库查询注册信息通常包括指示发送改变消息到何处的发送地址。发送地址可以被抽取用于发送改变消息。另外,数据库查询注册信息通常包括唯一的标识符,该标识符可以被用在改变消息中帮助通知运行时间服务(如下所述)发送鉴定通知(如,触发事件并设置标志)到注册为接收通知的组件。
可以确认和/或收回上述的数据库改变请求。在一个实例中,使用异步模型,其中数据库确认改变,无论通知发送服务230是否处理了队列220中的数据库查询注册信息。异步模型的优点是通知发送服务230可以在稍后的时间访问数据库查询注册信息,并且异步模型通过允许队列220中有一个以上的项来提供可伸缩性,其中一个或多个通知发送服务可以顺序和/或同时访问队列220。
在另一实例中,使用同步模型,其中阻塞数据库改变,直到关联的数据库查询注册信息由通知发送服务230访问和/或改变消息被发送和/或接收(如由下面所述的通知运行时间服务)。同步模型通过确保改变消息在发送数据库改变之前被发送和/或接收来提供可靠性和健壮或一致的数据。
可以使用各种技术来确定数据库改变消息是否已被发送和/或接收。第一种技术包括来自接收设备的确认(如,ACK)。ACK可以指示成功(如未损坏的)发送改变消息并可以调用数据库改变的确认。第二种技术包括接收来自接收设备的否定确认(NAK)和/或无确认以指示发送不成功,其中数据库改变被收回、延期和/或推迟,直到改变消息被成功地发送到它预定的接收器和/或接收者。在第三种技术中,可以使用因特网包探索者(Ping)来确定通知发送服务230和接收设备之间是否存在通讯。通知发送服务230可以发送数据包到接收设备(如,通知运行时间服务)并等待回复。可以在改变消息之前、同时或在其后发送数据包。来自接收设备的回复可以校验存在通讯。
应理解,虽然在服务器200内展示服务代理210,服务代理210可以位于客户机或在其他服务器上。另外,服务代理210可以为数据库(如,基于SQL的),并可以包括一个以上的队列220和/或通知发送服务230。进一步来说,应理解,如上所述可以使用多个通知发送服务。例如,多个通知发送服务可以访问队列220。另外,多个通知发送服务可以顺序和/或同时访问多个队列(如,队列120),包括本质上类似的队列(如,队列220)。
再者,应理解在从队列220发送数据库查询注册信息到通知发送服务230的过程中可以使用中间组件(未标出)。例如,数据库查询注册信息在由通知发送服务230访问之前可以被存储在另一个媒体上。在本发明的一个方面,数据库查询注册信息可以被保存到日志文件。随后,通知发送服务230使用来自日志文件中的数据库查询注册信息。在本发明的另一个方面,可以使用缓冲来加快发送数据库查询注册信息到通知发送服务230。在本发明的又一个方面,数据库查询注册信息可以被卸载到中间组件及其类似来释放与数据库和/或服务代理210关联的资源以提高性能。应理解提供中间组件提高了系统的灵活性。
现参考图3,根据本发明展示典型数据鉴定系统300。数据鉴定系统300包括客户机310、服务器320、存储器330、服务代理340、队列350及通知发送服务350。
如在此所述,客户机310可以包括对服务器320注册数据库查询并从通知发送服务接收关联的改变消息的机制(未标出)。注册通常包括构建数据库注册消息,数据库注册消息包括例如数据库查询注册信息、发送地址、唯一的标识符(如全局唯一标识符,或GUID)、队列名称、超时期间和可选的附加信息,如通讯(如协议和端口)和安全(如加密和验证)选项。然后可以发送数据库注册消息到服务器320。应理解,根据本发明的一个方面,多个客户机(如,多个客户机310)和/或其他组件可以顺序和/或同时注册多个数据库查询。进一步来说,多个客户机可以注册返回本质上类似的结果的查询。
在本发明的一个方面,可以用查询(如和包括在数据库注册消息中的数据库查询注册信息关联的查询)发送数据库注册消息到服务器320。查询结果可以被存储在存储器330和/或其他存储设备中,包括web服务器上的存储。在存储器330中存储结果向客户机310和其他客户机提供在随后的查询会返回本质上类似的结果时使用存储的结果而非执行随后的查询的能力。在本发明的其他方面,数据库注册消息可以被发送到服务器320而不带请求结果。例如,客户机可以注册本质上类似于原先执行的查询的查询,其中原先执行的查询的结果被存储到存储器330并可以由客户机使用。在另一个例子中,客户机可以注册影响和改客户机关联的不同查询的结果的查询。在另一个例子中,如果需要,客户机可以注册接收对数据库的任何改变的鉴定通知。
应理解,存储的查询结果可以包括例如原始数据、变换后的数据和/或可查询的数据。原始数据是灵活的,并且可以使用各种变换技术来提供原始数据的其他表示。例如,原始数据可以表示为字母数字文本、符号、图像、表格和图表,并使用其他已知的形式和/或格式。存储变换的数据或对象节省变换时间并可以发挥现有的支持(如,响应高速缓存)。可以通过随后的使用可查询的数据集或其子集的请求来使用可查询的数据。例如,可查询的数据集可以包括多个分类,且随后的请求可以对多个分类和/或多个分类的子集查询数据集。
在服务器320接收数据库改变请求之后,向服务代理340提供数据库注册消息中的数据库查询注册信息。服务代理340至少放置数据库查询注册信息的部分在队列350中,并激活通知发送服务360。如上所述,数据库改变请求可以异步或同步进行确认。
然后通知发送服务360使用数据库查询注册信息来构建并发送改变消息到客户机310。例如,通知发送服务360可以从数据库查询注册信息中抽取并使用发送地址和唯一标识符(如,DUID)。唯一标识符通常包括在改变消息内,且改变消息通常被发送到发送地址(如,和客户机310关联的通知运行时间服务)。
在接收改变消息之后,可以抽取唯一标识符并用它来通知客户机310。然后,客户机310可以确定随后的动作。例如,在本发明的一个方面,客户机310可以执行另一个查询来刷新和显示和/或存储刷新的结果。在本发明的另一个方面,客户机310可以确定继续显示或使用存储器330中的结果,即使该结果和随后的查询返回的结果不一致。在本发明的另一个方面,客户机310可以再次注册数据库查询并/或使用自动重新注册以在另一个改变(如会变更查询结果的改变)发生时接收通知。在本发明的另一个方面,改变通知会触发其他处理,如记录改变信息和/或基于改变的数据采取行动。
图4根据本发明的一个方面展示典型注册系统400。注册系统400用于帮助数据库查询的注销(如对服务器200和320和任何基于SQL的服务器)。注册系统400包括消息装配器410、名字提供者420、时间提供者430、ID提供者440和地址提供者450。
消息装配器410接受数据库查询注册请求(如,订阅)、协调打包数据库查询注册信息并发送可以由象系统100-300那样的系统使用的数据库查询注册信息。如上所述,数据库查询注册信息通常包括队列名称、超时期间、唯一标识符和发送地址。然而,应理解上述数据库查询注册信息并不是对本发明的限制。可以根据本发明使用其他适合的信息。进一步来说,可以根据本发明的一个方面使用数据库查询注册信息的各种次序。
消息装配器410可以从一个或多个提供者420-450和/或其他组件(如,通知运行时间服务和/或通用监听程序,如在此所述)获取数据库查询注册信息。可以使用名字提供者420来提供队列的名称(如,队列120的一个的名称),所述队列在会使数据库的状态和原先返回的结果不一致的数据库改变发生之后存储和已注册的数据库查询关联的数据库查询注册信息。例如,名字提供者420可以从一个或多个可用的队列中随机选取队列名称,向用户提供定义的队列名称,并/或提供缺省的队列名称。在本发明的另一个方面,可以在数据库查询注册请求中包括队列名称,从而不使用名字提供者420。
时间提供者430对已注册的数据库查询提供超时期间。超时期间可以指定时间长度或过期期间,其中当超时期间过去时,数据库查询注册信息调用改变消息消息,即使未发生数据库改变,来指示超时期间已经过去。这可以通知用户任何对应于已注册的数据库查询的存储的结果不再可靠和/或准确,而服务器不必在很长的时间段内保留用户不再感兴趣的数据库查询的注册信息。
使用ID提供者440来分配唯一标识符(如,全局唯一标识符,或GUID)用于订阅。通常,唯一标识符提供关联正被注册的数据库查询与请求订阅的组件(如客户机、对象实例和相关性)的机制。例如,可以和命令、视图、表和/或资源关联。唯一标识符可以被用来发送鉴定通知到请求组件。
使用地址提供者450来提供发送地址。发送地址在发送改变消息来响应会影响已注册的查询的结果的数据库改变时由通知发送服务使用。发送地址指示改变消息的目标地址。例如,发送地址和对订阅注册的通知运行时间服务和/或通用监听程序(如,HTTP.sys)关联。应理解可以使用其他组件和系统来获取发送地址。例如,可以使用通知运行时间服务和/或通用监听程序来通过地址提供者450和/或通过其他技术,例如没有任何中间组件,提供发送地址。
在获取数据库查询注册信息之后,消息装配器410构建数据库查询注册消息。通常,数据库查询注册消息包括唯一标识符、发送地址、队列名称和超时期间。应理解,数据库查询注册信息可以在消息内不同地进行定位和格式化。例如,在本发明的一个方面,数据库查询注册信息是可以解析的经分隔的字符串。在本发明的另一个方面,使用数据库查询注册信息的二进制表示。在本发明的又一个方面,使用数据库查询注册信息的至少部分来构成“cookie”。例如,发送地址和唯一标识符可以作为“cookie”和/或基于标记语言(如XML)的消息来提供。
然后消息装配器410发送数据库查询注册消息。应理解可以在查询之前、同时和/或之后发送该消息。另外,可以在命令(如可执行命令)中和/或用存储过程发送该消息。当改变已注册的数据库查询的结果的数据库改变发生时,可以使用数据库查询注册信息来帮助发送鉴定通知到注册接收通知的组件。
应理解注册系统400、消息装配器410、名字提供者420、时间提供者430、ID提供者430和地址提供者440可以为如在此定义的计算机组件。
图5根据本发明的一个方面展示典型的通知系统500。通知系统500包括地址分配器510、输出组件520、消息接收器530和ID抽取器540。
通知系统500通常在接收到数据库查询注册请求之后被激活。例如,在接收到数据库查询注册请求之后,注册组件(如,注册系统400)可以激活通知系统500。
在激活后,通知系统500可以被用来获取数据库查询注册消息的发送地址和/或用于提供鉴定通知。地址分配器510可以被用来获取发送地址。在地址分配器510接收发送地址请求(如,通过对通知运行时间服务和/或通用监听程序注册,如下所述)之后,获取到发送地址并将其提供给输出组件520。然后发送地址被发送到请求组件(如注册系统400)。
另外通知系统500可以接受改变消息。例如,通知发送服务(如在此所述)可以被用来发送改变消息到通知系统500。消息接收器530接受改变消息。消息接收器530可以使用各种安全和鉴定技术来减少转发出错的改变消息。例如,根据本发明的一个方面,可以使用验证证书和/或唯一标识符校验。然后消息接收器530向ID抽取器540提供改变消息。ID抽取器540从数据库注册消息内获取唯一标识符。
然后由输出设备520使用唯一标识符来发送鉴定通知到注册接收通知的组件。例如,在本发明的一个方面,和向唯一标识符分配的注册实例关联的任何客户机都有通知(如,事件)。在本发明的另一个方面,使用标志和/或其他描述符来通知试图使用原先返回的查询结果的的任何客户该查询已变得无效。
图6根据本发明的一个方面展示典型的客户机/服务器系统600。应理解客户机/服务器系统600可以为基于SQL的客户机/服务器。应理解客户机/服务器系统600包括包含相关性实例610、可选的相关性交换机620、通知运行时间服务630和相关性关联640的客户机605,及包含检测单元650、数据库660、服务代理670、队列680和通知发送服务690的服务器645。
客户机605通过数据库查询注册请求发起注册。通常,数据库查询注册请求包括队列名称和/或超时期间。然而,应理解对上述和其他选项可以使用缺省值。创建相关性实例610来表示注册请求并提供一个或多个已注册的查询和要通知的客户机605之间的关联。在创建时,相关性组件610获取请求的唯一标识符。应理解,单个相关性实例610可以和一个或多个已注册的查询关联,其中会影响任何一个查询的结果的改变将产生通知(如,如果对任何查询的结果都发生改变,从几个数据库查询产生的结果都被确定无效)。标识符的唯一性可以对应于已注册的查询的分组,其中一个或多个查询可以在数据库改变时使聚合的结果无效。例如,可以对由不同的一组已注册的查询影响的结果获取不同的唯一标识符。
使用唯一标识符通过可选相关性交换机620对通知运行时间服务注册,其中相关性实例610提供唯一标识符并对相关性交换机620注册,然后相关性交换机620提供唯一标识符并对通知运行时间服务630注册。如果相关性交换机和/或通知运行时间服务630未被激活,那么在注册之前启动相关性交换机620和/或通知运行时间服务630。在注册后,通知运行时间服务630向相关性实例610提供发送地址。应理解可选相关性交换机620被用作优化技术,且当不使用它时,相关性实例610可以对通知运行时间服务630注册而不需要对如可选相关性交换机620这样的中间组件预先注册。另外,使用的通知运行时间服务可以从缺省值、客户机能力、数据库查询注册信息、配置、统计和/或自适应技术中选取。
上述注册技术可以通过向处理内的一个或多个相关性实例(如相关性实例610)提供对处理内的相关性交换机(如,相关性交换机620)注册的方法来减少处理之间的交叉参考,其中相关性交换机和/或来自多个处理(如相关性交换机620及其类似)的其他相关性交换机可以对通知运行时间服务630注册跨处理参考。
然后向相关性关联640提供发送地址、唯一标识符、队列名称、超时期间和/或附加信息,并随后将它们在注册消息中发送到服务器645。应理解,相关性实例610(及其他相关性实例)可以和一个或多个客户机组件关联并包括多个查询注册,其中对任何已注册的查询的结果的改变将导致本质上类似的客户机动作。如上所述,服务器645包括检测单元650、数据库660、服务代理670、队列680和通知发送服务690。
检测单元650可被用于维护数据库查询注册信息并确定何时对已注册的查询调用鉴定。例如,当接收到改变数据库660的请求时,数据库查询注册信息可以被用来确定已注册的查询是否和该改变关联。如果,已注册的查询的结果会改变,那么至少可以向服务代理670提供数据库查询注册信息。应理解检测单元650可以发送附加的信息,如鉴定原因(如,数据库改变(如上所述)、超时期间过期、存储器限制、查询复杂度、服务器重启和系统错误)和/或改变的内容(如,原始值和/或当前值)。
在发送数据库查询注册信息到服务代理670之后,检测单元650可以丢弃(如自动取消注册)或保留数据库查询注册信息。丢弃数据库查询注册信息确保随后的改变不会引起查询的另一个鉴定(如当注册查询的组件不再需要接收通知)。适合的丢弃数据库查询注册信息的技术包括静态丢弃(如,在调用鉴定后丢弃)、基于数据库查询注册信息的至少部分(如,丢弃字段或参数)丢弃、基于来自通知运行时间服务的响应的至少部分丢弃(如,保留数据库查询注册信息如果仍然有关联的组件监听鉴定,否则丢弃),及基于取代原先的注册消息的随后的注册消息丢弃。保留数据库查询注册信息提供接收和随后的数据库改变关联的附加鉴定的能力。
在从检测单元650接收数据库查询注册信息之后,服务代理670帮助存储并发送数据库查询注册信息到通知发送服务。服务代理670放置数据库查询注册信息在队列680中,且服务代理670调用通知发送服务690,如果是这样配置的。在激活时,通知发送服务690可以使用队列680中的数据库查询注册信息来构建指示已注册的查询的结果因为数据库改变已发生改变(如随后的结果已变得无效和/或与原先检索的结果不一致)的改变消息。应理解检测单元640也可以向通知发送服务690提供数据库查询注册信息对已注册的查询调用改变消息。
通知发送服务690使用数据库查询注册信息的至少部分来发送改变消息到客户机605的通知运行时间服务630。通知运行时间服务630使用在改变消息内的相关性唯一标识符来发送通知到对应的相关性实例610(可选地通过相关性交换机620)。然后相关性实例610向客户机605通知该改变。例如,在相关性实例610接收通知后,触发相关性事件且/或标志设置在随后尝试对该相关性实例注册时触发事件。应理解,多个客户机可以注册接收通知,且相关性实例610可以顺序和/或同时通知客户机605和位于类似的和/或不同的机器上的其他客户机。进一步来说,客户机605(或实例化相关性实例610的其他客户机)在发生改变时不再存在。然而,如果有的话,注册为接收通知的其他客户可以由相关性实例610通知。
应理解可以使用各种技术来减少由于通知运行时间服务630和通知发送服务690之间的通讯丢失产生的不一致的查询结果。例如,ACK/NAK通讯代码可以被用来确认无差错的传输并指示损坏的传输和/或无传输。在本发明的另一个方面,通知运行时间服务630可以轮询通知发送服务690。如果成功,则通讯通过校验。在另一个例子中,通知运行时间服务630可以被“关闭”。通知运行时间服务630可以在完成关闭之前提供通知(如,数据库状态未知)。可以用类似的方式使用通知发送服务690。例如,通知发送服务690可以轮询通知运行时间服务640。如果成功,那么通讯经过验证。如果不成功,则收回数据库改变,或不对它进行确认,直到通知发送服务690能够发送该改变消息。
图7根据本发明的一个方面展示另一个典型的客户机/服务器系统700。如客户机/服务器系统600那样,客户机/服务器系统600包括包含相关性实例610、相关性关联640的客户机605,及包含检测单元650、数据库660、服务代理670、队列680和通知发送服务690的服务器645。另外,客户机605进一步包括相关性监听程序710,且客户机/服务器系统700进一步包括用于客户机605和服务器645的通用监听程序700。
如上所述,客户机605通过数据库查询注册请求发起注册,这可以包括创建相关性实例610。创建相关性实例610产生唯一标识符(如,GUID),唯一标识符被用来对相关性监听程序710注册。相关性监听程序710(及其他相关性监听程序)产生唯一的URI对通用监听程序720进行注册(如,HTTP.sys或发送HTTP请求到用户模式的应用的内核模式的设备驱动器)。GUID和URI通过相关性实例610作为唯一标识符和发送地址暴露并在查询注册消息中被发送到服务器645。应理解唯一的URI的产生可以通过作为相对URI的部分的第二个唯一标识符来实现。另外,所用的通用监听程序可以从缺省值、客户机能力、数据库查询注册信息、配置、统计和/或自适应技术中选择。
查询注册消息由检测单元650接收和关联,检测单元650检测和已注册的数据库查询关联的数据库改变并在数据库改变发生,而其中已注册的查询随后的执行会返回不同的结果时向服务代理670提供数据库查询注册信息。如上所述,检测单元650可以发送其他信息,并可以维护随后的数据库改变的数据库查询注册信息,或取消查询注册(如,取消注册)。
服务代理670帮助存储和发送数据库查询注册信息到通知发送服务690。服务代理670放置数据库查询注册信息在队列680中,且服务代理670调用通知发送服务690。激活的通知发送服务690可以使用数据库查询注册信息来构建并发送改变消息。
通知发送服务690在改变消息中使用至少部分数据库查询注册信息,并将改变消息作为例如HTTP请求提供给通用监听程序720。通用监听程序720使用URI内的相对路径来发送请求到相关性监听程序710。相关性监听程序710可以使用数据库查询注册信息(如,相关性唯一标识符)来发送改变消息到相关性实例610来通知注册接收鉴定通知的任何客户机,包括客户机605。类似于客户机/服务器系统600,可以使用各种技术(如,ACK/NAK、Ping和自动鉴定)来减少使用由于通用监听程序720和通知发送服务690之间的通讯丢失造成的不一致的查询结果。
应理解使用相关性监听程序710和通用监听程序720使得不需要安装和激活(如,启动)服务,如客户机605上的通知运行时间服务。另外,由于可以使用80端口,能够通过防火墙发送改变消息和/或鉴定通知。然而,应理解可以配置该端口并且可以使用任何端口。
图8根据本发明的一个方面展示典型的安全技术。系统800包括客户机810、服务器820、注册请求通道830和改变消息通道840。
如上所述,客户机发起数据库查询注册或订阅。例如,客户机810请求数据库查询订阅,它可选地包括队列名称和超时期间。随后,获取另外的数据库查询注册信息,且构建数据库查询注册消息。数据库查询注册消息通常包括发送地址、唯一标识符、队列名称和超时期间,但可以包括附加的和/或其他信息。一旦被装配出,数据库查询注册信息就通过注册通道830被发送到服务器820。然后,在服务器820接收数据库改变请求之后,使用服务器820上的检测机制或其类似来确定数据库改变何时会改变已注册的查询随后的查许结果。然后,可以通过改变消息通道840发送改变消息到客户机810。
包括在数据库查询注册消息中的唯一标识符(如,GUID)可以对数据库查询注册消息提供安全机制。例如,在本发明的一个方面,在运行时间当接收到数据库队列RQ时创建GUID,从而减少“猜测”或假冒GUID的机会。然后通过服务器820传播该唯一标识符并将其包括在改变消息中。企图插入模拟的数据库改变消息到改变消息通道840中的恶意的来源试图虚假地通知客户机如果唯一标识符并不表示合法注册就忽略已注册的数据库改变。另外,根据本发明的一个方面,可以使用其他安全技术(如验证证书)。
下面是图9,根据本发明展示典型的客户机/服务器系统900。客户机/服务器900包括包含命令组件920、相关性930、通知运行时间服务940和可选相关性交换机50的客户机910,以及包含服务代理970、队列980和通知发送服务990的服务器960。
通常,客户机实例化产生唯一标识符的相关性930(如,对象)。客户机通常通过构造函数和/或方法提供队列名称和超时期间。然而,可以使用缺省的和/或其他队列名称和超时期间。随后,如果使用了相关性交换机950,相关性830就通过可选相关性交换机950对通知运行时间服务940注册。如果未使用可选相关性交换机950,那么注册发生在相关性930和通知运行时间服务940之间,而没有任何中间组件。然后通知运行时间服务940向相关性930提供发送地址。然后客户机通常实例化命令组件920(如,衍生对象)并将其与相关性930关联。队列名称、超时期间、发送地址和唯一标识符被作为例如数据库查询注册消息(如,标记语言(如,XML)文件)发送。应理解相关性930可以和多个命令组件920(及其他命令组件)关联,其中命令组件可以对本质上类似的数据库查询注册消息注册类似的和/或不同的数据库查询。
如上所述,服务器机器960包括服务代理970、队列980和通知发送服务990。服务器机器960可以使用各种技术来检测数据库改变。例如,当接收到数据库改变请求时,初始化搜索已注册的查询来确定随后的查询结果是否会改变。可以向服务代理970提供和改变的数据库关联的数据库查询注册信息。服务代理970可以在队列980中存储数据库查询注册信息并激活通知发送服务990。
通知发送服务990使用数据库查询注册信息来构建并发送改变消息到通知运行时间服务940。随后,通知运行时间服务940抽取唯一标识符,并使用该唯一标识符来发送消息到对应的关联性930。然后关联性930通知和已改变的数据库关联的客户机。例如,关联性可以对和改变的数据表关联的应用触发事件并/或设置标志以在应用试图关联已改变的数据表时触发事件。
应理解,根据本发明的一个方面,类似于客户机/服务器系统700,可以对客户机/服务器系统900使用关联性监听程序(未标出)和通用监听程序(未标出)。例如,关联性监听程序可以对通用监听程序注册唯一的URI并维护唯一标识符和关联性实例之间的对应。唯一的标识符和URI可以包括在发送到服务器的数据库查询注册消息中。在会影响随后的查询结果的数据库改变发生后,通知发送服务990可以构建并发送例如HTTP请求来发送改变消息到通用监听程序。通用监听程序可以使用唯一的URI来发送请求到关联性监听程序。关联性监听程序可以使用改变消息内的唯一标识符以使得对应的关联性通知到已注册接收鉴定通知的任何客户机。
如上所述,使用关联性监听程序和通用监听程序使得不需要安装和激活客户机上的服务(如,通知运行时间服务)。另外,可以配置端口,例如可以选择端口80从而能够通过防火墙进行传输。
图10-12展示符合本发明的方法。为便于说明,所述方法在此作为一系列的工作来说明。应理解,所示的动作和/或动作的顺序并不是对本发明的限制,例如,动作能够以各种顺序和/或同时发生,并且可以有其他未在此说明和展示的动作。进一步来说,并不是所有展示的动作都是实现符合本发明的方法必须的。
另外,熟悉技术的人应理解,方法可以另外表示为一系列互相关联的状态(如状态图)或事件。再者,在计算机可执行指令的通用上下文中对本发明进行说明,计算机可执行指令如由一个或多个主键执行的程序模块。通常,程序模块包括执行特殊任务或实现特殊抽象数据类型的例程、程序、对象、数据结构等等。通常程序模块的功能可以根据需要合并或分布在各个实施例中。
图10根据本发明的一个方面展示注册和发送方法1000。注册和发送方法1000可以被用来在接收到其中改变会更改已注册的查询的结果的数据库改变请求之后发送改变消息。开始于1010,组件(如,客户机、代理、应用和用户)注册数据库查询以在发生会影响以注册的查询的结果的数据库改变时接收通知。注册通常包括提供帮助发送改变通知的数据库查询注册信息(如图1-9所述)。
在1020,接收到数据库改变请求。请求可以包括会改变已注册的查询的结果的改变。请求启用机制来确定数据库改变是否和已注册的数据库查询关联。如果已注册的查询的结果会受到影响,那么向服务代理提供数据库查询注册信息的至少部分。
在1030,服务代理存储注册信息到队列中并激活通知发送服务。可以让通知发送服务访问数据库查询注册信息。应理解,可以使用各种技术来提供数据库查询注册信息。例如,数据库注册信息可以从队列中“推出”和/或“拉出”到通知发送服务。进一步来说,可以通过例如提供临时的存储位置使用中间存储区域来帮助数据库查询注册信息的传输。
使用数据库查询注册信息来获取用于构建和发送改变消息的发送地址和唯一标识符。在1040,通知发送服务发送数据库改变消息。该消息至少包括部分注册信息并通常包括所述唯一标识符。例如,可以发送对象ID,其中对应用对象实例触发事件和/或设置标志。应理解通知发送服务可以发送改变消息到通用监听程序和/或通知运行时间服务,如上所述。
图11-12根据本发明的一个方面展示注册、发送和通知方法1100。下面是图11,在编号1110处,接收到注册数据库查询的请求。可选地,该请求可以包括队列名称和/或超时期间。
在1120,获取唯一标识符和发送地址(如,通过相关性监听程序和通用监听程序,和/或相关性交换机和/或通知运行时间服务,如上所述)。另外可以获取其他信息,包括队列名称和/或超时期间。然后使用数据库查询注册信息来构建数据库查询注册消息,并将其发送到服务器。
在1130,服务器接收并存储包括在数据库查询注册消息中的数据库查询注册信息。在发送器接收数据库改变请求之后,调用某种机制,来帮助检测改变是否会更改已注册的查询随后的结果。例如,如果已注册的数据库查询未和该数据库改变关联,那么方法1100可以转换到空闲状态,并等待下一个数据库改变。如果数据库改变影响已注册查询的结果,那么可以向服务代理提供数据库查询注册信息。服务代理在队列中(如和包括在数据库查询注册信息消息中的队列名称关联的队列)存储数据库查询注册信息。服务代理还可以激活通知发送服务。
下面请见图12,更加本发明的一个方面展示图11的延续。在参考编号1210,向通知发送服务提供存储在队列中的数据库查询注册信息。通常唯一标识符和发送地址都存储在队列中。
在1220,通知发送服务发送通常包括唯一标识符的改变消息,并将其发送到发送地址(如通知运行时间服务和/或通用监听程序的发送地址)。接收到改变消息,并且在1230,可以抽取改变消息中的唯一标识符并将其用于通知已注册的组件和随后试图对已注册的查询的改变注册的组件。
为了提供本发明各方面的附加上下文。图13和下面的说明旨在对适合的操作环境1310提供简单的总体说明,在其中可以实现本发明的各方面。虽然本发明是在计算机可执行指令的通用上下文中说明的,计算机可执行指令如由一个或多个计算机或其他设备执行的程序模块,熟悉技术的人应承认,本发明也可以组合其他程序模块和/或作为硬件和软件的组合来实现。然而,通常,程序模块包括执行特殊任务或实现特殊数据类型的例程、程序、对象、组件、数据结构等等。操作环境1310仅为适合的操作环境的一个例子且并不对本发明的使用或功能范围进行任何限制。适合于使用本发明的其他众所周知的计算机系统、环境和/或配置包括但不仅限于,个人计算机、手持或膝上型设备、微处理器系统、网络PC、小型机、大型机、包括上述系统或设备的分布式计算环境,及其类似。
参考图13,用于实现本发明的各方面的典型环境1310包括计算机1312。计算机1312包括处理单元1314、系统存储器1316和系统总线1318。系统总线1318连接包括但不仅限于系统存储器1316到处理单元1314的系统组件。处理单元1314可以为各种可用的处理器中的任何一种。也可以使用双处理器和其他多处理器架构作为处理单元1314。
系统总线1318可以为几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线或外部总线和/或使用各种可用的总线架构中的任何一种的本地总线,总线架构包括,但不仅限于,8位总线、工业标准结构(ISA)、微通道结构(MSA)、扩展的工业标准结构(EISA)、智能设备电路(IDE)、VESA本地总线(VLB)、周边元件互连(PCI)、通用串行总线(U服务代理)、高级图形接口(AGP)、个人计算机存储卡国际协会总线(P改变消息CIA),及小型计算机系统接口(SCSI)。
系统存储器1316包括易失存储器1320和非易失存储器1322。基本输入/输出系统(BIOS)存储在非易失存储器1322中,BIOS包括在计算机1312内的元件之间传输信息,如启动的期间,的基本例程。作为例子,而非限制,非易失存储1322包括只读存储器(ROM)、可编程ROM(PROM)、电子可编程ROM(EPROM)、电子可擦ROM(EEPROM)或闪存。易失存储器1320包括随机访问存储器(RAM),它作为外部高速缓存存储器工作。作为例子而非限制,RAM有多种形式,如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步连接DRAM(SLDRAM)和直接Rambus RAM(DRRAM)。
计算机1312也包括可移动/不可移动、易失/非易失计算机存储媒体。图13展示了,例如,磁盘存储1324。磁盘存储1324包括,但不仅限于,设备如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡、或存储器棒。另外,磁盘存储1324可以包括和其他存储媒体分离或合并的存储媒体,其他存储媒体包括但不仅限于,光盘驱动器,如光盘ROM驱动器(CD-ROM)、可写光盘驱动器(CD-R驱动器)、可重写光盘驱动器(CD-RW驱动器)或数字多用途盘ROM驱动器(DVD-ROM)。为了帮助连接磁盘存储设备1324到系统总线1318,通常使用如接口1326这样的可移动或不可移动接口。
应理解图13说明了作为用户和适合的操作环境1310中的基本计算机资源之间的中介的软件。这样的软件包括操作系统1328。操作系统1328可以被存储在磁盘存储1324上,用于控制和分配计算机系统1312的资源。系统应用1330利用操作系统1328通过存储在系统存储器1316或磁盘存储1324中的程序模块1332和程序数据1334对资源的管理。应理解,可以用各种操作系统或操作系统的组合实现本发明。
用户通过输入设备1336输入命令或信息到计算机1312。输入设备1336包括,但不仅限于,如鼠标、轨迹球、触针这样的定点设备、触摸垫、键盘、麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、电视卡、数码相机、数码摄像机、摄像头等等等。这些和其他输入设备经接口端口1338通过系统总线1318连接到处理单元1314。接口端口1338包括,例如,串行端口、并行端口、游戏端口和通用串行总线(U服务代理)。输出设备1340使用一些和输入设备1336所用端口类型相同的端口。因此,例如U服务代理端口可以用于向计算机1312提供输入,并从计算机1312输出信息到输出设备1340。提供输出适配器1342来展示在其他输入设备1340中有一些需要特殊适配器的输出设备,如显示器、扬声器和打印机。输出适配器1342包括,作为例子而非限制,视频和音频卡,它们提供在输出设备1340和系统总线1318之间进行连接的方法。应注意,其他设备和/或设备的系统提供输入和输出能力两者,如远程计算机1344。
计算机1312可以工作在使用到一个或多个如远程计算机1344这样的远程计算机的逻辑连接的联网环境中。远程计算机1344可以为个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的设备、对等设备或其他普通网络节点及其类似,并通常包括很多或所有相对于计算机1312说明的元件。为简单起见,对远程计算机1344只展示了存储器存储设备1346。远程计算机1344逻辑上通过网络接口1348连接到计算机1312且物理上通过通讯连接1350连接。网络接口1348包括通讯网络,如局域网(LAN)和广域网(WAN)。LAN技术包括,光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网/IEEE 802.3、令牌环网/IEEE 802.5及其类似。WAN技术包括,但不以仅限于,点对点连接、回路交换网络,如集成服务数字网络(ISDN)和其变体、分组交换网络和数字用户线(DSL)。
通讯连接1350指用于连接网络接口1348到总线1318的硬件/软件。虽然为便于说明所示的通讯连接1350在计算机1312内部,它也可以在计算机1312外部。连接到网络接口1348所需的硬件/软件包括(仅作为例子)内部的和外部的技术,如包括常规电话升级调制解调器、有线调制解调器和DSL调制解调器的调制解调器、ISDN适配器和以太网卡。
上述已说明包括本发明的例子。当然,为了说明本发明不可能说明组件或方法的每一个可能的组合,但熟悉技术的人应承认,可以对本发明进行很多进一步的组合及变换。因此,本发明应包括所有落在后附的权利要求的精神和范围中的更改、修改和变体。进一步来说,对在说明书和权利要求中的使用的术语“包括”的范围,这样的术语是包含性的,类似于术语“包括”,如“包括”当在权利要求中作为常规的词使用时对其解释的方式。
权利要求
1.一种数据库改变通知系统,其特征在于,所述系统包括接收数据库查询注册信息的服务代理;一个或多个存储数据库查询注册信息的至少部分的队列;及一个或多个发送改变消息的通知发送服务。
2.如权利要求1所述的系统,其特征在于,在SQL环境中使用。
3.如权利要求1所述的系统,其特征在于,所述服务代理位于客户机和服务器中的一个上面。
4.如权利要求1所述的系统,其特征在于,所述数据库注册信息至少包括唯一标识符、发送地址、队列名称、超时期间、通讯选项、协议、端口、验证信息、安全选项和加密信息之一。
5.如权利要求1所述的系统,其特征在于,所述一个或多个队列位于服务代理中。
6.如权利要求1所述的系统,其特征在于,所述服务代理为数据库。
7.如权利要求1所述的系统,其特征在于,所述存储在一个或多个队列中的数据库查询注册信息的至少部分包括唯一标识符和发送地址。
8.如权利要求1所述的系统,其特征在于,所述通知发送服务由服务代理、系统启动、检测机制和用户之一激活。
9.如权利要求4所述的系统,其特征在于,所述超时期间被用于确定查询注册过期期间。
10.如权利要求4所述的系统,其特征在于,基于缺省值、数据库查询注册信息、概率、统计、神经网络和自适应技术之一选择所述存储数据库查询注册信息的至少部分的队列。
11.如权利要求4所述的系统,其特征在于,所述发送地址被用于确定改变消息的目的地。
12.如权利要求4所述的系统,其特征在于,所述唯一标识符被用于发送数据库改变通知到关联的客户机组件。
13.如权利要求12所述的系统,其特征在于,所述所述数据库改变通知至少包括事件和触发事件的标准之一。
14.如权利要求1所述的系统,其特征在于,所述改变消息包括唯一标识符。
15.如权利要求4所述的系统,其特征在于,所述数据库查询注册信息与原始的、变换的和可查询的结果关联。
16.如权利要求1所述的系统,其特征在于,所述一个或多个存储数据库查询注册信息的队列与来自位于一个或多个目的地的一个或多个组件的一个或多个查询关联。
17.如权利要求1所述的系统,其特征在于,通过在类似的队列中存储返回类似的结果的已注册的查询的数据库查询注册信息,及在类似的队列中存储和类似的组件或目的地关联的已注册的查询的数据库查询注册信息两者之一对同类的存储使用所述一个或多个队列。
18.如权利要求1所述的系统,其特征在于,所述一个或多个通知发送服务访问类似的队列。
19.如权利要求1所述的系统,其特征在于,至少一个通知发送服务访问一个或多个有来自多个客户机的数据库查询注册信息队列,其中至少一个通知发送服务可以发送改变消息到多个客户机。
20.一种数据库查询注册和消息发送系统,其特征在于,所述系统包括接收数据库查询注册消息和数据库改变请求的服务器;帮助使用数据库查询注册信息的服务代理;存储数据库查询注册信息的至少部分的队列;及对服务代理操作并且能够访问存储在队列中的数据库查询注册信息的至少部分以构建改变消息的通知发送服务。
21.如权利要求20所述的系统,其特征在于,所述服务器为基于SQL的服务器。
22.如权利要求21所述的系统,其特征在于,所述一个或多个数据库查询注册消息包括基于标记语言的文件。
23.如权利要求20所述的系统,其特征在于,所述数据库查询注册信息至少包括唯一标识符和发送地址。
24.如权利要求20所述的系统,其特征在于,所述数据库查询注册信息包括队列名称、超时期间、验证信息、加密选项、发送服务保持激活的时间长度、一旦发生改变是否保留或去除注册的选项,及同步还是异步发送改变的消息的选项中的一个或多个。
25.如权利要求20所述的系统,其特征在于,进一步包括数据库改变检测机制。
26.如权利要求20所述的系统,其特征在于,通过使用从数据库查询注册信息中抽取的队列名称、缺省的队列名称、用户定义的队列名称和最优选择的队列名称之一来确定所述队列。
27.如权利要求20所述的系统,其特征在于,进一步包括存储来自队列的数据库查询注册信息的至少部分,并随后向通知发送服务提供数据库查询注册信息的至少部分的中间组件。
28.如权利要求27所述的系统,其特征在于,所述中间组件包括日志文件和缓冲。
29.如权利要求20所述的系统,其特征在于,进一步包括服务器外部的对查询结果的存储。
30.如权利要求29所述的系统,其特征在于,所述外部存储包括高速缓存。
31.如权利要求20所述的系统,其特征在于,进一步包括和一个或多个已注册的数据库关联并可以访问一个或多个队列的多个通知发送服务。
32.如权利要求20所述的系统,其特征在于,所述通知发送服务可以在确认数据库改变请求之前、与确认数据库改变请求同时或在确认数据库改变请求之后发送改变消息,其中所选择的发送技术基于缺省值、数据库查询注册信息和使用信息之一。
33.如权利要求20所述的系统,其特征在于,所述通知发送服务基于时间绝对长度、一些要服务的队列项和一段停止的时间保持激活一段时间。
34.如权利要求33所述的系统,其特征在于,所述一段时间基于缺省值、数据库查询注册信息、服务器负载和自适应技术之一。
35.一种数据库查询注册和通知系统,其特征在于,所述系统包括通过提供数据库查询注册信息帮助数据库查询的注册的注册组件;及接收一个或多个改变消息并帮助发送数据库改变通知的通知运行时间服务。
36.如权利要求35所述的系统,其特征在于,所述注册组件使用数据库查询注册信息来构建基于XML的消息。
37.如权利要求35所述的系统,其特征在于,所述通知运行时间服务从改变消息中抽取唯一标识符并使用该唯一标识符来发送数据库改变通知到关联的组件。
38.如权利要求35所述的系统,其特征在于,所述一个或多个数据库改变通知至少包括事件和表面发生了改变的标志之一。
39.一种数据库查询注册、改变消息和通知系统,其特征在于,所述系统包括帮助注册数据库查询的相关性组件;发送数据库查询注册信息的服务代理;存储数据库查询注册信息的部分的队列;及在数据库改变会影响随后的查询的结果时提供改变消息的通知发送服务。
40.如权利要求39所述的系统,其特征在于,所述相关性组件进一步提供注册标识符,所述注册标识符至少包括和一个已注册的查询关联的全局唯一标识符(GUID),其中关联的鉴定结果导致本质上类似的客户机动作。
41.如权利要求39所述的系统,其特征在于,进一步包括向所述相关性组件提供发送地址的通知运行时间服务。
42.如权利要求41所述的系统,其特征在于,进一步包括向所述相关性组件提供发送地址的通用监听程序。
43.如权利要求39所述的系统,其特征在于,所述数据库查询注册信息包括队列名称、发送地址、超时期间和唯一标识符。
44.如权利要求42所述的系统,其特征在于,所述选择通用监听程序和通知运行时间服务之一是部分基于缺省值、客户机能力、数据库查询注册信息、配置、统计和自适应技术的。
45.如权利要求41所述的系统,其特征在于,所述通知运行时间服务在操作上通过通讯协议连接到通知发送服务。
46.如权利要求42所述的系统,其特征在于,所述通用监听程序在操作上通过通讯协议连接到通知发送服务。
47.如权利要求39所述的系统,其特征在于,进一步包括使用验证证书来提供安全消息发送。
48.如权利要求41所述的系统,其特征在于,进一步包括帮助相关性组件对通知运行时间服务注册的相关性交换机。
49.如权利要求42所述的系统,其特征在于,进一步包括帮助相关性组件对通用监听程序注册的相关性监听程序。
50.如权利要求48所述的系统,其特征在于,如果相关性交换机还未激活并且接收到注册数据库查询的请求,则所述相关性组件启动相关性交换机以对通知运行时间服务注册。
51.如权利要求39所述的系统,其特征在于,使用包括异步和同步数据库改变确认和数据库改变消息发送的技术来提高可伸缩性和数据一致性之一。
52.一种在数据库改变时接收通知的方法,其特征在于,所述方法包括向服务器提供数据库查询注册信息;在队列中存储数据库查询注册信息的至少部分;及使用数据库查询注册信息的至少部分来构建并发送改变消息。
53.如权利要求52所述的方法,其特征在于,所述数据库查询注册信息包括队列名称、发送地址、超时期间和唯一标识符。
54.如权利要求52所述的方法,其特征在于,进一步包括检测将改变已注册的查询的结果的数据库改变。
55.如权利要求52所述的方法,其特征在于,进一步包括使用服务代理来帮助在队列中存储数据库查询注册信息并激活通知发送组件来处理队列中的消息。
56.如权利要求52所述的方法,其特征在于,进一步包括使用通知发送服务,所述通知发送服务在改变消息中使用数据库查询注册信息的至少部分,并使用数据库查询注册信息的至少部分来发送所述改变消息。
57.一种在两个或多个计算机组件间传送的数据包,便于数据库查询注册、数据库改变检测及数据库改变通知,包括数据库查询注册信息,它与注册的数据库查询关联、存储在队列中、并用于构建并传送用于发送数据库改变通知的改变信息。
58.一种计算机可读媒体,存储数据库查询注册、检测和通知系统的计算机可执行组件,包括存储数据库查询注册信息的队列;传送用来通知已注册接收通知用户的改变信息的通知发送服务;及连接到队列和通知发送服务以向队列提供数据库查询注册信息并激活通知发送服务的服务代理器。
59.一种注册数据库查询的系统,其特征在于,包括注册数据库查询的装置;检测改变已注册查询结果的数据库改变的装置;提供表示后次查询结果可以与前次查询结果不同的信息改变的装置。
全文摘要
本发明涉及提供这样的系统和方法,所述系统和方法在已注册的数据库查询随后的查询结果由于数据库改变而发生改变时进行通知。所述系统和方法使用服务代理来帮助在队列中存储和已注册的数据库查询关联的数据库查询注册信息并激活通知发送服务。在激活期间,通知发送服务可以访问队列来获取数据库查询注册信息。然后通知发送服务可以构建并发送改变消息。改变消息可以被用来帮助通知已注册为在查询结果改变和/或已存储的查询结果变得无效时接收通知的组件。可以用各种数据库注册、数据库改变检测和数据库改变消息接收机制来实现本发明。进一步来说,本发明可以用在客户机/服务器环境中,如基于SQL的环境。
文档编号G06F12/00GK1534519SQ20041003224
公开日2004年10月6日 申请日期2004年3月26日 优先权日2003年3月28日
发明者M·J·皮索, S·桑达雷杉, R·P·帕姆拉帕蒂, C·克莱纳曼, P·卡斯特罗, M J 皮索, 固芈, 帕姆拉帕蒂, 衬陕, 锢咨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1