cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Colchete <>
Subject Re: Cassandra Clients for Java
Date Mon, 20 Jun 2011 14:53:18 GMT
Thank you all for your answers! It hard to tell the good projects from the
not so good projects and it seems that the choice is really between Hector
and Pelops. On average, most of the people are using Hector or Pelops and
most of the names starts with Da (sorry, couldn't help :)).

Dan Washusen asked to comment more regarding Hector's e Pelops' APIs. Lets
start with what cassandra gives us: get, insert, remove for simple
operations; get_slice to read an entire row (or something like that);
multiget_slice and batch_mutate for reading or writing multiple data with a
single call. So we could start from this and we would be speaking
Cassandra-nease. One CassandraClient class exporting all those methods, with
the necessary model classes on the package.

All of those methods have small details we don't want to have to work out
every time, like timestamp (now is a perfect default value), consistency
level (the client could have default values) and string encoding (UTF8 could
be a default, but the CassandraClient and the model classes should handle it
themselves). So, at this point we would have an API similar to Thrift's but
a little less boring to use.

With this API we could do failover, load balancing, auto node discovery, and
still be speaking Cassandra-nease.

But them writing methods to read from Cassandra to create models and to
persist models would be a pretty time wasting task. So them we would move to
an JPA implementation doing this automagically, like Hector did (thanks for
showing this up). The JPA implementation (I have no idea how to write
something like this, although I would like to learn), would use our
simplified thrift-like interface.

In the end: no third semantics, still have direct access to Cassandra to
deal with special cases and for most of the cases you have JPA, still have
failover and load balancing. How many dependencies do we need besides what
Cassandra already requires: zero. Simple, powerful. I agree that I'm not
showing a proof-of-concept or anything but it is a good starting vision for
a client. Of course there are corner cases and details to work out but, what
do you think?

With Hector, from their Getting Started page, first you initialize a
Cluster, them you create a Keyspace from that cluster, them, wait, you have
to create a template for your column family. With that template you can
create an updater to do an insert (in Cassandra-nease), or you can query
columns to do an get_slice (in Cassandra-nease), or delete column to do a
remove (in Cassandra-nease). You can clearly see a third semantics here.

With Pelops their documentation on their main website (at GitHub) seems very
lacking and I couldn't understand if you have to create a mutator to every
write or not and why they assigned strings and not objects to organize
connections. They have this pool thing related to the fact that they use
strings to organize connections.

In the end I think Hector should be a better choice because of their JPA
implementation and because Pelops doesn't seem to have documentation. Thanks
again for showing the JPA thing up, I really couldn't find anything linking
to it. Not even their User guide.

Thank you very much for all for the answers.


On Sat, Jun 18, 2011 at 4:04 PM, Rajesh Koilpillai <> wrote:

> +1 to Hector (especially with the changes made in the latest version of
> their API)
> On Sun, Jun 19, 2011 at 12:01 AM, Steve Willcox <>wrote:
>> I'm using Hector.
>> The main contributor Nate McCall is very active and responsive to any
>> issues. The Hector community is very active.
>>  I've been using Java for a long time and I disagree that the client is
>> more complex than the underlying Thrift client. The latest version of Hector
>> has made large gains in simplifying the API. It has connection caching, load
>> balancing and failover build into its client.
>> I found it easy to use and stable. My code has been in production since
>> April 2011 and we've not had one Hector issue yet.
>> Hope that helps
>> Steve W.
>> On Fri, Jun 17, 2011 at 4:02 PM, Daniel Colchete <> wrote:
>>> Good day everyone!
>>> I'm getting started with a new project and I'm thinking about using
>>> Cassandra because of its distributed quality and because of its performance.
>>> I'm using Java on the back-end. There are many many things being said
>>> about the Java high level clients for Cassandra on the web. To be frank, I
>>> see problems with all of the java clients. For example, Hector and
>>> Scale7-pelops have new semantics on them that are neither Java's or
>>> Cassandra's, and I don't see much gain from it apart from the fact that it
>>> is more complex. Also, I was hoping to go with something that was annotation
>>> based so that it wouldn't be necessary to write boilerplate code (again, no
>>> gain).
>>> Demoiselle Cassandra seems to be one option but I couldn't find a
>>> download for it. I'm new to Java in the back-end and I find that maven is
>>> too much to learn just because of a client library. Also it seems to be hard
>>> to integrate with the other things I use on my project (GWT, GWT-platform,
>>> Google Eclipse Plugin).
>>> Kundera looks great but besides not having a download link (Google site
>>> link to Github, that links to Google site, but no download) its information
>>> is partitioned on many blog posts, some of them saying things I couldn't
>>> find on its website. One says it uses Lucandra for indexes but that is the
>>> only place talking about it, no documentation about using it. It doesn't
>>> seem to support Cassandra 0.8 also. Does it?
>>> I would like to hear from the users here what worked for you guys. Some
>>> real world project in production that was good to write in Java, where the
>>> client was stable and is maintained. What are the success stories of using
>>> Cassandra with Java. What would you recommend?
>>> Thank you very much!
>>> Best,
>>> --
>>> Dani
>>> Cloud3 Tech -
>>> Twitter: @DaniCloud3 @Cloud3Tech
> --
> Thanks,
> - Rajesh Koilpillai

Cloud3 Tech -
Twitter: @DaniCloud3 @Cloud3Tech

View raw message