3 Replies Latest reply: Oct 10, 2012 6:59 PM by user123799 RSS

    How to push real-time data changes from an oracle database into Coherence

    user7750191
      We are on Oracle database 11gR1 and building an e-commerce application with Coherence data caching. All the data cached in Coherence is bound to change because of the underlying ERP application and we are looking at a way to propagate these changes into Coherence as and when they happen.

      We already tried Database Triggers and DCN (Database Change Notification) to achieve the same and our data changes are huge and these processes were not able to handle them.

      We are now looking to Oracle Streams but have not clue how to push data from an oracle Database into Coherence. Can anybody please let us know if it can done and how to achieve it.
        • 1. Re: How to push real-time data changes from an oracle database into Coherence
          Jonathan.Knight
          Hi,

          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.

          JK
          • 2. Re: How to push real-time data changes from an oracle database into Coherence
            user7750191
            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.
            • 3. Re: How to push real-time data changes from an oracle database into Coherence
              user123799
              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,

              Andy