Embedding KVLocal in your Java Application
Make sure that the kvstore.jar
file is included in your application's CLASSPATH. The kvstore.jar
file is available as part of Oracle NoSQL Database software. You can download it from Oracle Technology Network.
Create KVLocalConfig
Object
Create an object of the KVLocalConfig
class. This class represents the configuration parameters used by KVLocal. KVLocalConfig
class contains two builders: InetBuilder
and UnixDomainBuilder
. The InetBuilder
is the builder to construct a KVLocalConfig
instance using TCP/IP sockets, and the UnixDomainBuilder
is the builder to construct a KVLocalConfig
instance using Unix domain sockets.
Parameter | Description |
---|---|
StoreName If not set, defaults to Example:
|
Name of the KVLocal instance. |
HostName (For (For Example: |
The network address to use to reach the host when using InetBuilder for KVLocal instance. You cannot set this parameter when using UnixDomainBuilder .
|
Port If not set, defaults to Example: |
The TCP/IP port on which the client APIs communicate with the KVLocal instance. You can change this parameter only if you are using InetBuilder . When using Unix domain sockets, it does not represent a TCP/IP port. However, the default value of 5000 must be specified with the -port flag when connecting to the Admin CLI.
|
enableSecurity (For (For Example: |
Determines whether it is a secure or non-secure KVLocal store. For UnixDomainBuilder , the value of this parameter is always false, and you cannot modify it. The reason being the Unix domain sockets configurations are inherently secure for communication.
|
StorageSize If not set, defaults to Example: To set the storage size to
80 GB
|
The maximum amount of available disk space in GB for a KVLocal database. If the KVLocal database exceeds its disk usage threshold value (excluding 5 GB of free space), KVLocal suspends all write operations on the host system until you remove sufficient data to satisfy the threshold requirement. If you set storage directory size to 0, KVLocal opportunistically uses all the available space, excluding 5 GB free disk space. |
MemoryMB If not set, defaults to Example: To set the memory size to
85 MB
|
AAmount of memory size in MB of the Java heap used to run the embedded KVLocal database. The Java heap size here refers to the Java heap size of the child process and not of the JVM process that is running the application.
Note: Ensure that the host machine has enough memory available to create the JVM with the requested heap size. |
- For a secure KVLocal
import oracle.kv.KVLocalConfig; /* Create a KVLocalConfig object with TCP sockets */ KVLocalConfig config = new KVLocalConfig.InetBuilder("rootDir") .build();
- For a non-secure KVLocal
import oracle.kv.KVLocalConfig; /* Create a KVLocalConfig object with port number 6000 and security not enabled */ KVLocalConfig config = new kvlocalConfig.InetBuilder("rootDir") .setPort(6000) .enableSecurity(false) .build();
rootDir is where the kvroot
directory should reside. It refers to the absolute path to the directory where Oracle NoSQL Database data is stored, for example,
.
/home/kvstore
If you enable security for KVLocal, a security file (user.security
) gets generated under the kvroot
directory when you start KVLocal. If a kvstore already exists (in other words, the kvroot
directory already exists), KVLocal uses the security file present in the existing kvroot
directory to secure the kvstore.
import oracle.kv.KVLocalConfig;
/* Create a KVLocalConfig object with Unix domain sockets */
KVLocalConfig config = new KVLocalConfig.UnixDomainBuilder("rootDir")
.build();
rootDir is where the kvroot
directory should reside. It refers to the absolute path to the directory where Oracle NoSQL Database data is stored, for example,
.
/home/kvstore
When you use Unix domain sockets, socket files get created under the kvroot directory. These socket files are used for communication between the server (KVLocal) and the client (user application). For example, if your kvroot directory is /home/kvroot, the full path to one such Unix domain socket file is: /home/kvroot/sockets/sock-5000
Invoke KVLocal Start and Stop APIs
Note:
One application (in other words, one JVM) can manage only one KVLocal store. The second KVLocal instantiation within the same JVM throws the exception "The KVLocal has already been initialized.".Method Name | Description |
---|---|
start(KVLocalConfig config) | Starts a KVLocal instance. |
startExistingStore(String rootDir) | Starts KVLocal instance from the existing root directory. |
stop() | Stops the running instance of KVLocal. |
KVStore getStore() | Gets a store handle to a running KVLocal instance.
A new store handle gets created as needed on the first call to this method. All subsequent calls return the existing store handle. If the existing store handle is cleaned up by invocation of the Note: The application must invoke KVLocal.closeStore() method when it is done accessing the store to free up resources associated with the store handle. DO NOT invoke KVStore.close() method, because it does not free up all the resources associated with the store handle and makes the store handle non-functional.
|
import oracle.kv.KVLocalConfig;
import oracle.kv.KVLocal;
/* Create a KVLocal object and pass the KVLocal configuration parameters to the object */
KVLocalConfig config = new KVLocalConfig.InetBuilder("rootDir")
.build();
/* Start KVLocal*/
KVLocal local = KVLocal.start(config);
/* Get a handle to kvstore */
KVStore storeHandle = local.getStore();
/* Use existing key/value APIs to write to kvstore */
storeHandle.put(Key,Value);
ValueVersion valueVersion = storeHandle.get(Key.createKey(key));
/* Close kvstore */
KVLocal.closeStore();
/* Stop kvstore */
local.stop();
rootDir is where the kvroot directory should reside. It refers to the absolute path to the directory where Oracle NoSQL Database data is stored, for example,
.
/home/kvstore
import oracle.kv.KVLocalConfig;
import oracle.kv.KVLocal;
/* Create a KVLocal object and pass the KVLocal configuration parameters to the object */
KVLocalConfig config = new KVLocalConfig.UnixDomainBuilder("rootDir")
.build();
/* Start KVLocal*/
KVLocal local = KVLocal.start(config);
/* Get a handle to kvstore */
KVStore storeHandle = local.getStore();
/* Use existing key/value APIs to write to kvstore */
storeHandle.put(Key,Value);
ValueVersion valueVersion = storeHandle.get(Key.createKey(key));
/* Close kvstore */
KVLocal.closeStore();
/* Stop kvstore */
local.stop();
rootDir is where the kvroot directory should reside. It refers to the absolute path to the directory where Oracle NoSQL Database data is stored, for example,
.
/home/kvstore