With the RDBMS Ailing … What's Next?
Over the past couple of years we’ve come across application after application where the biggest block to being able to utilize a cloud (public or private) has been the relational database. This usually goes hand in hand with an inability to scale.
In a very (Monty) Python-esque manner RDBMS proponents proclaim “I’m not dead yet”, and the thing is that they’re absolutely right … but they are beginning to ail a bit.
There are many reasons for this, but mostly the cracks in the RDBMS monolith have a very simple explanation – the relational database is only one – albeit one powerful and long-lived – storage abstraction., and is not the best choice for many common, everyday problems.
We Can Do Better
In other words, there are many common, everyday problems in which the data can be effectively stored, managed, and retrieved in other abstractions …
… perhaps abstractions that fit the problems themselves much better, and may well be far more “cloud friendly”.
If you’ll grant me that for now (and we will get back to this question in future posts), then the next question is inevitable:
for those applications where the RDBMS is not the best choice, what else should I consider?
A Great Question
As life would have it, I think for anyone thinking about cloud-friendly storage abstractions this is the real question. Several friends (including @KentLangley and my colleague @msgroner) pointed out an excellent overview post by last.fm founder Richard Jones. From the intro:
Perhaps you’re considering using a dedicated key-value or document store instead of a traditional relational database. Reasons for this might include:
1. You’re suffering from Cloud-computing Mania.
2. You need an excuse to ‘get your Erlang on’
3. You heard CouchDB was cool.
4. You hate MySQL, and although PostgreSQL is much better, it still doesn’t have decent replication. There’s no chance you’re buying Oracle licenses.
5. Your data is stored and retrieved mainly by primary key, without complex joins.
6. You have a non-trivial amount of data, and the thought of managing lots of RDBMS shards and replication failure scenarios gives you the fear.
At any rate the post by Jones is a good place to get started on non-relational basic name-value stores.
This whole business of storing data in cloud-scale apps has become one of my favorite area for discussion – I can promise you more posts to come!