If you are a beginner wondering what are use cases for SQL or an experienced developer trying to make a choice between SQL or NoSQL for your next project, this article might help you steer your decision the right way.
Pros vs cons
Everything comes at a cost.
While SQL is ACID ( Atomicity, Consistency, Isolation, Durability) compliant which ensures that performed transactions are always consistent, it might be an overkill for your use case.
- Atomicity - ensures that each database transaction is a single unit that adopts an "all or nothing" approach to execution. If any statement in the transaction fails, the entire transaction is rolled back
- Consistency ā A processed transaction will never endanger the structural integrity of the database.
- Isolation - Transactions cannot compromise the integrity of other transactions by interacting with them while they are still in progress
- Durability - The data related to the completed transaction will persist even in the cases of network or power outages.
Instead you might find BASE ( Basically available, Soft state, Eventual Consistency ) NoSQL databases to be more of a fit.
- Basically available - The NoSQL database approach focuses on the availability of data even in the presence of multiple failures. It achieves this by using a highly distributed approach to database management. Instead of maintaining a single large data store and focusing on the fault tolerance of that store, NoSQL databases spread data across many storage systems with a high degree of replication. In the unlikely event that a failure disrupts access to a segment of data, this does not necessarily result in a complete database outage.
- Soft state - Due to the lack of immediate consistency, data values may change over time. The BASE model breaks off with the concept of a database which enforces its own consistency, delegating that responsibility to developers.
- Eventual Consistency - The only requirement that NoSQL databases have regarding consistency is to require that at some point in the future, data will converge to a consistent state. No guarantees are made, however, about when this will occur.
For example, if you're dealing with transaction processing where consistency and durability are must-have features then you'll be better off with an ACID compliant DB.
On the other hand, social network feeds do not require such a strict compliance so it's acceptable to trade-off ACID in favour of more flexible, easier to scale, approach.
This article does not contain the answer which is better, SQL or NoSQL because as always, it depends on your use case.
Having said that, I highly advise against following the latest trends blindly and flavour of the month technologies. Instead try to define your use case and make a decision based on your needs.
reach out > relja.jovicevic@gmail.com
Top comments (2)
I very much agree with the final paragraph. A decade ago we launched on a PaaS that at the time only supported noSQL. It was a disaster. From talking to other companies that went with noSQL it seems that the situation hasn't improved.
Hey Shai, thanks for taking the time to read through the article. Yeah, Iād go with NoSQL solution if I had to scale massively. Otherwise it might not bring too many benefits compared to SQL.