Relational Storage, Hierarchical Retrieval
Some of the following points are not necessary given the model, but are in every widely used version of it. If you disagree, let me know.
- normalization
- simple updates
- complex querires possible, with DSL
- schema enforcement
- queries can get expensive
- requires caching
- learn and interop with DSL and backend language
- schema has to be created/updated
- fast retrieval
- shape of results often matches shape needed for UI
- no DSL needed
- no schema needed
- redundancies
- complicated updates
- complicated joins
- no schema enforcement
- model data relationally, normalized
- hierarchical retrieval, cached on a DB-level, like materialized views (refreshed incrementally)
- no DSL, document FFI and build language specific libs
- "declarative schema"
- migrations only for destructive operations necessary