It seems that NoSQL concept not something very new and innovative, but these days become very popular. Why it become popular recently but not happen in the time when SQL is very popular?
-
1AJAX was first invented by microsoft as a active x in the late 90s but no one used it. Later after google and others adopted it, took off. i guess we are human and follow trends. also now the need for un structured data plus growth of cheap CPU and disk has enabled the use of not only -sql– tgkprogCommented Apr 21, 2013 at 14:26
4 Answers
NoSQL is not the absence of SQL necessarily. It can mean "Not Only SQL". It came about because of the web and the rise of massively distributed computing structures where SQL's overhead becomes a liability rather than an asset. It's the same with functional programming.
Lisp has been around since the 60s, ML since the 70s, and Erlang for a good while as well. It began to rise when people discovered that state mutability in a concurrent environment provides a wealth of problems.
Before that, Object Oriented Programming provided a tool for project organization and for separation of concerns that while perhaps a little slower than the procedural code still used in numerical computing, it was a good fit to the then new web programming architectures.
So it's a really a question of having the right tools for the job. Sometimes you need SQL, sometimes you don't.
Here's my theories:
It's new and it's shiny. Look at me!
Facebook/google/twitter/whoever use it, therefore it must be good.
Data modelling (properly) is hard. A lot of developers haven't learnt that skill.
On the surface it sounds great. Simple, free, scalable. Plus I don't have to learn SQL!
People don't have a good understanding of ACID.
The question is, what are you using it for?
The vast majority of things using databases out there don't care significantly about ACID, and relational integrity. It is good to know about these concepts so that when you do need them, you know where to (not) look.
When MySQL came onto the scene back in '95 it didn't have ACID. It still isn't an ACID server by design (some of the table structures will let you do atomic transactions). Claiming that ACID is a missing feature in NoSQL misses that it isn't a critical feature in not-NoSQL databases either.
Looking at MySQL and where it was used, and what it did one can see that it was used where speed of serving data is king. This still has its role today that other systems don't provide. Large, possibly distributed databases serving data.
This idea of the key-value storage isn't particularly new, its just that the hardware and software have caught up to the idea such that it can preform where it needs to to be competitive with other, heavier solutions. Look at tuple space which has been around ince at least the '80s.
JavaSpaces (an implementation of tuple spaces) tried this, I recall looking at it long ago, but it didn't seem to take off.
This image shouldn't be too unfamiliar to those who use a NoSQL database. Tuples and NoSQL databases are often mentioned in conjunction with each other.
Its not so much that it is popular today (and was unpopular in the past), but rather that the niche that a NoSQL database can fill allows ot to be filled with something that is quite different than what the mainstream database users are familiar with. Its just that the technology has caught up to filling this niche more easily (JavaSpaces were a pain to use) than it has in the past, and the advantages that it offers to fill this niche beat the more mainstream approaches (without throign lots of hardware at it)
See also Polygot Persistence by Martin Fowler.
-
makes sense for a enterprise that has good dbas. or good amount of automation. great choices cassandra logs, traditional db for reports .... nice image in Fowler's Polygot persistence– tgkprogCommented Apr 21, 2013 at 17:32
Technologies come and technologies go. New technologies are frequently touted as better for being newer and having learned from the implied error of some key aspect of previous technologies. In recent memory, Java was going to make everything easier, better, and more reliable than C, C++, and other languages of the 20th century. Now other languages are going to make everything easier, better, and more reliable than Java. Similarly, relational algebra and SQL were going to make everything simpler to work with than the "network" databases that preceded them, and now "no SQL" databases are going to make things better than SQL.
In practice, these new technologies never do what they claim, at least not on a broad basis, and not for long. They do well in the narrow world they were originally defined for, and then they begin to accrete changes, and morph into the dragon they were intended to slay. For the period during their rise, which has gotten shorter as the Internet has accelerated change in programming technologies, new technologies offer great promise. NoSQL is already beginning to show their weaknesses ("eventual consistency"? Sheesh!), leading to the revisionist re-definition of "NoSQL" as "Not [O]nly SQL".