

Project Cassandra: Facebook's Open Source Alternative to Google BigTable - Anon84
http://www.25hoursaday.com/weblog/2008/07/14/ProjectCassandraFacebooksOpenSourceAlternativeToGoogleBigTable.aspx

======
siculars
good stuff... the amazon dynamo paper should be required reading for people
contemplating implementing these "eventually consistent" data stores.

~~~
siculars
[http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-
dyn...](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-
sosp2007.pdf)

------
fauigerzigerk
The funny thing is we heard all of that in the 90s when object relational
databases became popular. More interesting would be to hear how Cassandra
scales across machines because that's what's so troublesome with databases,
not the datamodel.

And, by the way, it's ironic that users of MySQL complain about the join
performance of relational DBMS

------
jonny_noog
Looking for more information on this project, I come across this Wiki entry:

<http://en.wikipedia.org/wiki/Cassandra_Project>

I thought this was somewhat amusing considering some of the conspiracy
theories surrounding FaceBook.

------
cmars232
This is great news... At first glance, the Cassandra codebase looks smaller
and simpler than HBase. It will be interesting to see how it compares -- I've
had data integrity with HBase, but I'm also doing weird stuff to it (storing
tons of scientific floating-point data...)

------
henning
This is implemented in Java, a language I have been told by people who get
heavily voted up on this site is a ball and chain.

BigTable is implemented in C++ or Java. Cassandra appears to be most or all
Java. But Java and other compiled languages are death for startups and
corporations. Error! Error! Does not compute! Why aren't they using Ruby or
Lisp?

~~~
benreesman
Java is an excellent language for writing the kinds of programs that were
traditionally written in C but where the performance of Java is adequate (and
as the performance of well-written Java programs seems to be asymptotically
approaching the performance of well-written C programs this set is larger all
the time). In fact, treating Java as a garbage-collected C is often a very
reasonable thing to do.

People who bitch about how 'Java is dead' are referring (whether they know it
or not) to the practice of attempting to write change-prone business logic and
other glue in it. This practice was always a bad idea, something that even Sun
now seems willing to admit. If the Rails/Django discussion is at the center of
someone's programming universe then it is likely that to him or her that this
is the only kind of code in the world, and thus Java is of no consequence to
those sorts of people.

However, if your project is ambitious enough you'll find that you will need
both glue and infrastructure, in which case having a language like Java
underneath your dynamic language (people who use JRuby for example, or like
me, Rhino) will be a godsend when you need performance or the occasional
static-typing guarantee.

If you'll allow me to make the obligatory pg/Viaweb reference then I'll point
out that Viaweb contained non-trivial amounts of both C and Perl, in spite of
the obvious advantages of using Common Lisp for the store editor proper.

~~~
henning
I find it disappointing that you feel dynamic typing is incompatible with
performance.

Now's the time to rediscover optional static type annotations used for
optimizing compilation. Radically innovative!

~~~
benreesman
Addressing someone like a tardy child (I'm not mad, just disappointed) is a
reliable way to inflame the discussion. I don't think I will respond if you
phrase any further replies like that.

The claim that "dynamic typing is incompatible with performance" is
considerably stronger than what I said (and I would contend belies an
imprecise if not misguided notion of "dynamic typing"). That being said, for
people interested in using a mainstream platform to develop their
applications, the JVM offers a number of extremely productive "dynamic"
languages none of which perform as well as Java across a broad spectrum of
activities. I think you will find it telling that the engineers at Facebook
(who are world-class) chose to implement this system in Java.

Optional type annotations are a wonderful idea and I am optimistic that
someday the tradeoffs we mark around performance and convenience can be
granular and addressable at a lexical level in a single file. Until then, the
mix of a JVM scripting language and code written in native Java calling each
other trivially is pretty damn close.

Now I invite you to write a similar system using SBCL, if you enjoy debugging
inexplicable concurrency failures. Or maybe you'll use Actionscript 3? I hear
it has optional type annotations. Now if you'll excuse me, I need to go work
for the Man on dreary accounting software.

Fail.

------
coglethorpe
I can't hear the name Cassandra without thinking of Woody Allen's "Mighty
Aphrodite."

~~~
st3fan
In France, she'd be called la renard. Hunted, with only her cunning to protect
her.

------
mleonhard
I hope I'll need to deploy this in a couple of years. :)

