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 InetBuilderfor KVLocal instance. You cannot set this parameter when usingUnixDomainBuilder. | 
| 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 of5000must be specified with the-portflag 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  80GB
 | 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  85MB
 | 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 KVLocalimport oracle.kv.KVLocalConfig; /* Create a KVLocalConfig object with TCP sockets */ KVLocalConfig config = new KVLocalConfig.InetBuilder("rootDir") .build();
- For a non-secure KVLocalimport 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 invokeKVStore.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