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

Reply via email to