The SQL backlash

I remember sitting in my databases class years ago and thinking, “This can’t possibly be the right way to store data.” It was a strange class, because it mixed theory and practice in a way that was anathema to the way I think. The theory part bored me to tears, and seemed ludicrously useless (first normal form? third normal form? who cares!). The practice part seemed ridiculously complicated and pointless. Why go to all that effort to write something down? Why not just write it? Yes, yes, I know, ACID and all that. I grudgingly learned it all, and I passed the class. But it never felt right to me. It felt like the students were putting on a performance to satisfy the teacher. It didn’t feel like Theory of Computing (i.e. Turing machines, regular expressions, the halting problem, etc), which just Felt Right.

So, you can imagine that it warms my heart immensely to read about NoSQL, a growing backlash against SQL/ACID data management.

What’s especially heart-warming about the backlash is that it’s coming from honest to god working computer scientists, not the academics, and not some bussinessmen who are trying to move SQL aside for their own profit. This is simply the next evolution of how to think about storing data: there are ways to process data where ACID is not a useful feature, and you need to have tools in your toolbox that respect that reality.

PS: A particularly philisophical reader might notice that I’m commenting here on the fundamental difference between the mathematics of computers and software engineering. Where the mathematicians lead us, the path (though steep and rocky) is usually an interesting trip. Where the software engineers lead us sometimes takes us into the malarial swamps of SQL. And the artisans of software, those who rightly reject the clunky boots and balky toolbelts that the software engineers wear? They put the sweet-smelling flowers into the meadows that the mathematical path takes us meandering by….


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *