对数据库结果及推导目标进行 高速缓存和无效的系统和方法 技术领域
本发明一般涉及数据库,尤其涉及为随后的使用而保存从数据库产生的结果、并且当它们变得与数据库不一致时无效所保存的结果的系统和方法。
背景技术
计算和联网技术已经改变了每天生活的许多重要方面。计算机已经成为家用的主要产品,而不是奢侈的教育工具和/或娱乐中心,并且向用户提供了工具来管理并预报财务;控制像取暖、制冷、照明和安全之类的家用操作;并且把记录和图像存储在永久且可靠的媒介中。因特网这样的联网技术向用户提供了对远程系统、信息和相关应用的实际上无限的存取。
随着计算和联网技术变得稳健、安全和可靠,更多的用户、批发商、零售商、企业家、教育机构等等改变了范例,并且采用因特网而不是用传统手段来执行商务。例如,许多商务和用户提供了网站和/或在线服务。例如,现在用户可以通过因特网来访问他/她的账户,并且执行越来越多的有效交易,比如余额查询、基金转账以及账单支付。
一般而言,因特网会话包括用户与客户应用程序(如web服务器)连接而与数据库服务器相互作用,数据库服务器把信息存储在客户应用程序可以访问的数据库中。例如,股票市场网站可以向用户提供用于检索股票报价并且购买股票的工具。用户可以输入股票符号并且通过点积鼠标来激活查询而请求股票报价。然后,客户应用程序查询数据库有无股票信息并且返回股票报价。同样,用户可以通过提供适当的信息来购买股票,其中提交订购会促使数据库查询范围当前的价格信息和订购状态。
随着更多的用户利用这种服务的优点,也消耗了更多带宽,这会降低性能和/或速度,因为带宽是一项有限的资源。另一个缺点是与有效数据数量有关的有限的有效数据传输速率。例如,检索大量数据(如,分布在各个服务器中)的请求可能是时间密集且性能有限的,即使当带宽可用时。
通过用户执行频繁且类似的请求而合成了上述内容。例如,希望当前股票报价的用户可以执行频繁地请求来获得更新的报价。因此,用户频繁地消耗带宽来检索基本类似的信息。此外,其他用户可能同时执行检索基本类似信息的请求。用户还受到限制的是,由于所返回的结果在随后的数据库表变化后会变得无效,因此不能保证所检索的数据的一致性。
发明内容
下面给出了本发明的简要概述,以便提供对本发明某些方面的基本理解。这个概述不是本发明的广泛综述。它并不意图标识出本发明的关键/决定性的元件,或者叙述本发明的范围。它唯一的目的是以简化形式给出本发明的某些概念,作为稍后给出的更详细的描述的序言。
本发明涉及当从数据库查询产生的所保存结果由于数据库变化以及/或者由于期满时段而变得无效时用于对所述结果进行无效的系统和方法。因此,本发明提供了一种机制,用于查询数据库、保存从数据库查询产生的结果、并且使用所保存的结果直到数据库变化和/或到期时段使结果无效。
一般而言,数据库存储可以通过查询数据库而检索到的信息。用户可以与应用程序对接,例如为了获得数据库内存储的至少一部分信息。例如,用户可以采用web服务或者提交与服务器上存储的信息相关的请求。请求会开始有关数据库的一个或多个查询,然后可以使用所述一个或多个查询的结果来产生一个应答,该应答要从该web服务被返回、被显示、被消耗并且/或者进一步被采用。
在许多情况下,数据库会成为资源争用的共用源。例如,不止一个用户会发出一个类似请求,该请求同时查询数据库并且返回类似的结果。这种同时查询类似结果会增加数据库负载、减少带宽、降低性能并且消耗资源。在另一示例中,一个或多个用户会频繁地执行返回类似结果的请求。同样,系统性能会经由如数据库负载而被降低。在上述内容之内,数据库表示在多个用户请求和/或用户间共享的状态,而共享的状态争用会限制系统性能和可伸缩性。
为减少查询数而一般采用的技术包括:把频繁使用的数据(例如,形式为原始数据、经变换的数据、以及可查询形式的数据)保存在数据库外部,并且使用所保存的结果而不是执行另外的查询。然而,由于可能发生随后的数据库变化来提供与数据库不一致的所保存数据而不通知用户,因此所保存的数据的一致性受到损害。
本发明的系统和方法减少了数据库负载(如减少了对基本类似的信息的查询)、提高了可伸缩性、减少了重复处理、并且确保了数据一致性。所述系统和方法包括把无效信息存储在环境存储体(context bank)内,其中可以根据查询来检索并发送所述无效信息,以便把该查询与查询请求者相关联并且在数据库内注册该查询。从查询产生的结果(如,原始数据、经变换的数据、可查询形式的数据、部分应答和全部应答)可以被保存在数据库外部的可存取存储媒介中,并且被各个用户(如web服务器)使用一次或多次,从而缓和了对基本类似的信息的查询。
如果发生会影响所存储结果的数据库变化,则可以发送无效消息以便于使所保存的结果无效,从而减少了用户采用不一致数据的情况。一般使用根据查询发出的无效信息来构成无效消息。此外,可以定义一个到期时段,使得在到期时段期满后所保存的结果会被无效,即使不发生数据库变化。在使所保存的结果无效后,例如,这些结果可以被自动地删除并且/或者自动地刷新。
而且,本发明的系统和方法可以在web环境中被采用,其中当可以全部或部分地存储从数据库查询产生的web应答并且响应于随后的请求而返回这些应答时,可以实现web服务器资源的等待时间和使用的进一步减少。例如,开发者可以通过在web页面内嵌入注释来请求基于数据库查询产生的应答会被高速缓存,直到查询结果变化为止。注释调用web服务器把数据库相关性与要被高速缓存的应答相关联,并且把与相关性相关的无效消息以及/或者相关性自身存储在环境存储体中。根据到数据库的随后查询而自动地检索并发出所存储的无效信息。如上所述,当数据库发生变化提供了不一致的前面查询的结果时,以及/或者当到期时段期满时,可以在无效消息内采用该无效信息。
把无效信息存储在环境存储体中并且使用该信息可以便于例示把无效信息与查询相关联并且保存(如高速缓存)查询应答的基础结构。因此,采用所存储的无效信息减轻了对web服务器(和/或能处理查询请求的其他组件)获悉应答产生的要求。而且,采用所存储的无效信息减轻了对产生应答的组件必须获悉应答怎样被web服务器使用的要求。
按照发明主题,这里所述的系统和方法采用组件来存储无效信息、执行查询、保存基于查询的结果、接收无效消息以及/或者使所保存的信息无效。此外,可以采用用于异步和同步通信的各种数据传输技术以及安全性技术,这些技术减少了恶意和虚假信息和消息的存在和/或传输。实践中,可以在各种环境中采用所述系统和方法,这些环境包括客户机-服务器和/或基于SQL的环境。
为了实现上述及相关的目标,本发明包括下面全面描述且在权利要求中特别指出的特征。下面的描述和附图详细提出了本发明的某些说明性方面和实施方式。然而,这些表示出其中可采用本发明原理的各种方式的一小部分。在参照附图考虑了本发明的下列详细描述后,本发明的其他目的、优点和新颖性特征将变得更为明显。
附图说明
图1说明了按照本发明一方面的示例性无效注册系统。
图2说明了按照本发明一方面的示例性无效内存管理系统。
图3说明了按照本发明一方面的示例性数据库注册和无效系统。
图4说明了按照本发明一方面的示例性基于web的内存无效系统。
图5说明了按照本发明一方面的示例性安全性技术。
图6说明了按照本发明一方面的示例性无效消息传递技术。
图7说明了按照本发明一方面的示例性分布式无效系统。
图8说明了按照本发明一方面的示例性web服务无效系统。
图9说明了按照本发明一方面的示例性自动无效方法。
图10说明了按照本发明一方面的图9的继续。
图11说明了按照本发明一方面的示例性的基于变化的无效方法。
图12说明了按照本发明一方面的示例性的基于时间的无效方法。
图13说明了按照本发明一方面的示例性操作系统。
具体实施方式
现在参照附图描述本发明,附图中使用相同的数字来表示相同的元件。在下列描述中,为了说明目的,提出了许多特定的细节以便提供对本发明的全面理解。然而显然本发明可以没有这些特定细节而实现。在其他情况下,为了便于描述本发明,以框图形式示出公知的结构和设备。
如本申请中所使用的,术语“组件”是指计算机相关的实体,或是硬件、硬件软件的组合、软件,或是执行中的软件。例如,组件可以是、但不限于是:运行在处理器上的进程、处理器、对象、可执行的执行线程、程序和/或计算机。通过说明,运行在服务器上的应用程序以及服务器都可以是计算机组件。一个或多个组件可以驻留在进程和/或执行线程内,组件可以被定位在一个计算机上以及/或者被分布在两个或多个计算机之间。“线程”是进程内的实体,操作系统内核调度它用来执行。每个线程都有一个相关的“环境”,所述“环境”是与线程执行相关的易失性数据。线程的环境包括系统注册表的内容以及属于线程的进程的虚拟地址。因此,包括线程环境的实际数据在它执行时而改变。
本发明涉及用于把从数据库查询产生的结果存储在(如动态的和静态的)内存中的系统和方法,其中所述结果可以被检索和使用,并且在它们变得不一致时(如数据库变化和到期时段期满)被无效。所述系统和方法通过查询基本相似的(如冗余的)信息而减少了系统负载和资源争用。此外,所述系统和方法减少了不一致的所保存结果的采用。因此,所述系统和方法提供了一种机制,用于查询数据库有无信息;把结果存储在像高速缓存这样的内存中;当期望基本相似的结果时采用所保存的结果一次或多次;当所保存的结果变得不一致时自动使其无效;以及通过自动地重新查询和保存任选地刷新内存。
参照图1,说明了按照本发明一方面的示例性无效注册系统100。无效注册系统100包括环境存储体110和查询管理器120。
环境存储体110可用于提供信息以便于在发生的数据库变化会影响所保存的结果以及/或者当到期时段期满时,使所保存的结果无效。例如,环境存储体110可用于存储与组件相关的无效信息(如下述的相关性)。无效信息可以通过数据库查询链接到数据库。结果可以被保存和使用一次或多次。当数据库发生的变化会影响查询以及/或者持续时间期满时,可以使用相应的无效信息以便于无效所保存的结果,例如通过通知、事件、标志、所保存结果的自动无效、以及自动重新查询,从而用一致结果获得并刷新内存。
一般的无效信息包括无效字符串、服务信息和超时。无效字符串一般包括组件标识符、位置(如机器名)、端口、地址和/或队列名,并且还可以包括如验证信息、加密和协议选项。服务信息可以包括标志,这些标志用于自动删除所保存的结果、自动刷新结果、自动把结果标记为无效、以及通知组件而不影响所保存的结果,等等。超时可以基于数据库变化、文件变化和持续时间等等。可以理解,上述内容是说明性的而不是限制性的。因此,按照本发明一方面可以包括附加的、不同的和/或较少的信息。
环境存储器110内存储的无效信息可用于查询管理器120。查询管理器120可以在执行命令和/或查询时使用该无效信息。例如,查询管理器120可以从环境存储体110获得无效信息,并且包括根据查询的无效信息,其中无效信息可以是查询的一部分和/或与查询相关联。
在本发明一方面中,可以采用页面指示(如web页面内的注释)来开始组件的例示(如相关性对象)以及把与组件相关的无效信息存储在环境存储体110中。采用环境存储体110来存储无效信息便于建立根据查询采用无效信息的基础结构,而无须使调用查询管理器120的应用程序必须获悉应答怎样被高速缓存。
当通过请求查询数据库来调用查询管理器120时,查询管理器120与环境存储体110相互作用以检索与组件相关的无效信息。然后,查询管理器120通过查询数据库来执行请求,其中从环境存储体110检索的无效信息被连续发送并且/或者与查询同时发出。然后返回并使用查询结果以产生要被存储的结果,所发出的无效信息保持与组件、查询和被查询的数据库相关联。
如果被查询的数据库在查询以后并且在产生要被存储的结果(如果要被存储的结果与数据库一致)以前不发生变化,则可以使用结果并将其存储在内存中用于进一步的使用。当随后提交会返回基本相似结果的请求时,可以使用所存储的结果而不是执行另一次查询。因此,本发明减少了对基本相似结果的查询,其中查询基本相似结果会降低性能、吞吐量、处理和速度,并且易受资源争用的影响。
在保存结果之后,数据库变化或时间期满可以反映所保存的结果不一致。当发生的数据库变化会影响上述查询和/或超时期满的结果时,可以采用根据查询发出的无效信息来通知组件(如内存管理器120)使所保存的结果无效(如删除和刷新),即使产生该结果的组件不再存在。可以用指示所保存的结果无效的通知来提供试图与所保存的结果相关的其他组件。因此,本发明通过通知组件以及/或者使所保存的结果无效而减少了对不一致保存结果的采用。
参照图2,说明了按照本发明一方面的示例性无效内存管理系统200。无效内存管理系统200包括查询管理器120和内存管理器220。
除了上述功能以外,查询管理器120可以为变化和/或期满的数据库接收查询结果和/或无效信息。一般而言,在根据查询发出无效信息(如上所述)之后,返回查询结果。在本发明一方面中,查询管理器120接收所返回的查询结果,并且采用内存管理器120来便于保存和/或使用从查询结果产生的结果。如果认识到在产生要被存储的结果前数据库已变化以及/或者到期时段期满,内存管理器220就可以把结果提供给组件而无须把结果保存到内存。如果数据是一致的(如没有数据库变化)且到期时段尚未期满,内存管理器220就可以连续地和/或同时地把结果提供给组件以及/或者保存到内存。当请求基本类似的查询时可以由组件来访问所保存的结果,从而减少了基本类似查询的执行,其中执行基本类似的查询会消耗资源并且降低性能。
应该理解,所返回的结果可以包括原始数据、经变换的数据(如去标准化的集合、总计、数据透视表、从原始数据产生的对象以及/或者部分或全部的web应答)、以及/或者可查询的数据(如可以通过随后查询而被使用的数据集合,用于获得其子集)。而且应该理解,可以采用各种技术把结果存储到内存。例如,在第一种方法中,可以保存基本上所有的所返回结果(如全部的web应答)。在第二种方法中,把一部分所返回的结果(如部分页面)保存到内存。例如,可以保存对于随后请求常见的一部分。在另一例中,保存对于多个请求共用的结果。然后,对从内存检索的共用结果的本地查询可以返回与请求相关的数据。在第三种方法中,可以通过查询或某些其他手段获得个人化的结果,共用结果可以被保存到内存并且被使用。应该理解,上述示例性说明为了说明性目的而提供,而不限制本发明。
在接收到无效消息后,查询管理器120便于把数据库变化通知路由到组件并且/或者使所保存的结果无效。在本发明一方面,查询管理器120通知组件,组件决定下一个动作。例如,组件可以采用内存管理器220使所保存的结果无效。或者,查询管理器120采用内存管理器220,其中内存管理器220可以使所保存的结果无效并且/或者通知组件。应该理解,当所保存的结果被无效时,开始请求和相应的保存的组件不再存在。
现在参照图3,按照本发明一方面说明了示例性的数据库注册和无效系统300。数据库注册和无效系统300包括查询管理器120、内存管理器220、任选的客户机310和内存320。应该理解,可以采用不止一个内存管理器220、客户机310和内存320;然而为了简洁,下面描述了一个客户机实例。
如上所述,环境存储体110可以为组件存储无效信息(如上所述),当发生的数据库变化会影响所保存的结果时,以及/或者当到期时段期满时,可以采用该无效信息来提供使所保存结果无效的信息。在本发明一方面,客户机310可以向环境存储体110提供无效信息—标识符、机器名、端口、地址、数据库名、自动无效不一致的保存结果的指示、自动刷新不一致结果的指示、以及超时(如,根据数据库变化、文件变化和持续时间而无效)。
当客户机310调用查询管理器210来查询数据库时,查询管理器120从环境存储体110接收相关的无效信息(如上所述),以及/或者从环境存储体110检索相关的无效信息(未示出)。查询管理器120接着进行查询并且提供无效信息。应该理解,查询管理器120可以按照本发明一方面来查询动态的和/或静态的数据库。
查询管理器120可以接受查询结果,并把结果发送到客户机310。应该理解,本发明提供了同步和异步的消息传递。在同步消息传递中,可以阻止数据库变化,直到传递无效消息和/或使不一致结果无效为止。同步传递通过确保在提交变化和接收无效消息之间不发生数据库变化,以及/或者使结果无效,从而减少了数据不一致性。在异步消息传递中,在传递无效消息之前以及/或者在使不一致结果无效之前可以提交数据库变化。异步传递减少了传递等待时间。
在接收到查询结果后,接着用各种技术探查被查询的数据库以确认在查询后但在产生要被存储的结果之前是否发生变化。如果发生变化,客户机310就可以使用结果而不调用内存管理器220。如果不发生变化,客户机310就可以使用结果并且采用内存管理器220来把结果存储在内存320中(如本地、远程、高速、HTTP和共享的内存)。会返回基本相似结果的随后请求可以使用来自内存320的所保存的结果,而不是执行查询,直到所保存的结果变得不一致为止。
在本发明另一方面,采用了各种技术以便于确定是否要保存结果。例如,如果确定结果对于多个请求是共用的并且频繁地变化,就保存结果。然而,如果确定结果频繁地变化以及/或者未被频繁使用,且保存成本相对昂贵,就不保存结果。在本发明还有一方面,采用了各种技术来减少内存问题。例如,如果内存320是满的,则可以用以下方法来保存结果:先进先出(FIFO)或先进后出(FILO)方法;基于寿命(1ine 12)的方法,该方法中先删除最旧信息;用途方法,其中先删除最少使用的信息,或者自上一次使用时间最长的信息;基于大小的方法以及基于按键的方法。在另一例中,不保存结果,直到足够的“空闲”内存可用为止。其他方法、或者这些方法的变化会考虑产生结果所需的时间量和/或资源。
一旦数据发生的变化会影响结果以及/或者到期时段期满,就向系统300发送—无效消息。一般而言,无效消息包括无效信息的至少一部分。查询管理器120可以接收无效消息。然后,查询管理器120通知客户机310(和/或为接收无效消息而注册的任何其他组件)。然后,客户机310可以调用内存管理器220来使所保存的结果无效(如删除、擦除、覆写和移动)。如果无效信息内指示自动刷新结果,就执行随后的查询来产生新结果,新结果可以被保存在内存320中并且被像客户机310这样的组件所使用。采用上述技术可以通过在不一致结果上保存新结果而减少对不一致结果的删除。
应该理解,无效注册系统100、无效内存管理系统200以及数据库注册和无效系统300还可以采用组件来注册数据库(如数据库表、数据表和表格)、检测数据库的变化、确定是否注册了已变化的数据库、以及/或者发送指示注册数据库已变化的消息。
尽管图1-3是说明系统100-300的组件的框图,然而可以理解,环境存储体110、查询管理器120、内存管理器220、客户机310和内存320可以用一个或多个计算机组件来实现,组件的属于已在此定义。因此应该理解,可以在计算机可读媒介上存储计算机可执行组件,所述计算机可执行组件用于实现系统100-300、环境存储体110、查询管理器120、内存管理器220、客户机310和内存320,按照本发明,所述计算机可读媒介包括、但不限于:ASIC(专用集成电路)、CD(光盘)、DVD(数字化视频光盘)、ROM(只读存储器)、软盘、硬盘、EEPROM(电可擦除可编程只读存储器)以及存储棒。
参照图4,说明了按照本发明一方面的示例性的基于web的内存无效系统400。基于web的内存无效系统400包括web服务器405、相关性组件410、环境组件420、查询管理器430、服务器440、数据库服务器450、内存存储器460、本地内存470、高速内存480、其他内存490(如远程高速内存)、应用程序492以及辅助层494。
Web服务器405可以访问包括页面指示(如上述的注释)的网页。页面指示可用于指出将保存web应答,以及在相关数据库变化时和/或当到期时段期满时应该使所保存的应答无效。Web服务器405可以使用页面指示、调用相关性组件410(如对象或推导的对象)、以及便于把无效信息存储在环境组件420中。
相关性组件410获得唯一标识符,例如全局唯一的标识符,即GUID,用于标识要与随后查询相关联的高速缓存的应答。相关性组件410向环境组件420提供该唯一标识符以及各种其他的无效信息(如上所述)。一般而言,无效信息包括无效字符串(如,GUID、机器名、端口、地址和队列名、以及任选的验证信息、加密和协议选项)、服务信息和超时(如数据库变化和时间期满的超时)。然而,上述仅仅是说明性的,而不限制无效信息。
当调用查询管理器430(如查询管理器110)来查询数据库时,查询管理器430与环境组件420相连,并且获得相关的无效信息。然后,查询引擎420把所述查询和无效信息发送到数据库服务器450内的服务器440(如动态的和静态的)。根据返回到应用程序492的结果而对数据库440执行查询。无效信息留在数据库服务器450内,并且提供web服务器405上的相关性组件410以及服务器440所返回的结果之间的关联。
在接收到查询结果后,web服务器产生全部或部分的应答。Web服务器405可以轮询相关性组件410以确定在产生应答时是否发生数据库变化,然后决定是否保存结果。如果确定要保存结果,则web服务器405可以采用内存存储器460以便于把结果保存到本地内存(如高速缓存)、高速内存480(如高速缓存)和/或其他内存490。一般而言,本地内存470可以与应用程序490相关联,高速内存480可以与辅助层494(如HTTP.sys)相关联。否则,可以使用应答以及/或者不保存而删除应答。
当发生的数据库变化会影响所保存的web应答时,以及/或者当到期时段期满时,服务器440会向相关性组件410发送无效消息。然后,相关性组件410然后发信号通知该变化(如通过引发一个事件并设定一个标志)。内存存储器460接收该信号并且使应答无效。或者,当接收到无效消息时,可以采用自动刷新来执行查询以获得并保存一致结果。自动刷新会覆写一致结果并且/或者在保存一致结果前删除不一致结果。
接着参照图5,说明了按照本发明一方面的示例性安全性技术。系统500包括web服务器405、数据库服务器450以及使web服务器496和数据库服务器450操作上耦合的安全层510。
如上所述,查询引擎410与环境组件420相连以获得接收查询请求后的无效信息。然后,查询引擎420把所述查询和无效信息从web服务器405发送到数据库服务器450内的服务器440。
前述的无效信息可以包括像全局唯一标识符(即GUID)这样的唯一标识符。GUID提供了一种安全性机制,该机制可用于减少对模拟数据库变化和时间段期满的恶意企图。例如,在本发明一方面,在接收到数据库查询注册请求时,在运行时间创建GUID,从而减少了“猜测”或仿造GUID的机会。接着使用GUID来标识要被无效的所保存的结果的集合。
如果确定GUID无效(如它不标识要被无效的一组保存结果),则可以与GUID一起忽略并/或删除无效请求。在另一例中,虚假的无效请求可以被转发给系统管理员并且用于跟踪始发位置。
图6说明了按照本发明一方面的示例性无效消息传递技术。系统600包括web服务器405、数据库服务器450以及使web服务器405和数据库服务器450操作上耦合的通信接口610。在接收到查询请求后,查询引擎430从环境组件420获得无效信息,并把所述查询和无效信息发送到数据库服务器450。根据被发送到web服务器405的结果来执行查询,其中结果可以被保存在内存中并且不止一次地使用,来减少执行基本类似查询的次数。
在结果从数据库服务器450返回之后,无效信息留在数据库服务器450内,并且当发生数据库变化来把相关的保存结果定位在web服务器405中时可以采用该无效信息。应该理解,可以采用各种机制把无效信息存储在数据库服务器450中,并且可以使用各种技术把无效信息与变化的数据库相匹配并且发送无效消息。
当发生数据库变化时,构成无效消息并且把它在通信接口610上从数据库服务器450发送到web服务器496。无效消息可以包括无效信息的至少一部分。
应该理解,数据库变化可以被提交以及/或者被保持。例如,在本发明一方面,可以采用异步无效消息传递模型,其中无论是否在通信接口610上发送无效消息以及/或者无论所保存的结果是否已被无效,都提交数据库变化。
在本发明另一方面,可以采用同步无效信息传递模型,其中阻止数据库变化,直到在通信接口610上发出无效消息为止,以及/或者直到所保存的结果已经被无效为止。异步模型提供伸缩性,而同步模型提供了可靠性。为了便于理解而提供了上述内容,这不限制本发明,例如按照本发明也可以采用各种其他的推拉方法(pushand/or pull)。
图7说明了按照本发明一方面的示例性分布式无效系统700。无效系统700包括:第一web应用程序710
1到第N个web应用程序710
N,N是大于等于1的整数;第一环境组件720
1到第M个环境组件720
M,M是大于等于1的整数;第一数据库7301到第K个数据库730
K,K是大于等于1的整数;以及共享内存740。
第一web应用程序710
1到第N个web应用程序710
N可以总称为web应用程序710,第一环境组件720
1到第M个环境组件720
N可以总称为环境组件720,第一数据库730
1到第K个数据库730
K可以总称为数据库730。
可以采用web应用程序710(如对象实例)来查询数据库以满足用户请求。一般而言,在例示了web应用程序710后,与web应用程序710相关的无效消息就被汇编并被存储在相应的环境组件720(如环境存储体110)中。无效信息一般包括上述的唯一标识符、无效字符串、服务信息以及到期时段;然而,无效信息不限于此。
当由至少一个web应用程序710接收到查询请求时,采用相应的环境存储体来获得相关的无效信息。然后,通过通信协议(如以太网和Firewire协议)把查询和无效信息发送到数据库730。注意到查询可以采用一个或多个数据库730来满足用户请求。
在执行查询之后,把结果返回到至少一个web应用程序710。为了确保结果是一致的,可以检验数据库730以确定在查询后但在产生要被存储的结果之前是否发生会影响结果的变化。如果确定发生变化,则使用并且/或者删除结果。如果确定结果是一致的,则结果可以被使用并且/或者被保存在内存中,例如共享内存740。因此,本发明还减少了不止一个web应用程序710执行对基本类似结果的查询。
当至少一个数据库720发生数据库变化时,并且/或者当到期时段期满时,至少一个数据库720把无效消息发送到一个或多个web应用程序710以及/或者共享内存740。应该理解,(如一个)无效消息可以包括不止一个web应用程序地址和/或其他信息(如其他无效消息),以便通知不止一个web应用程序受该变化的影响。
在本发明另一方面,发出不止一个无效消息,其中无效消息与web应用程序和/或共享内存740相关联并且被发送到后两者。在还有一方面,可以广播无效消息,使得基本上所有web应用程序710和/或共享内存740都能接收无效消息。Web然后应用程序710可以决定是否接受并且/或者作用于无效消息。应该理解,向共享内存740提供无效消息减少了必须向web应用程序提供无效消息的要求。例如,开始请求的web应用程序无须存在以使所保存的结果无效。此外,共享所保存结果的任何应用程序都无须存在以使所保存的结果无效。因此,本发明提供了一种机制,即使当开始应用程序和/或任何共享应用程序不再存在时也删除不一致结果和/或空闲内存。
在接收到无效消息以后,可以接着使所保存的结果无效。例如,可以从内存中删除所保存的结果,或者将其标记为不一致。或者,可以采用自动刷新来执行随后的查询以获得要保存到内存的不一致结果。自动刷新可以进一步与随后查询一起发送无效信息,以便在经刷新的结果变得不一致时自动地使它们无效。
图8说明了按照本发明一方面的示例性web服务无效系统800。Web服务无效系统800包括客户机805、防火墙810、内存820、第1个web服务830
1到第N个web服务830
N、N是大于等于1的整数;以及数据库840。第一web服务830
1到第N个web服务830
N可以总称为web服务830。
客户机805通过防火墙810与web服务830相连。防火墙810可以控制对web服务830的访问。例如,防火墙810可以限制客户机805到web服务830的访问以及/或者拒绝到web服务830的访问。此外,可以采用防火墙810来限制客户机805到数据库840和内存820的访问。应该理解,到web服务器830、数据库840和/或内存820的访问会是相互排斥的。例如,客户机805可以对web服务器830完全访问,而不访问数据库840和/或内存820。然而,客户机805可以对web服务器830、数据库840和/或内存820有完全访问或者不访问。
还可以采用防火墙810来限制对数据库840和/或内存820中保存的结果的web服务访问。在本发明一方面,一个或多个web服务830可以向数据库840发送查询(如由客户机805开始)、无效信息(如上所述)、以及像路由信息这样的其他信息。如果一个或多个web服务830具有许可(clearance),则可以把发出的信息传递至数据库840。在本发明另一方面,一个或多个web服务830可以向数据库840发送查询、无效信息及其他信息,而不通过防火墙810传递信息。
在执行查询后,数据库840返回查询结果,查询结果用于产生要被存储的结果。在本发明一方面,结果被返回至防火墙810,其中防火墙810采用一种机制(如内存管理器120)把这些结果保存在内存820中。在本发明另一方面,结果可以被返回至web服务830(如通过防火墙810和/或在防火墙810周围)。然后,web服务830可以把结果存储在内存820中,其中通过访问内存820,结果对于web服务830是可用的,然后把结果提供给客户机805。
所保存的结果可以被web服务830访问,web服务830具有采用内存820的许可。例如,web服务830
N可以发送一查询,该查询会返回与内存820中保存的结果的一个子集基本相似的结果。如果web服务830
N能访问内存820,web服务830
N就可以使用所保存的结果,而不是执行查询。如果web服务830
N不能访问内存820,则执行查询。
当发生会影响内存820中保存额结果的数据库变化时,以及/或者当到期时段期满时,数据库840可以向防火墙810发送无效消息。如果无效消息具有许可,则可以使用该消息使内存820中的不一致结果无效。在本发明一方面,可以另外向web服务830发送一个通知,来通知web服务830结果已被无效。另一方面,web服务830会周期性地轮询内存820以确定结果是否仍然一致,而不是向web服务830发送通知。另一例中,当web服务830发送查询和无效信息时,搜索内存820以确定类似的结果是否被保存在内存820中,以及类似结果是否一致。
可以采用自动刷新来重新查询一致结果并且重新发送无效信息,从而当下一个数据库变化发生时,以及/或者当对应于数据库数据(结果)的时段期满时,进行无效。
图9-12说明了按照本发明的方法。为了说明的简洁,用一系列动作来描述这些方法。应该理解,本发明不限于所说明的动作以及/或者动作顺序,例如动作可以以各种顺序发生以及/或者同时发生,并且具有这里未给出和描述的其他动作。而且,不需要所有所述的动作来实现按照本发明的方法。此外,本领域的技术人员会理解,或者可以用一系列相互关联的状态(如状态图)或事件来表示方法。
参照图9,说明了示例性的自动无效方法900。在参考数字910处,举例说明了一个实例(如对象、推导的对象、客户机、应用程序、客户应用程序和相关性实例)。在920处,与该实例相关的无效信息被存储在环境中。无效信息一般包括无效字符串、服务信息和超时,如上所述。应该理解,可以举例说明不止一个实例,而且不止一个实例可以把无效信息存储在类似环境中。
在参考数字930处,该方法等待接收执行查询的请求。一旦接收到一个请求,就检索出被存储在环境中并且与实例相关联的无效信息。然后在940处,查询和无效信息被发送到如其中驻留数据库的动态和/或静态服务器。
现在参照图10,说明了按照本发明一方面的图9的继续。参照参考数字1010,方法900等待查询结果。在接收并处理了查询结果后,在1020处检验查询中所使用的数据库,以确认在查询和产生可高速缓存的结果的时间之间是否发生变化。这确保了结果是一致的。
如果在查询和接收结果的时间之间未发生变化,则在1030内把结果存储在内存中,并且在1040中提供给实例。所保存的结果可用于进一步的采用,例如减少对会返回相似结果的查询的执行。如果在1020处确定在查询和产生要被存储的结果之间未发生变化,则在1040处一般把结果提供给实例并且不保存。然而,实例可以决定存储并使用不一致的结果。可以采用各种技术来通知其他实例:结果是不一致的。例如,只要当实例试图采用不一致的结果时就可以设定一个标志来产生引发事件。
接着在图11处,说明了按照本发明一方面的示例性的基于数据变化的无效方法1100。参照1100,发生数据库变化,发送并接收无效消息。无效消息一般包括一部分无效信息。例如,可以包括唯一标识符以便于标识要被无效的一组不一致结果。
应该理解,可以使数据库变化与发送/接收同步,其中当接收到和/或作用于无效消息时提交数据库变化。在另一例中,采用异步技术,其中无论是否发生发送以及/或者接收到消息,都提交数据库变化。
在1120处,所保存的结果被无效。应该理解,可以采用使结果无效的各种方法。例如,结果可以从内存中被删除、被标记为无效以及/或者被覆写。在1130处,可以执行自动刷新来查询当前的且一致的结果,并且为随后的数据库变化重新注册无效消息。
现在参照图12,说明了按照本发明一方面的另一个示例性的基于时间的无效方法。参照1210,无效信息内包括的时间段期满。随后,发送并接收无效消息。无效消息可以包括一部分无效信息。例如,可以包括唯一标识符来标识要被无效的一组不一致结果。在1220处,所保存的结果被无效(如类似于上面)。在1210处,可以执行自动刷新来查询当前的且一致的结果,并且为随后的期满而重新注册无效消息。
为了提供本发明各方面的附加环境,图13和下列讨论提供了对其中可实现本发明各方面的适当操作环境1310的简要、一般的描述。虽然用计算机可执行指令的一般环境描述了本发明,比如可由一个或多个计算机或其他设备执行的程序模块,然而本领域的技术人员会认识到,本发明也可以与其他程序模块结合实现,并且/或者用硬件和软件的组合来实现。然而一般而言,程序模块包括执行特定任务或实现特定数据类型的例程、程序、对象、组件、数据结构等等。操作环境1310仅仅是适当操作环境的一个例子,而不限制本发明的用途或功能范围。其他适用于本发明的公知计算机系统、环境和/或配置包括、但不限于:个人计算机、手提或膝上型设备、微处理器系统、基于微处理器的系统、可编程用户电子设备、网络PC、小型计算机、大型计算机、包括上述系统或设备的分布式计算环境、等等。
参照图13,用于实现本发明各方面的示例性环境1310包括计算机1312。计算机1312包括处理单元1314、系统内存1316和系统总线1318。系统总线1318耦合系统组件,系统组件包括但不限于:把系统内存1316耦合到处理单元1314。处理单元1314可以是各种可用处理器的任何一个。双重微处理器及其他多处理器结构也可以用作处理单元1314。
系统总线1318可以使几种总线结构的任一种,包括内存总线或内存控制器、外围总线或外部总线、以及/或者使用多种可用总线结构的本地总线,多种总线结构包括、但不限于:8位总线、工业标准结构(ISA)、微通道结构(MSA)、扩展ISA(EISA)、智能驱动设备(IDE)、VESA本地总线(VLB)、外围组件互连(PCI)、通用串行总线(USB)、高级图形端口(AGP)、个人电脑内存卡国际互连总线(PCMCIA)以及小型计算机系统接口(SCSI)。
系统内存1316包括易失性内存1320和非易失性内存1322。基本输入/输出系统(BIOS)被存储在非易失性存储器1322中,它包括如启动期间在计算机1312内元件间传递的例程。通过说明但不限制,非易失内存1312可以包括:只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性内存1320可以包括:随机存取存储器(RAM),它充当外部高速缓存内存。通过说明但不限制,RAM在许多形式中可用,比如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双重数据速率SDRAM(DDR SDRAM)、高级SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)以及直接Rambus RAM(DRRAM)。
计算机1312还包括可移动/不可移动的、易失性/非易失性的计算机存储媒介。图13说明了例如磁盘存储器1324。磁盘存储器1324包括、但不限于:像磁盘驱动、软盘驱动、磁带驱动、Jaz驱动、Zip驱动、LS-100驱动、闪存卡或存储棒这样的设备。此外,磁盘存储器1324可以包括独立的存储媒介,或者与其他存储媒介组合,其他存储媒介包括、但不限于:像光盘只读设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可写驱动器(CD-RW驱动器)或数字化视频光盘只读驱动器(DVD-ROM)这样的光盘驱动器。为了便于把磁盘存储设备1324连到系统总线1318,一般使用像接口1326这样的可移动或不可移动的接口。
应该理解,图13描述了充当适当操作环境1310中描述的用户和基本计算机资源之间的中间者的软件。这种软件包括操作系统1328。操作系统1328可以被存储在磁盘存储器1324上,用于控制并分配计算机系统1312的资源。系统应用程序1330通过操作系统1328到程序模块1332和程序数据1334利用资源管理,上述三者或被存储在系统内存1316中,或被存储在磁盘存储器1324上。应该理解,本发明可以用各种操作系统或操作系统的组合来实现。
用户通过输入设备1336把命令或信息输入到计算机1312中。输入设备1336包括、但不限于:像鼠标这样的指示设备、轨迹球、记录笔、触摸板、键盘、麦克风、数码相机、web照相机等等。这些及其他输入设备经由接口端口1338通过系统总线1318连到处理单元1314。接口端口1338包括例如:串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备1340使用某些与输入设备1336相同类型的端口。因此例如,可以使用USB端口向计算机1312提供输入,并且从计算机1312把信息输出到输出设备。提供输出适配器1342来说明在其他输出设备1340中存在某些需要特殊适配器的输出设备1340,像监视器、扬声器和打印机。输出设备1342包括、但不限于:在输出设备1340和系统总线1318之间提供连接手段的显卡和声卡。应该注意到,其他设备和/或设备系统既提供了输入能力又提供了输出能力,比如远程计算机1344。
计算机1312可以在使用到一台或多台远程计算机(比如远程计算机1344)的逻辑连接的网络化环境中工作。远程计算机1344可以是个人计算机、服务器、网络PC、工作站、基于微处理器的设备、对等设备或其他公共网络节点、等等,并且一般包括关于计算机1312的许多或全部元件。为了简洁,与远程计算机1344一起说明了内存存储设备1346。远程计算机1344通过网络接口1348逻辑上连接到计算机1312,然后通过通信连接1350物理地连接。网络接口1348包含像局域网(LAN)和广域网这样的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网/IEEE 802.3、令牌环/IEEE 802.5等等。WAN技术包括、但不限于:点对点链路、像集成服务数字网络(ISDN)及其变化这样的电路交换网络、以及数字用户线(DSL)。
通信连接1350是指用于把网络接口1348连到总线1318的硬件/软件。虽然为了说明简洁示出通信连接1350在计算机1312内,然而它也可以在计算机1312外部。连到网络接口1348所必要的硬件/软件包括,仅为了示例性目的,内部和外部技术,比如包括常规电话等级调制解调器、电缆调制解调器和DSL调制解调器在内的调制解调器、ISDN适配器以及以太网卡。
上面描述的内容包括本发明的示例。当然它不可能描述为了描述本发明所使用的组件和方法的每个可想得到的组合,但是本领域的普通技术人员可以认识到,本发明的许多进一步组合和交换是可能的。因而,本发明试图包含落在所附权利要求的精神和范围内的所有这样的替代、修改和变化。而且,在某种程度上术语“包括”或用于描述详细描述,或用于描述权利要求,该术语与权利要求中被用作连词的“包括”有类似的包括性作用。