I was browsing around last weekend and ran into a post on a fairly big tech site about how the databases you’re probably using right now “aren’t the best”. Then it went on to explain how great and cutting edge NoSQL databases are. Another veiled “NoSQL vs. RDBMS” argument really. Now I kind of got into it a bit with the author in the comments, and for the sake of tact I’m not going to post the link here.
However, I felt like another article needed to be written to offset the negativity. So here it is….
First. Let’s get a couple things straight here. I’m not a fanboy. I do drink the Microsoft Kool-Aid© now and then, but I also have partaken in the Linux “tea” and even the Unix…umm…let’s call it an “aged vinegary wine” (kidding). My interests are varied but I always try and get to the meat of where my software requirements, budget, and future maintenance aspects converge. This, in my view, is what any I.T. person worth his/her salt does.
Personally I don’t see a problem being a “fan” of SQL Server/Oracle in the same breath as MongoDB/Cassandra.
So what is the fuss? Why does this have to be a religious debate? There are certain facts in play. Yes, a NoSQL database in all likelihood is going to outperform a RDBMS database, probably by a factor of something. But can you do OLAP cubes with NoSQL? Does it safeguard its transactions as well? Probably not without hampering the performance (which is the whole point right?)
Here are some back-of-napkin reasons I love/hate both:
Why I love RDBMS:
- Rock solid (it’s ACID man)
- Proven and established
- Incredible toolsets (reporting, analysis, BI, etc etc)
- Ability to pull bits of data together to make something meaningful (JOINS, OLAP)
- Data types (protecting users and programmers from themselves)
- Set based which can make working with large datasets easier.
This I Don’t Like About RDBMS:
- Expensive (if you have to scale at all)
- Overkill for small databases
- User manual can be prohibitive (mountains of information to learn).
- Fear of not having a firewall in front of it (exploits)
Why I love NoSQL:
- Cheap (a couple Linux servers and you’re good to go)
- Fast (really fast)
- Super scale-able
- Don’t have to sully my big RDBMS with stupid tiny databases (think online form capture)
- Not easily hacked (it can be done though).
Things I Don’t Like About NoSQL:
- You typically have to implement everything yourself (toolsets are limited, so far)
- Can dig yourself in a hole really quick if you architect your database incorrectly (sharding)
- Have to cobble the data to get meaningful results (reporting)
- Can be hard to pick which flavor to use for newbies.
- Syntax can be hard to visualize
So after all that can you start to see your requirements fitting somewhere?
I encourage you to investigate the pros/cons and make a smart choice, not hop on a technology because its popular or “we’ve always done it that way”.
Leave a comment if you totally disagree (or agree), I’d love to hear it.