"Not Only SQL" (NoSQL) is an approach to data storage that requires less structure than most [[database]] solutions. [[ACID]] compliance and [[database normalization]] is relaxed to optimize for speed and throughput.
NoSQL systems use **aggregates**, sometimes called documents or objects, as data stores. Data values that are accessed together are stored together.
NoSQL database models include document store, key-value, and
The [[graph database]] is sometimes also included in the category of NoSQL databases.
## document store
Document store is a type of NoSQL database using [[XML]] or [[JSON]] format to organize data into **documents**. Documents are indexed and stored within **collections**.

[[MongoDB]] is a popular NoSQL database. [[Firestore]] is the GCP offering.
[[MongoDB]]
## key-value
The key-value pair database is **schemaless**--it has no structure at all. The database maps keys to an opaque value (that is, the database doesn't understand anything within the value). Key-value pair databases support simple query operations and are typically very fast and used in caching and similar tasks.
[[Memorystore]] (on Google Cloud Platform) and [[Redis]] (open source) are popular key-value NoSQL databases.
## wide-row, column-family store
A wide-column (column family) store database stores keys for both rows and columns. The wide-column store is massively scalable and supports sparse data where a column with no data is not stored for that row. Lookup of a row by the row key is very fast. In a distributed cluster system, the complete row is stored on a single node. A row may be stored redundantly across the cluster.
The schema is designed based on expected queries.
Based on [[Cloud Bigtable]], other popular implementations are [[Cassandra]] and [[Hbase]].
[[Cassandra]]