All we need is an easy explanation of the problem, so here it is.
I’m designing a very simple application to send positive text messages to subscribers at a certain frequency.
These are just famous, motivational, encouraging and positive quotes.
When I first thought of the idea I thought, oh we can just store these quotes as one Collection in MongoDB. And the phone #s in a separate Collection
If the app remains as simple as this…then is a NoSQL approach ideal and better than a RDBS? I feel like it’d lead to faster dev time to get something up and running (Node Stack)
However, I think making the little initial extra effort and using MySQL could make this more expendable, future-proof, and prevent technical debt. Say…I want to track what Quotes were sent out to specific users, etc..
What are some insights?
This question isn’t even about the app itself, but rather to get a better idea of when to use NoSQL vs a traditional RDBMS.
When I say NoSQL..I pretty much mean MongoDB or any other similar JSON document store
How to solve :
I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.
If the app remains as simple as this…then is a NoSQL approach
If the app is truly as simple as this and will remain so, and dev time is the key factor, then a pair of files and a bash script (or a few lines in any language) would do. On day 216 (assuming daily frequency) send the quote from line 216 of the quotes file to all the contacts currently in the address-book file. Even NoSQL (assuming you mean a “relatively schema-less document store”) would be overkill in terms of storage design. This would leave you more time for putting together the content (the quotes and the contacts list) and sorting out procedures for things like if a user wants to unsubscribe.
However, I think making the little initial extra effort and using MySQL could make this more expendable, future-proof, and prevent technical debt.
I would suggest that is time well spent, as long as you don’t go too far away from a minimal viable proof-of-concept as your first version. But be aware that you can over-engineer or under-engineer in NoSQL systems just as much as you can in SQL based ones.
to get a better idea of when to use NoSQL vs a traditional RDBMS
The general answer is to use another solution when you don’t need the benefits of a traditional RDBMS or the ones that you need can be achieved/emulated by something else with less dev time. You can’t make this decision well without deciding what your minimal feature set will be, and what you are likely to want to add later.
“NoSQL” covers a number of different ideas, some of it useful abstractions and some of it marketing fluff, so to get a more specific answer to that you need to say what you mean by NoSQL. Do you have some no-sql options in mind?
Not an awfully helpful answer, I’m sure, but without a more specific question we can’t give a more specific answer (except perhaps by copy-pasting some marketing material for “nosql” solutions, but that information you can find easily anyway.
Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂