-1

I am learning to design systems, specifically the database part in it and I know a lot of similar posts are available on SO but either they are a decade old (and a lot has changed since then) or they don't have helpful answers.

All the previous answers or blog posts compare relational and non-relational DBMS (or SQL and NoSQL) in some way. And I can't see a well defined line between the two. Because as soon as I read about a property of NoSQL DBMS, I find there's a latest version of a SQL DBMS that provides the same property and vice versa. For example, Document data-stores store data in JSON-like objects and you can even query into these objects but then I found that PostreSQL also provides this functionality.

Next common point of comparison is Scalability. Well, I can see a lot of giants like Amazon using SQL dbms and they don't seem to have any scalability issues.

Next point of comparison is that SQL dbms enforce schema. We can kind of do that with MongoDB schema validation.

And now newSQL databases claim to provide the scalability of NoSQL systems for online transaction processing (OLTP) workloads while maintaining the ACID guarantees of a traditional database system.

So it seems like Relational dbms and Non-relational dbms are moving towards each other.

Keeping all these things in mind, how to choose a dbms? I mean what points do you consider? What's the thought process?

Thank you!

aum
  • 11
  • 2

1 Answers1

0

Choosing as a platform for learning or choosing for a specific project? That really does have an impact. If it's for a specific project then the choice will depend on the needs of the project... where is the data coming from? What is the purpose of storing it? (Is it for record keeping, transactional, etc.) Who will access it and how? What needs to be accomplished?

There are a lot of options to consider, that's a fact, but it's helpful to consider the purpose of the project to realize which systems are a better fit.

Beyond that, another major factor in a decision is the skills of the people involved or what is already available in the company (if anything).

Do you have specific details at this point or is this more of learning exercise?

Steve Shay
  • 116
  • 4
  • No this is just for learning purposes. I thought there would at least be some basic Decision Tree kind of a structure which could help us narrow down the dbms that we must use. I understand that there could be all kinds of requirements which will be considered for decision making in the real world. But aren't there some basic filters like for ex: if I need strict ACID transactions, I won't use NoSQL? Something like that. – aum Feb 17 '21 at 20:08
  • There's no decision tree for this that I'm aware of, and honestly it's never been an issue. The choice has always been fairly straightforward. If a company has a database already then that's the likely choice if it can handle the kinds of data for the new project. Otherwise, it's really just a matter of what type of data you're storing, the security, reliability & availability of the options (which naturally leans towards the more popular options), and the skills & preferences of those involved. I've always favored maintainability over a set of "fancier" features. Someone has to maintain it. – Steve Shay Feb 17 '21 at 22:09