Live data from Hacker News

Cassandra Performance

datastax.com

11–20 of 76 posts

Re: Cassandra Performance

#11
While Cassandra has some nice characteristics, there are a few things I've run into along the way.

Don't expect to run a 3-node Cassandra cluster and get much out of it in terms of availability, in the way you might run a master/slave failover setup. It's somewhat obvious, but your Cassandra deployment can't just start with a couple of nodes and scale up as you run into bottlenecks. The number of nodes needed starts to add up quickly with a replication factor of > 1 and quorum reads. And while you might say "I'm ok with eventual consistency, let's just read from a single node," if you're not reading from multiple nodes, the data may never become consistent, from what I can tell.

And counters should be marked with a big warning "not for production use". Their performance isn't great, and it nosedives as the dataset grows. (each counter update involves a read + a write) Having a node reboot can sometimes cause counters to double. They seem like basically an afterthought.

Re: Cassandra Performance

#12
post #3

Where's the MongoDB comparison? They mention it but don't see it in their graph

Aside from MongoDB not being a part of the subject study, it's also worth mentioning that they cherry picked the example that made Cassandra look particularly good. MySQL actually did extremely well on the non-scan tests, while offering consistency. It depends upon your usage.

Re: Cassandra Performance

#13
post #11

While Cassandra has some nice characteristics, there are a few things I've run into along the way. Don't expect to run a 3-node Cassandra cluster and get much out of it in terms of availability, in the way you might run a master/slave failover setup. It's somewhat obvious, but your Cassandra deployment can't just start with a couple of nodes and scale up as you run into bottlenecks. The number of nodes needed starts…

Post author here.

Your first paragraph is, bluntly, incorrect. Cassandra guarantees that data will always become consistent. This is automatic [1] for normal operation, including in the face of temporary failures. Permanent failures require running a "repair" process to rebuild the failed machine from other replicas [2].

I think you've also misunderstood how quorum works; it is a quorum of the replica count, which tends to stay constant over cluster lifetime, not machine count.

You are right that the current counters are an afterthought. I linked in my concluding paragraph, where I talk about improvements for Cassandra, "A new design for distributed counters." [3]

[1] http://www.datastax.com/dev/blog/modern-hinted-handoff [2] http://www.datastax.com/docs/1.2/operations/node_repair [3] https://issues.apache.org/jira/browse/CASSANDRA-4775

Re: Cassandra Performance

#14
post #9

Cassandra is ugly, hardcore and performant as hell. It's not meant for the casual user, it's really meant to be there for you at scales where MongoDB craps its pants. If you wrap your head around ColumnFamilies, tunable consistency and NetworkTopologySnitch strategies, you get rewarded by a database that can scale on a global level to millions of I/O operations per second. We at Trademob have chosen Cassy as the back…

Sorry but this is just nonsense.

Cassandra with PlayORM/Astyanax has been the easiest database for me to install, use and manage out of the 10+ I've tried. Far simpler to install/manage than MySQL Cluster or Riak, far easier to use than PostgreSQL and infinitely better to scale than MongoDB.

You don't have to understand ColumnFamilies, consistency or the different topology strategies. The defaults are fine and if you are a Java developer life couldn't possibly be simpler.

Re: Cassandra Performance

#15
post #11

While Cassandra has some nice characteristics, there are a few things I've run into along the way. Don't expect to run a 3-node Cassandra cluster and get much out of it in terms of availability, in the way you might run a master/slave failover setup. It's somewhat obvious, but your Cassandra deployment can't just start with a couple of nodes and scale up as you run into bottlenecks. The number of nodes needed starts…

What do you mean by "from what I can tell" ?

Have you actually experienced this issue or just making it up ?

Re: Cassandra Performance

#17
What is memory overhead? How much memory Java processes consume comparing to the amount of data a node could handle, assuming there must be no swap (otherwise we all know what happens to any Java process).

Re: Cassandra Performance

#18
post #11

While Cassandra has some nice characteristics, there are a few things I've run into along the way. Don't expect to run a 3-node Cassandra cluster and get much out of it in terms of availability, in the way you might run a master/slave failover setup. It's somewhat obvious, but your Cassandra deployment can't just start with a couple of nodes and scale up as you run into bottlenecks. The number of nodes needed starts…

What do you mean by "from what I can tell" ? Have you actually experienced this issue or just making it up ?

It is what I have experienced. "from what I can tell" is allowing that perhaps I have missed something in the configuration that solves this.

Re: Cassandra Performance

#19
post #5

I'm not sure what's the point comparing benchmarks this way. Choosing a database is not only about performance, it's about the type of application you are building, the stage it's in (prototype product doesn't have the same need as a product that has grown over 5 years). It's also about the people that works on the project. Some projects are better handled in a specific language (ruby/java/php,asp.net, etc.) For exam…

This is terrible advice on how to build an application.

As everyone who has worked on a large enterprise type project before knows, the decisions you make at the start live on. It is very rare to completely switch major parts of your architecture especially today where the database you choose will affect your entire architecture.

Cassandra like Riak is multi master which means your deployment strategy would be very different to MongoDB which is still effectively master/slave.

Re: Cassandra Performance

#20
post #5

I'm not sure what's the point comparing benchmarks this way. Choosing a database is not only about performance, it's about the type of application you are building, the stage it's in (prototype product doesn't have the same need as a product that has grown over 5 years). It's also about the people that works on the project. Some projects are better handled in a specific language (ruby/java/php,asp.net, etc.) For exam…

I'm not sure switching to a document model with multiple indexes (MongoDB) to a key/value store (Redis) is something that can be done easily "later on".

Redis is far more than a simple KV store.
Post reply on HN