
Facebook’s Cassandra paper, annotated and compared to Apache Cassandra 2.0 - nickmbailey
http://www.datastax.com/documentation/articles/cassandra/cassandrathenandnow.html
======
nlavezzo
"Open source has had the reputation of producing good imitations, but not
innovation. Perhaps Cassandra’s origins as a hybrid of Dynamo and Bigtable did
not disprove this, but Apache Cassandra’s development of lightweight
transactions and CQL are true industry firsts."

Cassandra's misleadingly named "lightweight transactions" are, at best, a
novel implementation of a feature that has been around for a long time -
Compare and Set.

We wrote a blog post about this called "Those Are Not Transactions".
[http://blog.foundationdb.com/post/60455516312/those-are-
not-...](http://blog.foundationdb.com/post/60455516312/those-are-not-
transactions-cassandra-2-0)

~~~
jbellis
As I made clear [1], the novelty is in allowing opt-in to linearizability in a
Dynamo-based system. To the best of my knowledge, Cassandra is indeed the
first to offer this.

The "lightweight" qualifier was carefully chosen to suggest both that it is
based on optimistic concurrency (no deadlocks) as well as less general than
traditional "heavyweight" transactions.

Thanks for reading!

[1] [http://www.datastax.com/dev/blog/lightweight-transactions-
in...](http://www.datastax.com/dev/blog/lightweight-transactions-in-
cassandra-2-0)

~~~
voidmain
(Jonathan, please read this comment in a completely respectful tone of voice,
because I'm not, and I'm sure Nick was not, trying to start a FoundationDB vs
Datastax pissing contest!)

I can easily believe that adding CAS in combination with Cassandra's other
features and design choices was harder than providing it in other contents,
and that it required novel ideas! As an architect of a distributed,
transactional, ordered, fault tolerant k/v store I know quite well that
providing multiple properties in combination is usually superlinearly
difficult :-) It's also clearly not true that open source projects only copy,
unless you are inclined to believe that there is nothing new under the sun at
all.

But in your view, do (for example) MongoDB, Zookeeper, HBase, Couchbase, and
etcd also provide "lightweight transactions"?

If not, why not? If so, why is a new name for this feature necessary?

~~~
jbellis
"We can easily see how to get linearizable consistency if we route all
requests [for a partition or region] through a single master [like all the
systems you listed]. In a fully distributed system, it is less obvious."

Again, the innovation here is not the functionality per se, which is surely
not novel to any INGRES user from the 70s. The innovation is in implementing
and integrating it for an eventually-consistent, Dynamo style system.

As for the name, well, there are two hard problems in computer science. Early
talks about "putting CAS in Cassandra" got me a lot of blank looks;
lightweight transactions seems to work quite well to get the audience/reader
in the right conceptual neighborhood.

