(Originally posted on my linkedin on Sep 8, 2017)
Following is based on a true conversation…
Smarty Pants (SP) : Akki, which is better? RDBMS or No-SQL?
Me : Which solution are you building?
SP : This is an enterprise solution
Me : You have business data?
SP : Yes
Me : Business transactions?
SP : Yes
Me : Are these transactions part of a business process? With people/teams and systems come and go at different stages?
SP : Yes
Me : Guess, you need an RDBMS
SP : Why do you say RDBMS is better than No-SQL?
Me : I said you need RDBMS for your problem
SP : Why are you promoting RDBMS?
Me : I am not promoting RDBMS but that is what is suitable for your situation
SP : Explain
Me : You will need strong ACID support. And so, support for normalized db store
SP : Thats cliche and beaten to death. You are old and prejudice.
Me : Really? Which part? Your solution doesn’t need ACID support or normalization is not required?
SP : Why do you assume you can’t do these in a NoSQL?
Me : But why would I even look at NoSQL? Thats meant for different set of problems. How do you ensure transaction boundaries and something like 2-phase commit in a NoSQL?
SP : See, you do not know enough about NoSQL but have decided so quickly. Which NoSQL db you are familiar with?
Me : I worked with a couple. Mongo is what I am more familiar with.
SP : Which version?
Me : Don’t remember. Downloaded 6 months back. Whichever was latest. Needed a store for unstructured data and Mongo is really good
SP : You don’t even know which version of db you are using. Mongo 3.x version has something called isolation that can give you transaction boundary and guaranteed commits.
Me : Good to know. But I guess that is supported for special cases. If you do that with all business transactions in the system, I would expect it to be very expensive operation in not normalized, redundant, huge documents of MongoDb. Because MongoDB is not built for that.
SP : Again you are being prejudice. Why can’t you normalize in MongoDb? You can have your data normalized and have isolation to ensure your transactions.
Me : What?? if I am going to normalize my data in a NoSQL and mimic RDBMS transactions, why should I even use MongoDB? Its an apology for NoSQL/MongoDb. They are created to solve totally different problems
SP : You are not moving with times. You are not updated.
Me : Really! Why do we have an Excel and Word? You can have all graphics, text, formatting etc., within Excel itself? Why? Am I favoring one to other if I pick Word for text document and Excel for a spreadsheet?
SP : You are so adamant. Many like Facebook are using noSQL. You know that?
Me : I know and they are doing that and rightly so. They are not building an enterprise business solution the way you described your problem. I will be curious to see where their internal financials are managed.
SP : You are stuck in 90’s and not appreciating new technologies
Me : I give up. And glad I am not born after 1985! And haven’t learned computer science from wikipedia.
-Akki (No plans to retire any time soon)