Relational databases have existed for more than 40 years now. They’ve changed little over that period and while they work well, they couldn’t answer the scalability demands of cloud native apps that we find all around us. That’s where NoSQL stepped in to fill the scalability void. It’s gotten to a point where many perceive the advent of NoSQL databases have sounded the death knell for relational ones.
Matt Yokovit, the Chief Experience Officer at Percona, that has both types of databases in its portfolio, isn’t about to write off relational databases just yet. In a discussion at the European edition of their annual Percona Live Conference in Amsterdam, Matt builds his case by saying that every database that he’s seen is good at something and bad at others: “When you have a database, that’s good for a very specific use case, it can be lightning fast, until you want to do something that isn’t that use case.”
He explains this by using the example of column store databases, and how they were supposed to revolutionise everything, several years ago, when they burst into the database scene. While they are great at analytics, people soon realised that they weren’t really good at transaction processing or even at managing regular workloads.
It’s the same thing with NoSQL and relational databases:
“What we’re seeing a lot more purpose built databases nowadays. And that’s great. But it makes it more confusing for people, because now you’ve got more choices and you’ve got more technology and it’s more difficult to wrangle all of them and start to manage all of them as a cohesive unit. So, I think that no, we’re not seeing like the death of relational. It’s just relational has its use case.”
Ease of use
Matt believes the primary reason for the popularity of NoSQL databases is ease of use and familiarity. Using MongoDB as an example he says developers love it because it’s designed for developers:
“Developers hate SQL, let’s just be honest, developers hate SQL, they do. It’s SQL, it’s old and when you go to a MongoDB your interface that you get your data is natural to the application, right? Data is exchanged in a very JSON like format. So, you already know that because you’re coding it. And now, you know, the database side.”
But there’s a flip side to this. Matt argues that developers tend to prefer NoSQL databases for cloud native apps because they are easy to scale, something that’s popularly known as “scale by credit card.” He believes NoSQL provides a lower barrier of entry, which is something that the developers have always been looking for: “But this new generation who’s coming out from the development space, they haven’t had to think database, they just click a button, it spins up, and whichever button is easier, that’s what they go with. And that’s a great thing. It’s just that as applications grow and expand, the database becomes a bottleneck and then you add more and more database resources until you can’t add any more.”
That’s when the ease of using NoSQL comes to bite. Matt, who has been around databases all throughout his career, thinks that the skill set and the technical knowledge of developers around database is decreasing because they’ve become easier to use: “So you don’t understand the underlying technologies, and that’s caused issues like misconfigured applications and data breaches.”
One of the reasons for the popularity of NoSQL databases is that they scale much better than relational databases. Matt is of the opinion that every NoSQL or non-relational database scales a little differently. Talking about scaling on relational databases he says that you can scale either by pooling in more resources to build a bigger instance or employ a clustering technology like MySQL’s InnoDB cluster, their own Percona ExtraDB cluster or MariaDB’s Galera cluster.
While NoSQL databases are usually more efficiently at scaling out, Matt says that lots of different approaches are starting to emerge that build on top of relational databases to make them scale more efficiently: “You’re seeing a lot of technology that you can sit on top to help with these issues. And you can get the SQL technologies and the NoSQL technologies to have equivalent levels of scale. It’s just sometimes you require additional components.”
Again using MongoDB to illustrate his point, Matt says that a lot of the scaling functionality is built in by default and is therefore easier to use: “Whereas in MySQL, you might have to deploy something like Vitess, or something like ProxySQL or something on top to get you to that same level. But again, it’s the level of ease to get it to scale as opposed to can it scale or can it not.”
More cloud native
Gazing into his crystal ball, Matt reckons that they’re going to see relational databases become more cloud native in the near future: “Right now every application is being developed cloud native. Everybody wants to build their applications in a cloud native fashion, which means adding and removing nodes and servers quickly and being able to spin up and spin down.”
“I think you’re going to see more evolution in that kind of clustering space. You’re going to see more user friendly design and more technology that is designed for scale, and for performance, and definitely security.”