This content has been marked as final. Show 3 replies
Hi,1 person found this helpful
I have used oracle streams in the past to do this sort of synchronisation. As a stream can look like JMS we just had JMS listeners that ran in our Coherence cluster listening to the oracle streams and updating the caches. This worked OK for us but we did not have significant load.
Currently Oracle seem to be pushing Golden Gate as a solution for this. There is a presentation here.http://coherence.oracle.com/download/attachments/13173077/Coherence+GoldenGate+Adapter.pdf?version=1&modificationDate=1331118682338 I have not used it and don't know how it performs or whether it costs extra though.
Thanks Jonathan for the reply. Yes, Golden Gate definitely costs extra.
Regarding using streams and JMS, we are looking for a solution to propagate changes on a complex query instead of single table. Any suggestions would be grateful.
I too have successfully used Oracle Advanced Queues to propagate DB changes into Coherence, this time through a pre-existing C++ client, which was adapted to be an extend client. This client managed the complex queries need to build the objects stored within the grid. The client would pick up notification of a data change from the QA and was then able to determine which objects were out of date, requery for the data from the db and update the grid.
This worked (and still works) but it's not a pretty solution, and the extend client is both a single point of failure and a bottle neck.
We're currently working on a replacement system which uses QAs to receive delta changes from the database, which are uses to update intermediate object within the grid. These objects are then combined on the grid to form complete objects. The combining process is actually managed by asynchronous cache stores invoking the business logic. So far, this seems to be a good solution. However, it does mean pulling logic out of the database, which doesn't fit everybodies use case.
Hope this helps,