Hey, of course I know about
http://github.com/fauna/cassandra http://github.com/nzkoz/cassandra_object and they are awesome and without them I probably would have had a much harder time learning about Cassandra since its always good to have some way to actually throw some stuff in there. The cassandra gem chose to abstract the underlying data model by building ruby hashes on top of it, which for me was already one abstraction level too much to understand what exactly was going on below (and losing timestamps in the process). cassandra_object builds on top of that so that obviously is way too high. However the motivation for my stuff was more about learning about Cassandra than actually writing a new client to replace anything. I'd recommend the cassandra(_object) gems to anyone wanting to USE Cassandra NOW. I'm not entirely sure how everything works on the server-side so I wanted to investigate it as closely as possible. My goal is to develop some "best-practices" for using Cassandra since AFAICT nothing like that exists yet. SQL actually has changed very little over the years and at some point I learned what was "good" and what to avoid. I have no experience actually using Cassandra (or HBase, BigTable, etc) so I have no idea if what I come up with is any good or will eventually blow up just like SQL would. "Best-Practice"s obviously do not depend on a specific client since they would be the same for every language and the thrift API basically already does all you need. Building a client on top of it is a rather simple programming exercise to make it more "pretty" and in my case more "ruby-esque". For example when starting with the cassandra gem I eventually found myself using SuperColumns all over the place. I have no idea if that is actually a good or a bad thing BUT, from my understanding of what cassandra does with it, I'm pretty sure it wasnt optimal for what I was doing. Anyways, as mentioned I'm new to this stuff and have been learning alot these past few days. I'm sure I'll come up with some more specific questions soon, but right now I'm just browsing the java sources to find out what exactly happens when. Cheers, /thomas