Reputation: 3521
Apart from certain cases, most modern applications need:
One could also argue about development agility, but I'll say that's under 2. in relation to a database.
Given the aforementioned points, according to what I've read about NoSQL databases, they are better suited to those problems than relational ones.
When should you consider a relational database when starting a new system from scratch? (Excluding the case where the system is very query heavy - where I think that RDBs have the advantage)
(PS: I've just started learning about NoSQL DBs, and given that I've only came in contact with relational ones at the university, I'm trying to understand when to choose each one, and if I should focus on NoSQl)
edit: Forgot to write, I don't understand why ACID is considered an advantage of a relational database. How can any database not have atomicity or consistency??? Do NoSQL databases not ensure those? And if so, how the heck can you rely on them?
Upvotes: 0
Views: 1255
Reputation: 25526
The data management techniques that go under the name of NOSQL are based on concepts (e.g. graph and file based access) that were mostly discarded decades ago in favour of the relational model. Those pre-relational approaches still have their niche and the interest in some of those techniques has peaked again in recent years. Let's keep this in perspective though. For the overwhelming majority of applications the relational database model has the advantage over alternative models in terms of flexibility, data integrity and the ability to query and derive useful results from data. Some of the largest databases in the world are relational or SQL -based. Contrary to what your question implies, relational is generally the rule rather than the exception and will probably continue to be for the foreseeable future.
Upvotes: 3
Reputation: 10066
I consider adaptable model as a benefit of relational DBMSs. It's easy and reliable to add or modify columns or tables, and with normalization, I have the benefit of joining my data in arbitrary combinations to answer any question I could ask. This flexibility is called access path independence, and it's one of the great under-appreciated strengths of relational DBMSs.
Upvotes: 2
Reputation: 1291
You should go back and look at ACID again, because that is the main answer to your question: when you need ACID properties is when you use relational databases.
Those applications that do need this are generally characterized by needing to perform discrete transactions that must not conflict with each other --- like withdrawing money from your banking account or making a stock market trade.
Many applications are okay with only using eventual consistency where it is sufficient to have things work out at the end.
Think of the difference between receiving ordinary mail and receiving a subpoena --- eventual consistency is sufficient for the first (usually), but you need a transaction for the second.
Upvotes: 3
Reputation: 3956
Here are the reasons, you can consider Relational databases over NoSQL
You should focus on both. If your project requires transactions, security, zero data loss etc then better to go with traditional RDBMS. For projects like recommendation engines, endorsement engines where scalability is the major challenge you can go with NoSQL databases.
In short, RDBMS databases are useful for running applications that are critical to the business, NoSQL databases are useful for running applications that complement your business.
Upvotes: 3