DataStax Developer Blog

DataStax Java Driver: A new face for Cassandra

By Michael Figuiere -  May 9, 2013 | 3 Comments

Cassandra has always benefited from a great architecture, thought from the very beginning for scalability, performance and availability. This is surely what has driven its tremendous success so far. Unfortunately, early versions of Cassandra also came with a rather complex interface and data model that were negatively impacting the learning curve for developers. To solve this issue the Apache Cassandra team came up with a great new language and abstraction: CQL3. This clearly renewed the face of Cassandra, bringing a consistent interface across all languages and tools.

Thrift, the transport layer that Cassandra traditionally used for client-server communication, has been a great opportunity for the database in its early days since Thrift clients were readily available for most programming languages. This allowed the Apache Cassandra project to focus on the server side without spreading their resources on the client side. Nevertheless, as Cassandra became mature, Thrift turned out to be a limitation: communication limited to the request-response paradigm, no notifications, no streaming, client side interface made of generated code, etc. In Cassandra 1.2, a solution to this second problem was introduced with the CQL Native Protocol, a protocol designed exclusively for CQL3 and with enough flexibility to enable new features in Cassandra for the years to come.

With these two majors changes, an update was obviously necessary on the client side. The fact that we had a renewed interface and transport layer, together with the need for an environment free of any Thrift concepts, strongly advocated for a brand new line of drivers, which was aligned with the long-term strategy of CQL.

Today, DataStax announces version 1.0.0 of a new Java Driver, designed for CQL and based on years of experience within the Cassandra community. This Java driver is a first step; an object mapping and a JDBC extension will be available soon, drivers for C# and other major languages are on their way. Besides this new interface and API, this new driver comes with:

  • Node discovery, load balancing, and fail-over are implemented in a standardized way across all languages
  • Asynchronous API, making it simple to send multiple requests in parallel
  • Query builder, which makes it possible to create queries programmatically
  • Tracing, a new feature in Cassandra 1.2, that will quickly become part of everyday tools for developers working with CQL

In the weeks to come, several articles on this blog will cover some particular features of this Java Driver. Meanwhile, its documentation is readily available and you can start to use it right away using the following Maven dependency:

<dependency>
   <groupId>com.datastax.cassandra</groupId>
   <artifactId>cassandra-driver-core</artifactId>
   <version>1.0.0</version>
</dependency>


Comments

  1. Chethan says:

    I have checked out project from git hub and built it successfully with maven. Although there are still some jars that I need to add to my classpath (all the jars mentioned in http://www.datastax.com/doc-source/developer/java-driver/index.html#reference/settingUpJavaProgEnv_r.html)

    I don’t see any targets to actually build these jars in pom.xml and neither did I see these jar being a product of my successful build. Should I download them seperately online or am I missing something here?

    Thanks.

  2. Michael Figuiere says:

    Sorry for the late answer. If you want to use the driver in your application you don’t have to recompile it.

    You currently have to use Maven or any kind of Java build tool that is able to retrieve some Maven dependencies to work with this driver. Just add the driver to your project as a Maven dependency using the XML entry found at the end of the article, adapting it to the format used by your build tool if it’s not Maven and everything should work fine.

  3. Chris says:

    I am having problems with converting github to a Maven project in eclipse I get the error “null Warning
    Thu Jul 11 21:38:31 EDT 2013
    Failed to dispatch repository event to org.eclipse.m2e.core.internal.embedder.EclipseRepositoryListener: null”

    I am new to Cassandra and appreciate the assistance. Also not sure where to add the Maven dependency and link stuff into eclipse and Cassandra

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>