当前位置: 首页 > 专利查询>BEA系统公司专利>正文

刷新bean缓存的系统和方法技术方案

技术编号:2864525 阅读:271 留言:0更新日期:2012-04-11 18:40
网络群集(104)中的服务器(110、112、113)可分别存储数据项(122)的副本(116、118、120)在本地缓存中,通过只读实体bean提供对这些副本的读访问。数据库(108)中的原始数据项(122)可通过其中一个群集服务器上的读/写实体bean来更新。群集服务器可访问使无效目标,它包含有群集中服务器上存储的数据项的副本(116、118、120)相关的标识信息。一旦读/写bean更新了数据库中的数据项,使无效请求可发送或多点传送到所有群集成员,或者到使无效目标上所包含的任何只读bean或者服务器。每个接收请求的服务器或只读bean知道在本地缓存中废弃该数据项的任何副本,并且可从数据库请求该数据项的当前副本。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

一般而言,本专利技术涉及在网络中存储数据的一种系统和方法。
技术介绍
当数据项存储在可通过网络访问的单个数据库或数据存储器中时,通常情况下,多个服务器或客户将需要访问该数据项。传统而言,这需要在每次访问数据项时都存取一次数据库。每次都存取数据库是资源相对密集(resource intensive)和效率相对低下的。克服一部分效率问题和伸缩级性问题的一种方法是在缓存中存储数据项的本地副本。当将来需要访问该数据项时,服务器或客户则可以使用此本地副本。这个做法在数据项永远不变时是适用和高效的,但当数据项在数据库中被更新时,问题出现了。如果数据库中的数据项被更新了,存储在网络上的本地缓存中数据项的副本将不同于数据库中的数据项,因为缓存不会自动接收到更新。当在网络的多个服务器和/或客户上存在本地副本时,问题更严重了。因为这些本地副本的每一个都在不同时刻被创建,在网络上可存在该数据项的多个版本。如果用户试图更新或察看该数据项,该用户所访问的副本可能不是当前的和正确的。这种数据等待时间(latency)问题对于需要接近实时精确性的应用可能导致严重的问题,例如提供“实时”股价的网站。这种应用可能会用到有至少两个列的数据表,一个列包含股票符号,可作为表的主关键字,和一个列包含每种股票的当前价格。在这种应用中,多数活动包括用户访问网站和读取当前股市价值。同样典型的活动还包括后台应用或系统周期性访问,例如每分钟一次,带来更新的股价。为了更新数据,这些后台系统需要读/写访问数据库。对系统的多数访问是只读的。对于这些只读用户,系统可缓冲数据来提供更快的访问。系统可周期性更新缓冲信息,例如每十五分钟。然而,在这种“通常为读”的情况下,为用户提供最近的数据可能会更好。在提供准确信息上,十五分钟的延迟对于许多应用来说可能是不合要求的。通常最好能为用户提供尽可能准确的信息。确保用户获得准确信息或至少与存储在数据库中的数据一致的信息的一种方法是,对于每个请求,从数据库中拉取信息,而不是读取缓冲副本。这对于许多应用来说可能是非常昂贵的,因为访问数据库和从内存中读取值相比,需要更大量的时间和更资源密集。对于在数据库中更新数据的人来说,把尽可能多的更新都包括在一批事务中以改善性能可能是较理想的。把更新都包围在单次事务中也确保所有更新都发生或者任何更新都没有发生。但是,问题出现在,如何为在事务中更新的每一项更新其缓冲副本。
技术实现思路
这里包括了一种系统和方法,用于在网络群集中至少一个服务器上更新存储在本地缓存中的数据项副本。标识(Identification)信息将提供给存储在群集中服务器上的读/写bean。标识信息涉及在群集中包含只读bean和本地缓存中该数据项副本的任何服务器。只读bean提供该数据项的本地副本的读访问。原始的数据项存储在网络数据库中,使用读/写bean来更新。当数据项由读/写bean更新时,使无效(invalidate)的请求可从包含读/写bean的服务器发送或多点传送到整个群集,或发送到标识信息所识别的有该数据项的本地副本的任何服务器或只读bean。响应于此请求,于是该数据项的任何本地副本可被废弃。该数据项的当前副本可从数据库读取和存储在本地缓存中。附图说明图1示出本专利技术的一个实施例所述的系统。图2示出如图1的实施例所述的系统。图3示出图1所示系统的另一个实施例。图4示出如本专利技术的一个实施例所述的方法的流程图。图5示出如本专利技术的另一个实施例所述的方法的流程图。图6示出如本专利技术的另一个实施例所述的系统。具体实施例方式为了在网络上分布的项之间维护一致性,如本专利技术所述的系统可利用bean或Java Beans。Bean基本上是用于可加到服务器上扩展功能的组件的框架。一个实施例使用两种bean,“只读”实体bean和“读/写”实体bean。实体bean是持久化、允许共享访问、有主关键字并且可与其他实体bean相互共享。每个实体bean可在关系数据库中有基础表,bean的每个实例对应该表的一行。只读bean是可在服务器上缓冲的bean,例如驻留在网络群集中的企业级Java Bean。只读bean可提供到群集中的任何服务器和群集内外的任何客户的读访问,读/写bean是事务性的,驻留在群集服务器上,为群集服务器提供到网络数据库的读/写访问。只读bean处理群集服务器上本地缓存中的数据。读/写bean处理数据库中的信息。处理缓存和数据库中的信息并发的一种方法是为每个只读实体bean联结一个超时值。例如,只读bean可配置为十分钟的缺省循环。在经过十分钟的周期之后,只读bean重回数据库和读取当前值。这个办法在某些应用中很好,例如以固定间隔改变值的那些应用。但是,也有数据很少发生变化的应用。当数据改变时,用户可能需要尽快知道变化。因为数据不常变化,为了节约资源而设置长的读循环时间是很吸引人的。但是,这可能会有导致与数据有关的等待时间的非期望结果,因为取决于在周期中更新发生的时机,在更新数据时的等待时间结果可能差不多会和周期时间一样长。对于这些应用,最好是在更新数据库中的数据后立即更新只读用户可访问的数据。如本专利技术所述的一种系统提供了只读bean所暴露的接口。此接口在用户更新数据项或得知更新时允许用户或应用程序告诉系统来废弃缓存,或“使缓存无效”。此接口应由“CachingHome”引用,因为实体bean通常都有创建它的“Home”或factory。CachingHome可在其上有三个方法,和可如下编码package weblogic.企业级Java Bean;public interface CachingHome{public void invalidate(Object pk)throws RemoteException;public void invalidate(Collection pks)throws RemoteException;public void invalidateAll()throws RemoteException;}方法invalidate(Object pk)允许用户使与数据库或数据表中的特定主关键字相关联的数据无效。方法invalidate(Collection pks)允许用户使关键字的集合或组对应的数据无效。方法invalidateAll()允许用户使数据表中所有关键字对应的数据无效。这些使无效方法允许用户确保那些值存储在本地缓存中,直到程序员、应用程序、用户或系统另有指示。这样的一个方法300如图5的流程图中所示。数据项的副本存储在网络群集中的至少一个服务器上302。可使用位于群集服务器其中一个上的读/写bean在数据块中更新数据项304。然后可使用位于其中一个服务器上的只读bean的接口来发起使无效请求,将请求发送到包含数据库的本地副本的任何服务器上306。接收到请求的服务器上该数据项的任何副本则可废弃了308。在具有网络群集104的系统100中,例如图1所示,很可能在群集104中的每一个服务器110、112、114上都缓冲了存储在数据库108中的值122的副本。如果客户102通过网络106与服务器110联络,请求该服务器110使指定关键字无效,例如发出请求“invalidate(K本文档来自技高网
...

【技术保护点】
一种用于在数据库中更新数据项的缓冲副本的方法,包括:存储数据项的副本在服务器上,该数据项存储在数据库中;产生只读bean来提供对副本的读访问以及存储与只读bean相关的标识信息;产生读/写bean来提供到数据库中的数 据项的读和写访问以及使用读/写bean来更新数据项;以及使用标识信息来发送使无效请求到只读bean以使数据项的副本可被删除。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:迪安B雅各布斯罗布伍伦塞思怀特
申请(专利权)人:BEA系统公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1