When to consider what type of database:
- Relational: when referential integrity with strong consistency is needed.
- Key-value: when access patterns require low-latency Gets/Puts for known key values.
- Document: when you want developers to use something intuitive. Data in the application tier is typically represented as a JSON document.
- Graph: when working with highly connected datasets.
- In-memory: when you need microsecond response times and expect large spikes in traffic coming at any time.
- Search: when you need to index and search semi-structured logs & data.
Full post here, 7 mins read