I understand that storage is a table for storing player specific information and exists alongside other tables all being used in the nakama engine. https://forum.heroiclabs.com/t/storage-vs-database-the-difference/805
I also understand the userid can be circumvented if an empty one is used to store other information https://forum.heroiclabs.com/t/purpose-of-userid-in-storage-entries/4570
so technicaly storage can be used to:
1- store somewhat static information such as the list of item ids available in the in game shop and item information for each item id. which are design data that are read alot but not written to so often
{
Collection: “shop”,
Key: “availableItemIds”,
UserID: “00000000-0000-0000-0000-000000000000”,
Value: {someItemId1, someItemId2, someItemId3}
}
{
Collection: “items”,
Key: “someItemId”,
UserID: “00000000-0000-0000-0000-000000000000”,
Value: {name: someName, price:10}
}
2- store data for shared concepts such as match results. for example in a 5v5 game a match with a match id of X is added to the match collection, X is also added to the list of matches played by each participant. so the match table is written to storing information about the match, each participating member can use the matchids they have to read the past match information.
{
Collection: “matchIds”,
Key: “matchGameMode”,
UserID: someUserId,
Value: {someMatchId1, someMatchId2, someMatchId3}
}
{
Collection: “matches”,
Key: “someMatchId”,
UserID: “00000000-0000-0000-0000-000000000000”,
Value: {players: [someUserId, someUserId2], winner: someUserId}
}
1- Are the use cases mentioned doable?
2- Is this way of thinking and using storage where I fulfil all my data storage requirements through nakama storage intended and advised?
3-At what point and in what scenarios should developers write their own data base and develop their own server side service for nakama to use to write and read from instead of using storage directly?