Brief history of NoSQL databases

monitor

When people use the term “NoSQL database”, they usually use it to refer to any non-relational database. Some say that the term “NoSQL” means “not SQL”, while others say that it means “not only SQL”. Either way, most agree that NoSQL databases are databases that store data in a format other than relational tables.

NoSQL databases appeared in the late 2000s, when the cost of storage plummeted. Gone are the days when you had to create a complex, difficult-to-manage data model to avoid duplicate data. Developers (not storage) were becoming the main cost of software development, so NoSQL databases optimized for developer productivity.

As storage costs were rapidly decreasing, the amount of data that applications needed to store and query increased. This data came in all shapes and sizes-structured, semi-structured, and polymorphic-and it became nearly impossible to define a schema in advance. NoSQL databases allow developers to store huge amounts of unstructured data, giving them great flexibility.

In addition, the popularity of the Agile Manifesto was growing, and software developers were rethinking the way they developed software. They realized the need to quickly adapt to changing requirements. They needed the ability to quickly iterate and make changes to the software stack – all the way down to the database. NoSQL databases gave them that flexibility.

Cloud computing also grew in popularity, and developers began using public clouds to host their applications and data. They needed the ability to distribute data across multiple servers and regions to make their applications resilient, scale up instead of scale out, and geographically place their data intelligently. Some NoSQL databases, such as MongoDB, provide these capabilities.

Features of a NoSQL database

Each NoSQL database has its own unique features. At a high level, many NoSQL databases have the following features:

  • Flexible schemas
  • Horizontal scaling
  • Fast queries due to the data model
  • Ease of use for developers