Over a million developers have joined DZone.

From MySQL to Cassandra: How to Deal with Application-Level Failure Scenarios

DZone's Guide to

From MySQL to Cassandra: How to Deal with Application-Level Failure Scenarios

· Java Zone ·
Free Resource

Java-based (JDBC) data connectivity to SaaS, NoSQL, and Big Data. Download Now.

Moving from MySQL to Cassandra can be beneficial for a number of reasons, particularly when it comes to spreading out failure scenarios. Or, if you want to be less diplomatic about it, Rackspace's Dave King sums up his feelings in a Tweet:

However, there are still challenges to be faced. According to King's recent blog post on transitioning from MySQL to Cassandra, the Rackspace team encountered a number of hiccups in the process. According to King:

During our database migration, we ran into a number of application-level failure scenarios -- some of these we induced ourselves through our test scenarios, while others happened to us in our lower environments (staging, preprod, test) during the slow march to production. Each of these failures was not due to a failure of the database, but the failure of components that we added on top of it.

King goes on to describe each of the application-level failure scenarios, including the steps they took to resolve them. The scenarios faced included things like:

  • Cassandra's handling of a failed rpc_address
  • Unintended denial-of-service opportunities
  • Bigger consequences for partial failures

Among other things. Overall, it's a fair and helpful guide to a major technological transition, and it acknowledges the fact that everything, even when great, inevitably has some kinks to work out. Check out King's full article to get a sense of how the Rackspace team handled these issues, as well as King's general takeaways from the transition to Cassandra.

Connect any Java based application to your SaaS data.  Over 100+ Java-based data source connectors.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}