There are a couple of ways to achieve a non-Java API for NoSQL Database. In order of least amount of work to most:
. JNI to the driver jar file. We have run prototype tests on this and the overhead is minimal (microseconds). However, since the client side driver manages some of its own threads, this may conflict with the applications threads (i.e. in a C environment). Also, users may object to having a JVM linked into their application environment.
. A cross-process call from a C API library to the Java driver jar. This is similar to the first option except that there would be another process on the client side which would run just the Java driver. It adds another hop, but presumably this would be fast since it would all be on the same machine. There are the usual connection management issues between the C process and the Java driver process.
. A native C implementation of the driver side. This is a larger and more complex project for a couple of reasons. First, there is the shear amount of logic in the client side of NoSQL Database. There is a fair amount of intelligence which understands the topology of the nodes and their status in the back end. There is connection management code which would need to be developed, and there is the basic RPC mechanism which would have to be developed too. Then, either the current protocol between the Java client (driver) and the backend would have to be ported to C or a new protocol would have to be developed.
Clearly, the last option of these three is the most ideal solution.
We would be interested in hearing your thoughts on these three options either on this forum or via email (charles.lamb at o.com).
Regrettably, I can not make any statements about when/if any of these options will be available.