Sometimes, the data to be used in the application we are building might not be structured at all, can be semi-structured, or can be data whose schema changes over time. In such cases, we would refrain from using an RDBMS, as it adds to the pain and is difficult to understand and maintain. For such cases, we might want to use a NoSQL database.
Also, as a result of fast and quick development in the currently prevalent development environment, it is not always possible to design the perfect schema the first time. NoSQL provides the flexibility to modify the schema without much of a hassle.
In production environments, the database usually grows to a huge size in a short period of time. This drastically affects the performance of the overall system. Vertical- and horizontal-scaling techniques are available as well, but they can be very costly at times. In such cases, a NoSQL database can be considered, as it is designed from scratch for similar purposes. The ability...