How to tell if you need a Tank to drive your kids to school?
I will answer this question, because the people of dba.stackexchange rarely help anyway. If you want to pick a database, or want input for some table schema, go to the programmers stack. This isn't because they don't want to, mostly because you are asking a programming question thinking that it's a database question.
Why I use MongoDB:
- I want my kids safe, so I drive a tank, better safe, than sorry.
- I want my kids to speak my native language, Java. If I find my kids speaking SQL, they get grounded.
- My kids are never late, never miss a class. With replication, my tank has 3 engines.
- My kids study at different schools, no problem, using shards.
My advice, you should know your kids better. Kids being your programs/apps/clients.
You only asked:
If I have too many kids, what database can hold them all?
The wikipedia definition for NoSQL:
A NoSQL (originally referring to "non SQL" or "non relational")
database provides a mechanism for storage and retrieval of data that
is modeled in means other than the tabular relations used in
relational databases.
If this is the definition of NoSQL, then this becomes the rule you should follow to answer the question bellow:
How to tell if a project needs a NoSQL database solution?
Use NoSQL if your project needs a mechanism for storage and retrieval of data that relational databases don't offer.
Your question is NOT opinion based, but any other answer makes it open-ended.
Is there anything else that is relevant for decision making process?
Devs (developers)
- Storage limits
- Response performance
- Drivers
- Models/types supported
- Data isolation (decide in what server should data be stored)
- Transactions
- Change streams (access real-time data changes)
Ops (operations)
- Backup/restore procedure (they can be problematic)
- Upgrade procedure (few databases can be 100% on-line)
- Clustering/Grid/Replication
More? Tell me what your kids need.