"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**. ![nosql](https://github.com/eriktuck/ei-dev/blob/master/docs/data-management/assets/NOSQL.png?raw=true) [[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]]