NOSQL is a sort of all-encompassing term which includes very simple key/value databases like Memcache, along with more sophisticated non-relational databases such as Mongodb and Cassandra.
Relational databases have been around since the 70’s so they’re a very mature technology. In general they support transactions allowing you to make changes to your data in discrete, controlled manner, they support constraints such as uniqueness, primary and foreign keys, and check constraints. And furthermore they use SQL or so-called Simplified Query Language to access ie fetch data, and also modify data by inserting, updating or deleting records.
SQL though is by no means simple, and developers over the years have taken a disliking to it like the plague. For good reason. Furthermore RDBMS’ aka relational database management systems, don’t horizontally scale well at all. To some degree you can get read-only scalability with replication, but with a lot of challenges. But write-based scaling has been much tougher a problem to solve. Even Oracle’s RAC (formerly Parallel Server) also known as Real Application Clusters, faces a lot of challenges keeping it’s internal caches in sync over special data interconnects. The fact is changes to your data – whether it’s on your iphone, desktop addressbook or office directory, those changes take time to propagate to various systems. Until that data is propagated, you’re looking at stale data.
Enter NOSQL databases like MongoDB which attempt to address some of these concerns. For starters data is not read/written to the database using the old SQL language, but rather using an object-oriented method which is developers find very convenient and intuitive. What’s more it supports a lot of different type of indexing for fast lookups of specific data later.
But NOSQL databases don’t just win fans among the development side of the house, but with Operations too, as it scales very well. MongoDB for instance has clustering built-in, and promises an “eventually consistent” model to work against.
To be sure a lot of high-profile companies are using NOSQL databases, but in general they are in use for very specific needs. What’s more it remains to be seen whether or not many of those databases as they grow in size, and the needs for which they are put stretch across more general applications, if they won’t need to be migrated to more traditional relational datastores later.