Idea
NoSQL is pretty much any storage solution that is non-relational. Data are often stored in a document structure, using a certain key, sometimes partition keys, to retrieve a given document. Documents often don't have a schema. Some NoSQL stores provide indexing[1]. Non-relational storage is often cheaper than structured/relational, and can provide fast response times for point-queries (retrieve one document) or sequential queries (retrieve documents with sequential keys). Examples of NoSQL solutions include:
- MongoDB
- Azure CosmosDB and AWS DynamoDB
- Azure Table Storage and to some extent Azure Blob Storage.
Links
{TODO: add event sourcing link} - Key-value stores are particularly adapted to storing events.
References
Key points from NoSQL distilled on Martin Fowler's bliki
Timescale / Why SQL is beating NoSQL, and what this means for the future of data - SQL is doing a come back ; I think it's half missing the point that it has uses and it has anti-patterns. Seeing SQL as the one-true-solution is probably an issue.
Integrant / SQL vs NoSQL - A list of criteria which push you one way or another
Use SQL when:
- complex queries and reports
- high transaction application
- ACID
- don’t anticipate a lot of changes or growth
Use noSQL when:
- it’s difficult to predict how the application will grow over time
- not concerned about data consistency
- a lot of data, many different data types
- data needs scale up, out, and down