11 May 2016 - by 'Maurits van der Schee'
A developer with genuine interest in NoSQL asked reddit about the need for NoSQL in scalable systems:
So I'm really confused about noSQL. I constantly hear the argument that if people knew how to write SQL they wouldn't need noSQL, but yet every book I read about noSQL claims that if you need to scale you pretty much have to use noSQL because of clustering and SQL clustering is much more complicated and you lose relations.. Can you give me an overview / glimpse of why SQL is just as scalable?
A user with the handle "G_Morgan" wrote this fabulous (highly opinionated) answer:
The claim is true in the broad sense that NoSQL will handle loads that SQL servers struggle to do so. The problem is that nearly none of these applications have loads that push that boundary.
There are three subsets of web applications out there:
- Those that genuinely need NoSQL. Google might have one of these.
- Those that could be handled with SQL provided you used additional features to temporarily side step safety (which you don't get with NoSQL anyway).
- Those that could be handled in straight forward text book SQL provided your schema wasn't insane.
A lot of people talk about case 2 and how you can get performance in most SQL systems using various tools they have. In truth most of these applications fall into case 3. People use NoSQL as an optimisation around bad design choices in data structures effectively.
I feel this discussion is an excellent complement to my last post on trading durability for performance in which I explain how to side step safety as described in case 2.