Cassandra APIs: The Laundry List
- Hector (Production-Ready)
- The most stable of the Java APIs, ready for prime-time.
- Astyanax (The Up and Comer)
- A clean Java API from Netflix. It isn't as widely used as Hector, but it is solid. In some of our uses, we've swapped out Hector for Astyanax.
- Kundera (The NoSQL ORM)
- JPA compliant, this is handy when you want to interact with Cassandra via objects. This constrains you somewhat in that you won't be able to have dynamic number of columns/names, etc. But it does allow you to port over ORMs, or centralize storage onto Cassandra for more traditional uses.
- I've only used Pelops briefly. It was a straight forward API, but didn't seem to have the momentum behind it.
- PlayORM (ORM without the constraints?)
- I just heard about this one (Thanks for the pointer Dean). It looks like it is trying to solve the impedance mismatch between traditional JPA-based ORMs and NoSQL by introducing JQL. It looks promising.
- Spring Data Cassandra (Entirely Proof of Concept!)
- We're big Spring-heads. We use Spring Data elsewhere in our system. There was a MongoDB implementation, but alas no Cassandra implementation. To get consistency across our DAO layer, we decided to start work on the Spring Data Cassandra implementation. Still a work in progress.
- Thrift (Avoid Me!)
- This is the "low-level" API. I almost consider it the internal API/protocol for Cassandra. Avoid using thrift directly unless you have cause to do so.
- Virgil (Our Baby)
- Built on Dropwizard, we use Virgil for loosely coupled integrations between systems. It is also a simple way to get newbies up and running (firing curl's at the DB). We also use it for Ruby/Cucumber integration.
- Not sure if this one is still maintained, but I wanted to include it for completeness. (and as not to appear biased)
- Pycassa (The only game in town?)
- As far as I know, this is *the* python API for Cassandra. Please let me know if there are others worth considering.
- Ruby Gem
- I use this to create small little scripts for ETL, etc. I had some trouble when I tried to use it for substantial jobs, which is why we fell back and decided to use the REST API instead.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)