- centered around documents such as json, XML, binary, etc.
- have apis that allow querying based on the internal structure of the documents.
- examples include mongodb and couchdb.
- provide high flexibility and typically used for data that occasionally changes.
- quite similar to key-value stores because key-value stores often also allow for the storing of metadata.
pros
- schemas are typically not explicitly defined at write-time, so they are enforced by the application code at read-time.
- better locality, because data is denormalized.
cons
- depending on how documents are stored, any change might require a complete rewrite of the document on the disk.
- support for joins (especially many-to-many relationships) is weak (this goes hand-in-hand with denormalization).
use-cases
- applications that don’t require many-to-many relationships.
- i.e. an analytics applications that just records events.