In Oracle NoSQL Database client/server architecture, client side application interact with server side key-value store via intelligent Oracle NoSQL Database Driver, which is linked into the application as a Java library (.jar file), and then accessed using a series of Java APIs. Starting with release 3.3.5 support for drivers using Python and node.js is available. Refer to the Download page for the link driver link. The key features of the Oracle NoSQL Database Driver are as following:
Evenly distributes data across nodes: Records in the Oracle NoSQL Database are organized using the combination of the major and minor key components, which uniquely identifies a record in the store. Oracle NoSQL Database Driver hashes major key component of each record, and distributes the record based the partition id which in turn mapped to a respective ‘Shard’ in a Shard State Table (SST)
Run operations on fastest appropriate node: Oracle NoSQL Database Driver maintains a state table to determine eligible storage node(s) within a Shard. It also maintains average and trailing latency associated to each of the storage node(s) within a group and uses this information to decide the best performing node available to service the operation request.
Bounded network hops for all operation: Only after determining the best performing node, operation requests are forwarded to that storage node as a single operation call and the result is sent back to the client application as the response. Within the result object current state of the topology is also piggy backed to the driver and the state table (SST) is updated appropriately. If there is any failure in storage node, driver gets to know about it immediately and it stops forwarding the operation request to that node until it comes back again and catches up to the other nodes in the group.