Steve Jones - SSC Editor (9/5/2015)
Comments posted to this topic are about the item <A HREF="/articles/Editorial/131238/">NoSQL inside SQL Server</A>
Ok... thanks to your article, I finally decided to spend a bit of time researching what NoSQL is actually all about. I watched the following video from stem to stern. I was prepared to be amazed and impressed because of the hype that seems to be behind it.
Unfortunately, I'm still waiting to be impressed and I'm amazed the wrong way. What I saw were many claims as to how it was much faster than an "RDBMS" and more scalable and more flexible and... and... and... and absolutely no explanation as to how it was so except through wanton denormalization and rampant duplication of data. Yes, I saw the basic shift in storage from row based to column based but that's the only saving grace that I could see. If you wanted scalability, you still had to buy a shedload of hardware and it usually has to be more hardware because of the duplication of data. The really hilarious part of it all was that the speaker called that duplication of data "indexes". In other words, they were basically full covering indexes.
One of the supposed advantages of NoSQL appears to be that it's "transactionless". Sorry folks... you can't change physics. Neither the read/write head of a physical disk nor the addressing system of an SSD can write two different pieces of information into the same physical bytes at the same time no matter how hard you try. You also can't have either read from the same physical bytes at the same time they're writing nor vice versa. One or the other action is going to have to wait (be blocked) until the first read or write completes (hopefully they're written in the correct order). You have transactions and locks whether you think you do or not. And, as a reminder, the video said to learn to embrace "writes" because, with all the duplication of data, there's going to be a ton of writes... kinda like having too many indexes on an RDBMS table. 😉 Also, if transactions are such a bad thing, why have they updated a product like Cassandra to suddenly support even light-weight transactions?
I'll admit that I'm missing a lot of details just because it was only a quick dive of what NoSQL is but I believe I went in with an open mind and what I came away with is that the easy way to learn to what NoSQL can do is to let someone, that doesn't understand databases, design and write code on an RDBMS kinda like what many poor companies have to put up with right now.
I'll just kinda skip through the idea of non-durable data when it comes to critical things like monetary transactions. It reminds me of an incident I had with one idiotic compliance officer that I had the great displeasure of meeting that said it was ok to use SSNs as the PK for the customer table and in all tables that needed to refer to the customer table. Her claim was that even the Social Security Administration said there was no rule against it (unfortunately, she's right on that although PII rules are beginning to override all that). She also claimed that her security was good enough so that it's not a concern (I was a contractor and had full privs to ALL the databases with sysadmin privs) and she wouldn't change (encrypt) it. I told her that since she was so confident that it would do the rest of us very well if she demonstrated that confidence by entering herself, along with her actual SSN, into the databases that she was so proud of. We all know how that went. Not so confident but still adamant. 😉
Continuing in the video, the suggest of flexibility came from the use "name value pairs". SERIOUSLY??? Holy shades of hidden tag bloat, Batman! Just make everything XML and call it a day! On a good note, though, the presenter did say that data modeling wasn't dead because of NoSQL. Heh... I agree. It's just like in an RDBMS though... if the wrong people are doing the "modeling", then data modeling is actually dead for that application, whatever it is, especially when it comes to the "flexibility" of name-value pairs.
Unfortunately, NoSQL seems to be coming very popular and, very much like the tag bloated mistake they call "XML", it'll likely become "the defacto standard" just because of the sheer ignorance as to how to correctly use an RDBMS and that millions of people will use it as the "easy way" out even it it might not be the right way.