A difficult question to answer in a comment post, Dragos. Thanks for such awesome questions. I actually have a full course lecture in my software architecture course to discuss this topic. Mainly to answer you, it depends a lot on:
- the data model you have
- how much do you care about consistency
- how much do you care about availability
- how much do you care about performance
Then you might decide to use SQL or NoSQL, and mind that NoSQL is not only one implementation. When you decide for NoSQL you have several options. For example you might decide to use MongoDB because your data is modeled as documents, or you might prefer Neo4J because a graph approach fits better to the structure of your data