Client and cache configuration for Oracle consistency

I have a specific scenario for which we want to use Coherence as a sitributed cache. What I will describe here.

  • I have 20+ offline processes that will be pushing data into the cache all the time. the frequency of all of them is different, although this is not a concern.
  • And 2 processors that will read data from this cache.
  • I don't need any underlying db other than a way to ensure consistency. Data will be written to the cache and read from the cache.
  • I have a 4 node cluster at my disposal (cost limitation in general) and the consistency cluster will be in different blocks (no limit) and both the fill part of the cache and the read part will be on different nmachines.
  • The maximum amount of cache memory per day will be about 6 GB, min - 2 GB. The cache will only have daily data, and I will have separate archiving processes to store archives at the same time. The fact is that the size of the cache at the moment will have only this size. Let's say I'm going to keep the date from the key equation.
  • Would like to investigate if I can store more in these 4 nodes. Its simple serialization right now, can explore other nbinary formats. Or should I definitely stick with this cache size?
  • My read and write operations are fairly common throughout the day. This means reading and writing will continue with those 2 reading clients and 20+ clients. Its not like one of them anymore. Even though in all background processes a batch startup process is running, which clicks more on the cache than the subsequent press. But continuous pressing pushes a fair amount of data.

Now my questions are about the above points (and due to some confusion)

  • The biggest one is someone told me that I have a limited number of connections depending on the nodes we bought. so he said that if its 4, you should ideally have 4 connections only at max. So, develop a gatekeeper application and what not. Even if we are using TCP Extend. Now from my reading I don't think so. It? It's not about going that way unless it's really a limitation.

In other words, is there a proxy service connection limitation based on the nodes in the cluster?

  1. Soemwhat related just above. to the maximum, I get some performance penalty when pushing the cache only if I go through the extension, right?

  2. Partial cache / near cache. Because read times, as well as the update cache itself, are extremely critical. (the most incomprehensible question I have).

  3. Actually I want to see the benefit to be gained from migrating to POF instead of talking about serialization / externalization / protobuf. Can coherence support protobuf out of the box? (maybe later)

+2


a source to share


1 answer


There are no technical restrictions on the number of connections that the Coherence Extend Proxy can support, except for the usual network and hardware resource limitations. You will need to ask your Oracle salesperson if there are licensing restrictions.

The impact of using a proxy server affects performance because you add additional network hop (client to proxy for the cluster). If you are using POF serialization, the proxy should not serialize / deserialize values. It can simply pass the object through its serialized form. In most applications, the efficiency of using a proxy server is tiny as Coherence is highly optimized for network speed. You don't need to use a proxy unless your clients are .NET or C ++, but there are advantages to isolating client performance from cache impact.



Near the cache, the search performance will be greatly improved if there are many frequently retrieved items for the client as they are found in the process.

POF offers performance improvements based on faster serialization / deserialization and more compact storage. It's always best to try test data based on your actual production data and measure the difference yourself. Coherence does not support protobuf out of the box.

+1


a source







All Articles