With the advent of cloud computing the need to move away from large monolithic databases becomes more and more essential. Pure cloud environments don't scale vertically very well, so a large central database server is impractical and violates the design mandates of a pure cloud computing environment which requires using distributed increments of commodity virtual hardware, often on semi-ephemeral hypervisors. Even web oriented databases like PostgreSQL and MySQL are losing popularity with developers looking to build apps that are capable of intrinsic scaling.
NoSQL databases like MongoDB, Apache Cassandra, Redis and Riak are gaining in popularity as developers choose to make their apps inherently scalable. This article is not meant to be an in-depth comparison of SQL and NoSQL, it's only meant to give you a general ideal what NoSQL is, why people are using it and how it relates to cloud computing.
If the S in SQL stands for structured, then NoSQL is in it's most basic form an unstructured data store, with many NoSQL variants out there to suit different types of data. Where SQL needs to store data in a specific way (predefined tables) so it can be queried using a standard query language, NoSQL offers a much greater level flexibility as each record can have a different data structure. At a very basic level, SQL is perfect for predefined and rigid data types, like accounting system data for example, as the nature of double-entry book keeping doesn't really change neither does the data structure. But SQL databases are not ideal when the type of data being stored for each record may change often or the data type is different for each record. By contrast NoSQL is very well suited for large unstructured datasets like perhaps for storing IoT (internet of things) or social media data, where each record in the database may have to hold different types of data.
The unstructured nature of NoSQL databases make them well suited to distributed environments as unstructured data by it's nature is not going to provide high levels of transactional integrity. An accounting app would soon start to loose integrity if data started coming in unstructured or if it couldn't be sure if an entry had been made before moving on to the next transaction. A NoSQL database that's recording system event log data from a large server farm isn't particularly concerned with transactional integrity as the data being written in each transaction has no specific relationship to other data being written. So both technologies clearly have their place and one is not better than the other, rather each has it's own ideal use case.
What makes NoSQL specifically interesting to us is, firstly and least importantly, NoSQL is inherently well suited to being hosted on cloud servers due to it's ability to scale horizontally (adding additional servers, rather than bigger servers). Secondly and more importantly, NoSQL is better suited to facilitating the data needs of modern web applications which require fast deployment, infinite scalings and greater flexibility. As the internet of things continues to explode and data flows in from every source imaginable, database requirements will continue to bias away from structure and transactional integrity towards speed, scalability and ease of use. The adoption of cloud itself has been a developer driven phenomenon and we'll see that trend continue with NoSQL databases.