cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vivek Mishra <vivek.mis...@impetus.co.in>
Subject RE: Cassandra Clients for Java
Date Tue, 21 Jun 2011 12:33:02 GMT
Hi Daniel,
Just saw your email regarding kundera download.

Kundera snapshot jar is available at:

http://kundera.googlecode.com/svn/maven2/maven-missing-resources/com/impetus/kundera/1.1.1-SNAPSHOT/

In addition,
If you want to download source code then it is at:

https://github.com/impetus-opensource/Kundera

You could also refer to Kundera-examples for reference at:

https://github.com/impetus-opensource/Kundera-Examples

I hope it helps.


From: Daniel Colchete [mailto:dani@cloud3.tc]
Sent: Monday, June 20, 2011 8:23 PM
To: user@cassandra.apache.org
Subject: Re: Cassandra Clients for Java

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.

Best,
Dani

On Sat, Jun 18, 2011 at 4:04 PM, Rajesh Koilpillai <rajesh.koilpillai@gmail.com<mailto:rajesh.koilpillai@gmail.com>>
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 <swillcox@rallydev.com<mailto:swillcox@rallydev.com>>
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 <dani@cloud3.tc<mailto:dani@cloud3.tc>>
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 - http://cloud3.tc/
Twitter: @DaniCloud3 @Cloud3Tech



--
Thanks,
- Rajesh Koilpillai



--
Dani
Cloud3 Tech - http://cloud3.tc/
Twitter: @DaniCloud3 @Cloud3Tech


________________________________

Register for Impetus Webinar on 'Leveraging the Cloud for your Product Testing Needs' on June
22 (10:00am PT). Meet Impetus as a sponsor for Hadoop Summit 2011 in Santa Clara, CA on June
29.

Click http://www.impetus.com to know more. Follow us on www.twitter.com/impetuscalling


NOTE: This message may contain information that is confidential, proprietary, privileged or
otherwise protected by law. The message is intended solely for the named addressee. If received
in error, please destroy and notify the sender. Any use of this email is prohibited when received
in error. Impetus does not represent, warrant and/or guarantee, that the integrity of this
communication has been maintained nor that the communication is free of errors, virus, interception
or interference.

Mime
View raw message