Which Coherence Edition is Right for Me?
By Antony Reynolds on Jan 06, 2009
It seems like I am dealing a lot with Coherence these days. For those of you who have been stuck in a closet for the last 18 months Coherence is Oracles data grid software acquired through the purchase of Tangosol. A question that often comes up is what edition of Coherence do I need? So lets plunge in and look at what each edition does.
The definitive source for what is included in which edition of Coherence is to be found on OTN and the Coherence wiki. This splits Coherence into 3 types of client and 3 server editions. We will look at each server edition in turn.
This provides a basic data caching capability based around a get/put model as part of a reliable data grid. Data may be distributed among multiple nodes and stored and retrieved from those nodes. If using a partitioned cache then data will normally be duplicated to avoid data loss in event of node failure. There is also support for access to data stores through Coherence, so that when you write data into a Coherence cache it automatically is written into an underlying database (write-through cache). Similarly reading from a Coherence cache may load data from a data source (read-through cache).
Good uses for standard edition are simple reference data caches or shared state information between multiple nodes.
The enterprise edition adds a lot of new functions to Coherence including write behind caching, transactions and parallel query operations. It also allows the processing to be moved to the data, meaning that Java code can be executed in the cache, with parameters being passed into the cache. The code is executed on data in the cache and the results returned back to the requestor. The enterprise edition also adds the facility to be notified when changes are made to data. To make management easier in an enterprise class product there is a clustered JMX provider that provides a single view of resource usage across the cluster.
Enterprise edition is good when you want all nodes to actively store data and distribute processing and queries between all nodes. It can be used to extend applications servers into a grid infrastructure, hence its inclusion in Oracles WebLogic Suite.
Grid edition adds two key functions to the enterprise edition. First is support for data replication between two data grids, useful for DR sites for example. It also adds support for real time clients. A real time client can be thought of as a member of the data grid that does not store data. For enterprise edition these clients must actually have an enterprise edition license. For grid edition they can use a real time client license (only usable with grid edition). The upshot of this is that if you have a lot of real time clients (more than 1.17 times the number of servers in the grid) then it may be more cost effective to purchase the grid edition.
Grid edition is good for having a seperate grid tier with applications servers and or/or thick clients making use of the services of the data grid. In this type of environment the grid can become the application infrastructure.
So in short use standard edition if you are looking for an industrial strength java cache with reliable distributed cache capability. Move to enterprise edition if you want in-memory grid processing and parallel query integrated with your main application platform. Finally use grid edition if you are ready to make Coherence the heart of you grid platform and want to provide access to it from multiple platforms, clients and servers.
I am speaking on Coherence at the Irish Java Technology Conference next Thursday 8 January, so if you are attending look me up.