Wednesday, Mar 24th, 2010 by
admin
Category:
Internet,
Programming
With Twitter, Facebook, Digg, and Reddit using the open-source Amazon Dynamo clone, Cassandra may be the winner of the NoSQL race.

But is it ready for a general purpose (excluding transactions and other obvious features) data store? There are a few kinks right now that may hamper your adoption of Cassandra.
You must restart Cassandra in order to add/delete/rename ColumnFamilies (tables)
This can be a problem if you want to run your website without interruption. A rolling restart is recommended, but that will also impact your uptime if you choose a consistency level of “ALL”. A patch to solve this problem is being worked on and is scheduled for version 0.7. The current version is 0.5
Issue 44
Getting a range of rows may return empty “tombstoned” rows
Due to the way that Cassandra is engineered, Cassandra must mark deleted rows as “tombstones” so other nodes will know that it has been deleted instead of the other node not having a copy propagated yet. Tombstones will only disappear after a costly “compact” command.
The problem is that if you want to return users 40-50, you may get 10 empty rows. To fix this you would then have to repeatedly query Cassandra until you get 10 non-empty rows. This back and forth may cause significant overhead on your network. Before it was done server-side, but apparently the early adopters preferred to return empty rows . This is a mistake in my opinion.
No distributed versioning (only last write wins)
Vector clocks support is scheduled to be added, but there is no ETA. This may be important for some applications. For example, if you have a shopping cart and you add Item A on Server 1 and Item B on Server 2 and the servers momentarily split, your shopping cart may end up with only Item B if you use “last write wins”. With vector clocks, you will get the chance to merge them.
Issue 580
No advanced queries through map/reduce (yet?)
Hadoop integration is planned, but to my knowledge, this isn’t ready yet. Your application may or may not need this feature.
Issue 342
No atomic increment/decrement
This feature is necessary for counting things like page-views accurately. There is a hack here using a 3rd party application called zookeeper.
Issue 721
Even with these current shortcomings, you may find Cassandra to be suitable for you right away. It is definitely one of the best NoSQL solutions available.