MongoDB has the notion of drivers. Drivers for most mainstream libraries are available for interfacing and interacting with MongoDB. CouchDB uses web-standard ways of interaction and so you can connect to it using any programming language that supports the web idiom of communication. Wrappers for some languages make communication to CouchDB work like drivers for MongoDB, though CouchDB always has the RESTful HTTP interface available.

Redis, Membase, Riak, HBase, Hypertable, Cassandra, and Voldemort have support for language bindings to connect from most mainstream languages. Many of these wrappers use languageindependent services layers like Thrift or serialization mechanisms like Avro under the hood. So it becomes important to understand the performance characteristics of the various serialization formats.

One good benchmark that provides insight into the performance characteristics of serialization formats on the JVM is the jvm-serializers project at https://github.com/eishay/jvmserializers/wiki/. The performance measures via the efforts of this project relate to a number of data formats. The formats covered are as follows:

protobuf 2.3.0 — Google data interchange format. http://code.google.com/p/protobuf/

thrift 0.4.0 — Open sourced by Facebook. Commonly used by a few NoSQL products, especially HBase, Hypertable, and Cassandra. http://incubator.apache.org/thrift/

avro 1.3.2 — An Apache project. Replacing Thrift in some NoSQL products. http://avro.apache.org/

kryo 1.03 — Object graph serialization framework for Java. http://code.google.com/p/kryo/

hessian 4.0.3 — Binary web services protocol. http://hessian.caucho.com/

sbinary 0.3.1-SNAPSHOT — Describing binary format for scala types. https://github.com/harrah/sbinary

google-gson 1.6 — Library to convert Java objects to JSON. http://code.google.com/p/google-gson/

jackson 1.7.1 — Java JSON-processor. http://jackson.codehaus.org/

javolution 5.5.1 — Java for real-time and embedded systems. http://javolution.org/

protostuff 1.0.0.M7 — Serialization that leverages protobuf. http://code.google.com/p/protostuff/

woodstox 4.0.7 — High-performance XML processor. http://woodstox.codehaus.org/

aalto 0.9.5 — Aalto XML processor. www.cowtowncoder.com/hatchery/aalto/index.html

fast-infoset 1.2.6 — Open-source implementation of Fast infoset for binary XML. http://fi.java.net/

xstream 1.3.1 — Library to serialize XML and back. http://xstream.codehaus.org/

The performance runs are on a JVM but the results may be as relevant to other platforms as well. The results show that protobuf, protostuff, kryo, and the manual process are among the most efficient for serialization and de-serialization. Kyro and Avro are among the formats that are most efficient in terms of serialized size and compressed size.

Having gained a view into the performance of formats, the next section segues into benchmarks of NoSQL products themselves.

Source of Information : NoSQL

0 comments


Subscribe to Developer Techno ?
Enter your email address:

Delivered by FeedBurner