Relational Databases Aren’t Dinosaurs, They’re Sharks
Worried you’ll miss us?

Subscribe to get our articles and updates in your inbox.

Oh relational databases, that tired old relic of another age. NAME_1 and friends were great in their time, but serious software engineers need to move on.

People building Web Scale™ software
You’ve probably heard a similar sentiment at some point. That relational databases were great, but they are dinosaurs that are slowly being replaced by non-relational databases because they just can’t keep up with the demands of modern companies.

I know this is a topic that has been discussed ad-nauseum over the years, but rarely a month goes by that I don’t come across some system that was built using a non-relational database for reasons that no one can easily elucidate. Often, that non-relational database is causing problems because the tradeoffs weren’t appropriately considered.

In other words, they don’t scale. They aren’t agile.

Some of these criticisms can be valid, but only in context.

We don’t ask ourselves how a technology that has arguably had more performance work done on it than almost any other class of software can be so easily surpassed by brand new entrants into the market.

As NAME_2 once said:

Programmers know the benefits of everything and the tradeoffs of nothing.

We see the amazing benchmarks that some NoSQL databases provide, and we say “wow, they are so much faster/better/scalable than relational databases.” But we don’t ask ourselves why.

Instead of asking “how are they so much better?” we should be asking “what are they giving up?”

You see, relational databases aren’t dinosaurs. They aren’t lumbering prehistoric relics doomed to extinction by a changing world. They are sharks. Apex predators honed by millions of years of evolution into a perfectly adapted creature that is just as effective today as it was eons ago. There is a reason they are still around, and their supremacy in their domain hasn’t been questioned.

What Relational Databases Give Us
As a primer, most relational databases come with four primary guarantees:

Atomicity – The guarantee that any series of operations within a transaction are treated as a single unit. The entire thing either succeeds or fails, and won’t leave you in an invalid state.

Consistency – The guarantee that any operation against the database will leave it in a valid state.

Isolation – The guarantee that any operations executed concurrently will leave the database in the same state as they would have if they were execute