Should storage be treated as a complete database solution?

Hello @alireza,

These threads can give some more insight into how to best lay out the data in the storage engine as well as how to achieve partial updates with some custom SQL queries: Storage engine structure
How to best implement a sorted list of JSON data accessible for all players to submit to multiple times?

To answer your questions directly:

1 - Yes absolutely.
2 - Yes, this is a good approach, create a shared object written once and then have “pointers” for each player that point to the match data entries.
Sometimes it may make more sense to just duplicate the data under the different users, whatever works best for what you’re trying to achieve.
3 - Ideally never. The Nakama and its Storage Engine is designed to be flexible enough for most uses. We have many customers relying solely on the Storage Engine and its APIs for all their storage needs.

@chakie In the future we’d like to support partial updates with a first party API using something like JSONPATH.

Beware that shared objects are fine as long as they aren’t under heavy concurrent write loads (e.g.: the same object can be updated by all the clients) - this can create db contention.