Reputation: 130
I'm kind of new to designing my own full-stack projects, but I'm designing a little app for my own learning where I store a user's weightlifting data that they can enter and view in a web app.
Eventually, I want to scale up to users being able to view, share, like, etc. other peoples progress (kind of like Strava/Nike+Run Club for lifting) - what kind of DB would be a good place to start?
Right now, this is sort of a portfolio app. Obviously, if I decided to scale up, I can change and migrate to better alternatives. So would a NoSQL or RDBMS work just fine? If so which one would be cool/relevant to work with? What should I consider maybe?
I should mention that I am using React JS and Next JS as my front-end frameworks, along with Node JS and Express JS in the back. Perhaps it's overkill, but it's cool to learn!
Upvotes: 0
Views: 109
Reputation: 10215
If this is one of your first full-stack apps then maybe focus on learning first and world domination scale-up/out later :) (I totally agree with what @Hans said).
NoSQL and relational database approaches are different and suit different use cases, so if you want the best fit I suggest researching those differences first, and then apply what you learn to your solution and what you think is best.
I also suggest you put some kind of dependency inversion (DI) in between the database and your logic, so that you can swap out different databases without affecting the rest of your application too much. One of the biggest learnings you'll get with a project like this is not so much the initial design and build - but how to deal with the changes you'll want to make later. Making non-trivial system changes is a great way to test your architecture :) Having DI in place will help you massively here.
Personally I find SQLite a great option for hobby apps - it's free, there's good documentation and a strong user community, and you will be able to implement relational and NoSQL databases using it.
Upvotes: 1
Reputation: 121
Depends on what you want to learn. RDBMS are everywhere so I would recommend that you look into PostgreSQL, it has a great set of features and you can do almost everything with it, and has good performance to.
But if you are more interested in NoSql, go for it. If you want to Implement more complex relationships between the yousers, a Graph DB would be a great fit.
For learning purposes it often the best to not over analyse and just to start working, the rest comes with experience.
Upvotes: 0