NoSQL was a bold new revolution. Many of these databases are schema-less, or rather the schema is implicitly defined by the developer, and therefore is flexible and can evolve. NoSQL databases lend themselves to very simple key-value access patterns; there is no need to design complex relations, or perform joins in ‘archaic’ languages such as SQL.
We also don’t need to worry about coding complex transactions. Just write the data to a location and forget about it. Your distributed data tier will scale smoothly across many servers and the service layer will deal with eventual consistency.
At a stroke, the chores and restraints that were an inevitable part of the relational database were overthrown, and there were plenty of developers who rejoiced. It was, it their eyes, the end of the relational winter. The NoSQL spring thaw had arrived, soon to turn into blazing summer.
Inevitably, of course, for any NoSQL application that gains popularity, the absence of these relational ‘niceties’ becomes more and more of a burden. And many of the constructs and logic required to protect data integrity doesn’t disappear when you move to a NoSQL database, they just move out of the data into the code and become the developer’s responsibility.
There have been some spectacular examples where the lack of transactional integrity of NOSQL databases led to financial disaster. Even ardent NoSQL enthusiasts did U-turns on the value of ACID-compliance. And therefore, slowly, inexorably many NoSQL database begin to acquire the essential characteristics of a relational database. MongoDB now offers joins; N1QL and U-SQL bring good old SQL-style querying to “NoSQL” data. Many of the NoSQL databases are now laboring towards some form of proper transactional support.
NoSQL has struggled to meet the requirements for enterprise governance. In fact, some believe that the problems haven’t been tackled at all. This is possibly the most subtle but lethal failure of the existing systems. Although fine for analyzing and exploiting transient data such as social media, there is more anxiety about using NoSQL from commercial enterprises when the reliability of the data cannot be guaranteed.
Yes. Many of the characteristics of the relational system are creeping back into NoSQL databases. So, are we coming full circle? I doubt it, because there are definitely some good ideas in NoSQL, but maybe the zealots of the NoSQL movement were too hasty in throwing out the baby with the bathwater. NoSQL and relational databases are intended to solve different problems. The future could well be polyglot databases for different purposes, but of course there is plenty of life yet in the relational database!