Using Queries with Coherence Write-Behind Caches
By jpurdy on May 31, 2012
Applications that use write-behind caching and wish to query the logical entity set have the option of querying the NamedCache itself or querying the database.
In the former case, no particular restrictions exist beyond the limitations intrinsic to the Coherence query engine itself.
In the latter case, queries may see partially committed transactions (e.g. with a parent-child relationship, the version of the parent may be different than the version of the child objects) and/or significant version skew (the query may see the current version of one object and a far older version of another object). This is consistent with "read committed" semantics, but the read skew may be far greater than would ever occur in a non-cached environment.
As is usually the case, the application developer may choose to accept these limitations (with the hope that they are sufficiently infrequent), or they may choose to validate the reads (perhaps via a version flag on the objects). This also applies to situations where a third party application (such as a reporting tool) is querying the database. In many cases, the database may only be in a consistent state after the Coherence cluster has been halted.