If you want clients to work without changes when they go offline and go online (for example, POS with power off), then I would recommend making the application primarily work with local storage with a background edition or synchronization with the cloud.
The local storage parameters can be everything, starting from something bright, like sqlite, sqlexpress, firebird and without any sql parameters, such as mongo, couchdb, etc.
But for the client or device, consider the simplicity of the configuration and the weight of the option. You also need to consider the type of clients β do you have many platforms that vary from devices to PCs? You do not want something that has a heavy configuration and runtime. It is good on the service side.
From a service point of view, consider the nature of your data and whether it will improve performance for transactional / relational systems (banking, etc.) or, ultimately, consistent / non-transactional (without sql) documents. Do not forget the hybrid as an option. Also consider a service platform - for example, node goes well with mongodb (json objects from front to back) ...
The storage parameters for devices and services can be different (and probably should be) separated by service interfaces (soap, rest / http, sockets, etc.).
It is difficult to have one size that fits the whole solution, but often something lightweight, such as sqlite on the device or client, simplifies installation / configuration, while scalability on the service side with something like sqlserver / mysql or couchdb / mongodb has the meaning.
Some links to read:
You doubt that it is widely disclosed, and no one is suitable for any solution. I hope I have provided some options for thought.
bryanmac
source share