Friday, July 17, 2009

JBossCache 3 vs Oracle Coherence

I'm looking at both products right now. If anyone has real world comparative experience, please chime in.

My initial impression is that Coherence has a more sophisticated replication scheme that eliminates the need for all data to be replicated to all nodes; this probably helps them to get closer to true linear scalability.

My other impression is that Coherence is insanely expensive. Their cheapest edition is $4600 per processor; whoa!

3 comments:

  1. Hi

    I would say that Coherence is a very good caching product and better then JBoss cache. Choosing the right caching product however really dependent on what your looking for i.e. are you looking for read mostly caching?, session high availability?, solving database bottleneck?, solving processing and data bottleneck (transaction processing support)?. JBoss seem to be geared to small cluster deployment that are read mostly. Both GigaSpaces and Coherence were built to cover all the scenarios that i mentioned. According to various recent comparison it seems that GigaSpacs is more geared to transaction processing then Coherence where Choerence seem to be simpler to use if your looking for pure read/write cache. With our latest release we also provides optimization for multi-core scalability and extended query support, that is another area where users experience a real difference between the products.

    You can view a comparison between Coherence and GigaSpaces conducted by an independent consultant for one of the online gaming companies here, Take a specific note at one of his comment when he explains his selection:

    "The reason why I suggested Gigaspaces over Coherence for processing is that it is built around a processing model and has a lot of flexibility in terms of how you dispatch tasks, how they are picked up and processed, automatically hides the target objects frm other processors in parallel, has spring declarative transaction support and data mirroring etc, so it allows you to write parallel processing apps efficiently. Command pattern in Coherence is a good start, but not as fully-featured as Gigaspaces. That doesn’t mean that you cannot do parallel processing with Coherence – of course you can – but in my opinion it is easier to write it with Gigaspaces because the framework gives you more."

    There was other cases where we were specifically called to replace an implementation of JBoss cache for one of the big telco sites. Apparently it couldn't scale beyond 3 servers.

    Another thing that you should note is our cloud support. You can try out the product and test how it scales on large cluster deployment without the need to download or install the product in roughly 2.5 min!. To learn how this online benchmark works see online presentation here

    From a pricing perspective we provide a fairly flexible offering from a free hub/spoke topology (Similar to Terracotta) through standard edition (Similar to the JBoss subscription pricing) up to an full fledged application platform. All options are offered also on a pay per use model on the cloud.


    Many of the people that i spoke with where looking for caching as a mean to scale their application. What you should note is that caching is only part of the solution on that regard. To get to the point where your entire application scales on demand without changing configuration or code then you will need a broader application platform that covers all the application tiers from the load-balancer to the database.


    HTH
    Nati S.

    P.S Even though i tried to be objective, as the GigaSpaces CTO i have a natural bias, so take everything that i say with a grain of salt. At the end of the day your best answer is to try it yourself and judge by the results.

    ReplyDelete
  2. As Nati said, JBC and Coherence do solve somewhat different problems, although there is some overlap. For example if what you need is a mechanism for replicating HTTP or EJB sessions, or a clustered cache for Hibernate, these are use cases that JBC was specifically designed for.

    As a general-purpose distributed, in-memory object store though, JBC does not perform as well since it is designed to be a "read-mostly" cache.

    Regarding scalability, with the right use-cases, I have seen JBC scale to over a hundred nodes (This is with JBC 3.x and MVCC locking, which is significantly better-performing than JBC 2.x).

    I also should add that I have recently started Infinispan, a new data grid platform which is designed as a distributed data store using consistent-hash based distribution, a simpler Map-like API, and with much higher target scalability and performance. Check out Infinispan here:

    http://www.infinispan.org
    http://blog.infinispan.org

    Cheers
    Manik

    PS: And a disclaimer: I am the project lead on JBoss Cache, as well as founder and project lead on Infinispan. :)

    ReplyDelete
  3. Manik, thanks for the comment - Now that Infinispan is in Beta we will give it a try. Can you offer an approximate GA release date for Infinispan?

    ReplyDelete