There is some irony in opening the post proclaiming how important SQL is because of webSQL, webSQL has hung on by being the only choice with Safari, with Apple almost certainly adopting IndexedDB webSQL will cease to exist in any relevance pretty quickly (its already fairly niche).
This post is just filled with naive strawmen arguments, I work on a NoSQL database, show me a SQL database that is implemented embedded inside every browser and allows offline operations to sync between masters transparently ...
Trying to define or dismiss 'NoSQL' as a singular movement is not going to work, there are lots of tools, I use different ones for different things, some of them even have a SQL interface.
NoSQL is a strange term. It really just means "everything else that isn't a traditional SQL database". It encompasses a massive range of completely different database technologies.
SQL has been astonishingly successful in recent years and it's a testament to its dominance that the term NoSQL even exists. It's kind of like calling all meats except for beef "NoBeef".
I'm really happy to see some different database technologies getting some attention these days. They each have their own niche. There's no SQL vs redis vs MongoDB vs cassandra vs whatever "winner", just databases with different strengths which can benefit us in different ways.
I don't think that's necessarily the definition of "NoSQL database".
Databases that predate Codd's work, or long-established ones like dbm and BDB, may appear similar to modern-day NoSQL databases in how they operate, but they surely aren't the same.
Those systems couldn't use relational theory or SQL because they didn't exist yet, or at least didn't reject them outright as one of their main goals.
NoSQL databases, on the other hand, are completely about rejecting relational theory and rejecting SQL. That's at the very core of their philosophy.
True NoSQL databases have been developed as a reaction to several things:
1. A very, very, very small number of situations where relational DB systems cannot easily scale.
2. The far more widespread ignorance of the basics of relational theory, and a lack of willingness to learn about it.
3. The far more widespread ignorance of SQL, and a lack of willingness to learn about it.
4. An urge to be "different" solely for the sake of being different, even if it brings no technological benefit.
5. Unmitigated hype surrounding the term "NoSQL".
Of those, 1) is perhaps the only legitimate reason for using a NoSQL approach today. The number of times this sort of a situation actually arises is remarkably small.
The other four are why those databases have become more widely used, especially within the web development community. As anyone who has dealt with such systems knows, they're rarely about safely and reliably storing and managing data, and they're rarely about doing this efficiently. They're merely a shortcut that some developers use to avoid learning how to use a RDMS.
We surveyed NoSQL users in 2012 and it turns out the biggest draw is the no-schema thing. People don't want to coordinate migrations when they are implementing new features. In some cases this may be technical debt, in others, having a schema to maintain is technical debt. http://blog.couchbase.com/nosql-adoption-survey-surprises
I had a larger comment typed out, but I think it would detract from my point, ignorant comments like this make this industry a far less pleasant place to work.
Consider the notion that not everyone involved in 'nosql', including some of the SQL industry leaders arent doing so because they are too stupid to realise what you find so obvious.
Do you still have your original comment? If you do, you should seriously consider posting it.
It's difficult to discuss this topic with you if you intentionally avoid posting anything of substance, and instead throw out accusations of "ignorance".
Exactly. Anyone who tries to compare SQL and NoSQL is frankly an idiot. Cassandra is as different from MongoDB as it is from Oracle, Riak, MySQL or SQLite. They all have very different behaviours and many model SQL concepts quite closely. It just doesn't make any sense to group them.
Funnily enough it's always the PostgreSQL community that wants to create this artificial war. It's like they think everything in terms of one or the other when in fact most systems these days are heterogeneous.
This post is just filled with naive strawmen arguments, I work on a NoSQL database, show me a SQL database that is implemented embedded inside every browser and allows offline operations to sync between masters transparently ...
Trying to define or dismiss 'NoSQL' as a singular movement is not going to work, there are lots of tools, I use different ones for different things, some of them even have a SQL interface.