NoSQL

NoSQL, which stands for "Not Only SQL," is a type of database that provides a way to store and retrieve data that is modeled in means other than the tabular relations used in relational databases (such as SQL databases). It is a broad term that encompasses a wide variety of different database technologies, developed in response to the demands of modern software development.

 

NoSQL databases are increasingly used in big data and real-time web applications due to their key characteristics:

  1. Scalability: NoSQL databases are designed to expand easily to take advantage of new nodes, making them ideal for large volume, high-traffic applications.

  2. Flexible Data Models: They support a variety of data models, including key-value, document, columnar, and graph formats. This flexibility allows developers to create applications that provide value from complex and diverse data.

  3. Speed: NoSQL databases use a variety of techniques to achieve high performance, including in-memory storage, caching, and optimized search operations.

  4. Resilience: Many NoSQL systems are designed for high availability and disaster recovery, often providing automatic repair capabilities.

However, the flexibility and versatility of NoSQL come with trade-offs. One notable one is the lack of a standard interface and querying language (such as SQL in the relational world), which can make interaction with the data more complex. Also, they might not provide the same level of consistency guarantees as traditional SQL databases, which can be a consideration for applications that require strong data integrity.

Key-Value Database

  • Key-value (KV) databases are conceptually the simplest of the NoSQL data models

    • A KV database is a NoSQL database that stores data as a collection of key-value pairs

  • Key-value pairs are typically organized into “bucket”

    • A bucket can roughly be thought of as the KV database equivalent of a table

    • A bucket is a logical grouping of keys

 

Document Databases

  • Document databases are conceptually similar to key-value databases

    • A document database stores data in key-value pairs in which the value component is composed of a tag-encoded document

  • JSON (JavaScript Object Notation) is a human-readable text format for data interchange that defines attributes and values in a document

  • BSON (Binary JSON) is a computer-readable format for data interchange that expands the JSON format to include additional data types including binary objects

  • A collection, in document databases, is a logical storage unit that contains similar documents, roughly analogous to a table in a relational database