Start with a SQL database instead of a NoSQL database. You aren’t going to break a SQL database with your first 10 million users. Not even close, unless your data is huge.
NoSQL: everything is denormalized.
SQL: normalize or denormalized.
When might you need to start with a NoSQL database
- If you don’t have any relational data.
- If you have an incredibly data-intensive workload.
- If you need to store > 5 TB of data in year one.
- Your application has super low-latency requirements.
- Because of the Joins.
- You need a really high throughput.
- You need to really tweak the IOPS you are getting both on the reads and the writes.
Migrate from SQL to NoSQL
- Denormalize right from the beginning and include no more Joins in any database query (see denormalization).
- You can stay with MySQL, and use it as a NoSQL database, or you can switch to a better and easier to scale NoSQL database like MongoDB, CouchDB, Raven DB.
A: NoSQL databases are inefficient for joins or handling relations.
As such, NoSQL databases store everything in a denormalized fashion. In this case, we do have relations like
user -> followers or
tweets -> favourited by users.
SQL seems to win on this parameter on ease of use.