Over the years, I learned the hard way that, with the exception of a few niche use cases, NoSQL databases such as AWS DynamoDB or Apache Cassandra are not always a good idea.
Avoiding managed services, using Docker and running eight Mongo and twelve Kafka nodes does not make an application cloud neutral — it makes it costly to develop, Kafkaesque to architect, and impossible to maintain in production. You end up losing your weekends and quality time with family to DR exercises and production support.
NoSQL databases scale by adding more commodity servers. With more commodity servers come increased costs and complexities. Some NoSQL systems are better at this than others and need less.
1. Do you know what your queries will look like ? In traditional SQL you design your data model to represent your business objects. Your queries can then evolve over time and can be ad-hoc. You can even create views, materialized or otherwise, to facilitate even more complex analytical queries. Cassandra does not offer … Continue reading Ten Questions to Consider Before Choosing Cassandra
I've written before that Cassandra's achilles' heel is devops: Storage, redundancy and performance are expanded by adding more nodes. This can happen during normal business hours as long as consistency parameters are met. Same applies to node replacements. As the number of servers grows be prepared to hire a devops army or look for a … Continue reading Ordered Sets and Logs in Cassandra vs SQL
After using Cassandra for 3 years since version 0.8.5, I thought I'd put together a blurb on lessons learned. Here it goes! Use Cases What works Anything that involves high speed collection of data for analysis in the background or via batch. For example: Logging and data collection Web servers Mobile devices Internet of things … Continue reading Cassandra: Lessons Learned
At first I wanted to name this article “My personal list of grievances against Apache Cassandra”, but I decided to take a more positive approach. Only Java developers need apply Surely you can use Cassandra with non-Java clients but the reality is that administering and maintaining Cassandra itself requires very significant knowledge of Java and … Continue reading Things I wish Apache Cassandra was better at