RDBMS are really the best solution for applications where the decision is to only use one data storage solution for the entire application.
There is no longer any excuse when building anything in the cloud for using RDBMS.
You have so many better options.
Note:
"RDBMS" - Relational Database Management System. Manages tables of data and the relationships between them, and uses SQL (or a variation) to store, retrieve and manage data.
"data store/data storage solution" - an element in the data layer of an application
The point of the above is to clarify that an RDBMS is a perfectly good data store but rarely brilliant.
With cloud, there are data stores - e.g. data services like DynamoDB or S3 - that have different characteristics for an application e.g. speed or storage.
We've been brought up in the tech industry with the idea that an application is basically front end, application, data layer or a variation.
The problem is that the data layer hasn't really evolved for most beyond RDBMS + some other things occasionally.
For me, having spent most of the last few years so far away from RDBMS, I have seen so little need to use RDBMS, that I don't understand when anyone suggests they should be used.
Which, I think, amazes people.
What is hilarious is that often, these people, think that I'm saying "get rid of SQL" and "no more relational data".
That's not it at all!
You can use SQL in solutions other than RDBMS.
Relational data can sit in solutions other than RDBMS.
You'd know if you looked.
So when I'm talking about RDBMS being a brilliant solution if you're only going to use one data storage solution for your application, I mean it. There aren't many better ways of doing it. It does most of the things pretty well.
But if you are building applications, in the cloud, and you aren't taking advantage of the data services that exist, the S3, DynamoDB, Athena, etc type services (I know these are AWS specific) then you're missing out.
You get so much efficiency and value using these services.
I do know there is a learning curve with getting to grips with new data layers.
And I know that developers find "new" hard too.
But the thing is, that the success I've had, and seen, is so much greater than that pain.
If you don't want to, then don't.
But if you've never done it, or if you're just going to come at me and tell me I don't know what I'm talking about, then please go away.
RDBMS aren't going anywhere. Developers will be using them for decades. I know that.
I'm just trying to get a few people to look harder.
Stop telling me that <database X>
is brilliant at <what cloud service Y>
does.
Firstly, it might do something similar (which is great) but...
Secondly, you're proving my point!
If an RDBMS includes an extra data service, it means the tables part of the tech isn't optimal.
Add to that that you're almost certainly adding costs to your solution by having to learn something more proprietary (RDBMS service as opposed to cloud service) and I'm not sure that that's the best idea.
The cloud is not "someone else's server" any more.
It stopped being that a long time ago.
It's now "managed services that your team can't compete with".
That's the issue here.
Data storage has already moved to the cloud. Now it's getting optimised.
And all the "but what about privacy/security/data sovereignty/portability/lock in?" arguments?
This all got solved a long time ago. You've just decided there's something wrong, and you don't want to do it.
Apart from privacy and security, those conversations are yawn.
In a lot of ways, the privacy and security using cloud services are significantly better than using an RDBMS, which, believe it or not, have flaws and they are much more widely known.
So... I genuinely don't get why the hate.
Also, why do people come after me and say I'm wrong about all this?
It just feels strange.
It's an opinion, and a considered, and detailed one.
Long held too.
If you're sitting in an enterprise being told you have to use an RDBMS, then fine.
That's not my problem.
That person telling you may have good reason.
And they may be right.
I DON'T KNOW YOUR APPLICATION.
Which is the whole point.
You have to use the right data store for the application and context.
Which is the whole point at the start of the thread.
See?
Got it?