[hibernate-dev] [infinispan-dev] Continuous Query Caching

Manik Surtani manik at jboss.org
Tue Sep 29 05:24:49 EDT 2009

On 29 Sep 2009, at 10:19, Mircea Markus wrote:

> On Sep 29, 2009, at 12:08 PM, Manik Surtani wrote:
>> On 29 Sep 2009, at 09:57, Mircea Markus wrote:
>>> Hi,
>>> Again, this is a feature from Coherence[1].
>>> Basic idea is to execute a query against the cache, and hold the  
>>> result object. This result object will always have up to date  
>>> query result; this means that whenever something is modified in  
>>> the cache the result itself is updated. Advantage: if one performs  
>>> the same query very often(e.g. several times every millisecond)  
>>> the response will be fast and the system will not be overloaded.
>> Is it really faster?  Surely all you save is the construction of  
>> the various query objects, but the query itself would have to be re- 
>> run every time.  Or does it attach a listener to the cache and  
>> check whether any new additions/removals should be used to update  
>> the result set?
> this is the way it works. It is a sort of a near-cache, just that  
> instead of being invalidated it is updated whenever the cache is  
> updated. The documentation also suggests that they are using  
> listeners.
>>  I don't see how that could be much faster though.
> I think it might be if the you are running *the same query* tons of  
> times. Basically you don't do a map-reduce on all the nodes, but  
> rather on every insertion (especially if the number of insertion is  
> relative small compared to the number of same-query-bring-run) you  
> updated (if necessary) the cached query result.

Hmm.  It would be pretty use-case-specific.  It's hard to see how this  
_generally_ performs better, since you need to make sure you are aware  
of all changes happening all over the cluster to keep this result set  
up to date (REPL-style scalability bottleneck!)

Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache

More information about the hibernate-dev mailing list