Data is normalized(structured) and high consistency is required:
<aside> 💡 You can also scale relational database to enormous scale (Vitess for Youtube)
</aside>
Data is unstructured, but you need ++queries, projections:
Usually helpful when you have high RW ratio (Master-Slave architecture in case of mongo)
<aside> 💡 You can tweak mongo for AP and CP (read from replicas)
</aside>
You have a big scale and lots of writes. Data is more increasing than updating(or never updating). No need for joins or anything relational and you want to read by primary key. And you okay with data loss.
Columnar DB (Cassandra, HBase, BigTable)
Examples: time-series data, clickstream.
<aside> 💡 Cassandra can be tweaked to increase consistency level (Quorum). Writes and Reads throughput increases linearly as new machines are added.
</aside>