3 ms·
The choice of technology by developers and their managers is guided in large part by trends rather than by wholly rational decision process. The type of databa
by lmilcin 5y ago
The choice of technology by developers and their managers is guided in large part by trends rather than by wholly rational decision process.
The type of database should be dictated by the application requirements.
Relational databases provide some exceptional guarantees while also being able to run quite large systems.
This means, when you have:
1. Relational data,
2. Queries that are not known beforehand,
3. Data that can fit one server or can be sharded to fit,
that RDBMS is probably the best choice for you.
You may not like SQL as a language but at least there is large body of knowledge on how to use SQL effectively for your problem, how different choices affect performance, etc. And a lot of very good tools to help you with that.
I have seen time and time again small teams to "revolt" against SQL databases choosing something like Cassandra or MongoDB. The effect that the team spends now years learning the new database, complicates their application to provide same functionality they got from SQL for free, contorts the data to the new paradigm.
My team chose, years ago, before I came, to use MongoDB for what is very relational problem. This resulted in huge duplication, performance issues and complexity on the application side.
No, the team does no longer have SQL problems. Instead we have other problems that consume large part of our focus, rather than use it to make the product better.
- MikeDelta 5y agoTrue, I've also seen enterprises where central architects decide for what framework/solution the whole company should go. The answer to questions like 'what is the best DB' is online always 'depends on your use case', but in enterprises is usually 'what upstairs decided'.
- lmilcin 5y agoAnd the reason for this is there is usually "a guy" that mistakes his current love for X with X being better than every other competing product. Sometimes what happens is that somebody buys X, X is expensive, and so now everybody must use X for everything (even if it is not strictly needed). Usually because it looks silly when X is being paid for on an ongoing basis but not being used for anything important.
- chousuke 5y agoI default to choosing either SQLite or PostgreSQL until there's sufficient reason to think about using something else. I think it's pretty rare to build an application where you know you will have scalability issues with a relational model, but I can tell you with confidence that if you ever do need to make changes to how your data is stored, you will be happy if the source is a datastore that has enforced integrity guarantees. It's much easier to migrate data from one system to another when you don't first have to check that it's all valid in the first place.