I am having a task of building a new service (a.k.a microservice) for a user settings service.
The purpose of this service is to store settings of users in the system. Settings mostly come in the form of key-value pair with user_id
.
Some feature requirements for this service:
- The service should be designed so that it's scalable for read.
- The service should be designed such that it's easily plugable and extensible. Let's say in the future we want to introduce more types of user setting in the system, it will be easily doable with minimal additional effort.
Currently I am at the stage of database design and modelling for this service, and have some questions which I want to ask:
- Is there any good practice/principles/examples out there in the industry about this type of service in particular?
- Will relational (SQL) or non-relational (NoSQL) database will fit more for this case? I have already read about this relational design, I am wondering whether NoSQL will fit this use case, because most of the time we are storing key-value pair for the setting.
- Is there another alternative design that I can consider?
- Assume that NoSQL will fit to solve this problem, which NoSQL database should I choose? I don't have experience with NoSQL and there are many databases out there in the market to pick.