Differences between revisions 7 and 8
Revision 7 as of 2013-11-13 19:30:48
Size: 3561
Editor: 50
Comment: statcounter
Revision 8 as of 2014-05-01 22:59:39
Size: 0
Editor: TylerHobbs
Comment: Info is way out of date and only misleading at this point
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:

= High level clients =
These are often more convenient than raw Thrift, which has a certain lowest-common-denominator flavor to it, because that's what it does. But, it's good to understand the Thrift [[API]] to have an idea of what's going on under the hood. See the individual clients for their respective documentation. Note that by default the Thrift [[API]] is exposed on port 9160.

 * Ruby:
  * Cassandra: http://github.com/fauna/cassandra/tree/master
  * Cassandra_object: http://github.com/NZKoz/cassandra_object/tree/master (for Rails)
  * Small Record: http://github.com/astrails/smallrecord/tree/master (for ruby/ActiveModel, Rails)
 * Perl:
  * Net-Cassandra: http://search.cpan.org/dist/Net-Cassandra/lib/Net/Cassandra.pm
  * Net-Cassandra-Easy: http://search.cpan.org/dist/Net-Cassandra-Easy/ (A simpler, much less Thrift-oriented interface than Net::Cassandra; includes a CLI called cassidy.pl with tab-completion)
 * Python:
  * Telephus: http://github.com/driftx/Telephus/tree/master (Twisted)
  * Pycassa: http://github.com/vomjom/pycassa (version 0.3.0, tarball in the downloads section)
  * Tragedy: http://github.com/enki/tragedy/
  * Lazy Boy: http://github.com/digg/lazyboy/tree/master
 * Scala:
  * Scromium: http://github.com/cliffmoon/scromium
  * Cascal: http://github.com/shorrockin/cascal
  * Cassandra4o: http://code.google.com/p/cassandra4o/ (works with Java, includes hooks for Hibernate-like Object-mapping)
  * Akka: http://akkasource.org/ (Akka includes a Cassandra client but is more than that)
  * Cassie: http://github.com/codahale/cassie
 * Java :
  * Hector: http://github.com/rantav/hector
  * Pelops: http://code.google.com/p/pelops/
  * HelenaORM: http://github.com/marcust/HelenaORM (ORM layer built on Hector)
  * OCM: http://github.com/charliem/OCM (higher level client built on Hector)
  * Datanucleus-Cassandra plug-in: http://github.com/PedroGomes/datanucleus-cassandra (Persistence of objects through the JDO/JPA APIs under the Datanucleus platform).
  * Jassandra: http://code.google.com/p/jassandra/
  * Kundera: http://code.google.com/p/kundera/
 * PHP :
  * PHP Cassandra Client Library: http://github.com/kallaspriit/Cassandra-PHP-Client-Library
  * Pandra: http://github.com/mjpearson/Pandra/tree/master
  * PHP Cassa: http://github.com/hoan/phpcassa [port of pycassa to PHP]
 * Clojure :
  * CLJ-Cassandra: http://github.com/robertluo/clj-cassandra
 * Grails :
  * Grails-Cassandra: http://github.com/wolpert/grails-cassandra (Download 0.5.4 from the github site for 0.6 compatibility)
 * C++ :
  * LibCassandra: http://github.com/posulliv/libcassandra
 * C# / .NET
  * Aquiles: http://aquiles.codeplex.com/
  * Hector Sharp: http://www.hectorsharp.com
  * Fluent Cassandra: http://github.com/managedfusion/fluentcassandra

= Example Projects =

 * Erlang:
  * etiny: http://github.com/dgrijalva/etiny

= Thrift =
Thrift is the Cassandra driver-level interface that the clients above build on. You can use raw Thrift from just about any language, but it's not particularly idiomatic in any of them. Some examples are given in ThriftExamples.

= Internal API =
The StorageProxy API is available to JVM-based clients, but you should use Thrift unless you have a very good reason not to. (The most common reason is wanting to use the BinaryMemtable bulk-load interface.)

= Hadoop =
Running Hadoop map/reduce jobs in Cassandra is described in HadoopSupport.