public class BinaryStoreExample extends Object
NoSQLBinaryStore
module, which is a
pre-built implementation of the Oracle Coherence BinaryEntryStore
interface to manage interaction with an Oracle NoSQL Database instance.
Objects that are manipulated by an Oracle Coherence application need to be
serialized when moving them between the application space and the Oracle
Coherence cache, as well as between the Oracle Coherence Cache and a
BinaryEntryStore
implementation. Oracle Coherence supports a variety
of mechanisms for doing this, including multiple native Java Serialization
techniques, multiple Oacle Coherence Portable Object Format (POF) techniques,
and the ability to use user-provided serialization implementations. This
example assumes that an application exists with a working Serialization
scheme in place. This example provides POF serialization for the
Person
implementation. Although we encourage users to migrate to an
Avro schema for object storage format, the BinaryEntryStore implementation
will leverage the existing application object serialization to allow for the
integration to be implemented with minimal impact to the Oracle Coherence
application code.
Because this example is using the NoSQLBinaryStore
module to interact
with the Oracle NoSQL Database, instance it does not need to directly use
Oracle NoSQL Database classes in order allow the Oracle NoSQL Database to
provide persistent backing for an Oracle Coherence cache. The
NoSQLBinaryStore
module relies on application-controlled
serialization.
The cache-config.xml file in this directory includes a definition for the
BinaryCache
cache. It is assumed that the reader has some level of
familiarity with Oracle Coherence cache configuration. The
BinaryCache
has a cache-mapping
that references a
distributed-scheme
named BinaryCacheScheme
. Note that
although Oracle Coherence allows for a variety of different cache schemes,
BinaryEntryStore
is specifically designed to work within distributed
cache schemes.
Please note that this example is structured, for simplicity, to assume that the example program is the only member of the cache cluster. In a real environment it will be necessary to have all cache cluster members using the same cache configuration file.
The distributed scheme contains a serializer definition that tells Oracle Coherence to use the Oracle Coherence Portable Object Format when serializing and de-serializing objects in association with this cache. Its configuration relies on a POF configuration file to control the type mapping for the application.
The distributed-scheme
also contains the definition of a
cachestore-scheme
within a read-write-backing-map-scheme
.
Here, the definition specifies store-name
and helper-hosts
parameters to allow access to the Oracle NoSQL Database instance, in
association with this cache. Its configuration includes <kv:XXX>
style definitions, where XXX
are:
store-name
- identifies the Oracle NoSQL Database instance name that
will be backing the cache.helper-hosts
- contains a comma-separated list of host:port
identifiers for hosts to contact in order to set up a connection to the
Oracle NoSQL Database instance.In addition to the kvclient.jar file, this application also requires that kvcoherence.jar and coherence.jar be included in the classpath. kvcoherence.jar is included in the same directory as kvclient.jar for Oracle NoSQL Database EE distributions. The kvcoherence.jar file internally references kvclient.jar so it does not need to be explicitly referenced in the classpath. The coherence.jar file should be downloaded and installed separately.
To build this example in the examples/coherence directory:
cd KVHOME/examples/coherence javac -cp KVHOME/lib/kvcoherence.jar:COHERENCE_HOME/lib/coherence.jar \ -d classes *.java
Before running this example program, start an Oracle NoSQL Database instance. The simplest way to do that is to run kvlite as described in the Quickstart document.
Before running the example, modify the coherence-cache.xml file, if necessary, and update the definitions of the storeName and helperHosts parameters with the appropriate values based on your kvstore instance. For all examples the default instance name is kvstore, the default host name is localhost and the default port number is 5000. Then, run this program, as follows:
java -cp classes:KVHOME/lib/kvcoherence.jar:COHERENCE_HOME/lib/coherence.jar \ -Dtangosol.pof.config=pof-config.xml \ -Dtangosol.coherence.cacheconfig=cache-config.xml \ coherence.BinaryStoreExample -cache BinaryCache
In this example a single key is used for storing a kv pair, where the value is an object serialized using Portable Object Format encoding. The first time the example is run it inserts the kv pair, and for subsequent executions, it reads and updates the kv pair, incrementing the "age" field.
Constructor and Description |
---|
BinaryStoreExample(String[] argv)
Parses the command line args, opens the cache.
|
Modifier and Type | Method and Description |
---|---|
static void |
main(String[] args)
Runs the BinaryStoreExample command line program.
|
(package private) void |
runExample()
Insert a kv pair if it doesn't exist, or read/update it if it does.
|
BinaryStoreExample(String[] argv)
public static void main(String[] args)
void runExample()
Copyright (c) 2011, 2015 Oracle and/or its affiliates. All rights reserved.