Reputation: 243
am very interested in using Oracle Coherence as a data store. My understanding is that it can store Java objects in name value pairs. So questions are:
Upvotes: 1
Views: 1871
Reputation: 2165
I was investigating the issue with object size limit several monthes ago (with Coherence ver 3.6) and today my information can be stale. There was not possible to put object larger 120 Mb (approximately +-5Mb) in cache. I was playing with tangosol xml settings (recommended by support) but without success.
Upvotes: 0
Reputation: 1236
Because Coherence is a clustered system, there are some requirements for the objects that are stored. From http://docs.oracle.com/cd/E24290_01/coh.371/e22837/gs_intro.htm#CHDFGDIF
Cache keys and values must be serializable (for example, java.io.Serializable). Furthermore, cache keys must provide an implementation of the hashCode() and equals() methods, and those methods must return consistent results across cluster nodes. This implies that the implementation of hashCode() and equals() must be based solely on the object's serializable state (that is, the object's non-transient fields); most built-in Java types, such as String, Integer and Date, meet this requirement. Some cache implementations (specifically the partitioned cache) use the serialized form of the key objects for equality testing, which means that keys for which equals() returns true must serialize identically; most built-in Java types meet this requirement as well.
Patrick Peralta gives a great example here: http://blackbeanbag.net/wp/2010/06/06/coherence-key-howto/
Regarding the first question: "Are there any limit to the Java object size that can be stored per entry?"
One other thing to keep in mind is that the data that a server manages has be replicated for HA, and load-balanced on failover and when new servers spin up. That means if each server is managing 20GB of data (including 10GB that it is the primary owner of and 10GB that it manages for HA purposes), then when a server dies, a total of ~20GB will be moved around to re-achieve a cluster-wide HA status. On gigabit ethernet, a server can communicate about 120MB of data per second (i.e. moving 1GB takes about 8 seconds), so a cluster with 20 servers that each manage 20GB would take about 8 seconds to re-achieve cluster-wide HA. (This is one reason why Oracle engineered systems like Exalogic are built on 40 gigabit network fabrics!)
For the sake of full disclosure, I work at Oracle. The opinions and views expressed in this post are my own, and do not necessarily reflect the opinions or views of my employer.
Upvotes: 1