I’m wondering what the safest methods are involving Global DataStores that include a lot of data (tables within tables) that will likely be updated in multiple servers at the same time and often.
My most obvious concern is one server overwriting the changes of another server simply due to timing and other networking delays. Would UpdateAsync() be a good way to reduce the chances of conflictions occurring? Is there anything else I can do to help reduce risks? Or is there a way to update a specific part without touching anything else? OrderedDataStores seem like that might be a good option for that, but I need to test out how it works.
Sorry for the late reply but the chance’s of that happening are basically 0 unless an exploit is being used. In that case, you would want to use ProfileService because it has Session Locking which prevents data to be changed in other servers.
What are the limitations of OrderedDataStores? Do they have the same data limit as regular DataStores? Does the page size change anything in regards to that?
I need a way to update a single thing instead of updating an entire DataStore. I can’t really use individual keys due to the request limit.
Your safest option is to use UpdateAsync and only modify the oldData parameter it gives you in your callback function. I wrote a post here that explains how Roblox internally makes sure every UpdateAsync call runs with the most up-to-date data in the store passed to your callback function, even if it has to run the callback multiple times.
This is factually incorrect. There are no server-sided exploits, GlobalDataStores shouldn’t be updated that often and you instead should be using multiple datastores.
Thank you, but I meant about more specific information. But don’t worry about that anymore as I’ve found a solution for all of this. I’ll be using OrderdDataStores and updating a single key instead of an entire table.
with exploits the player can leave the game quick enough for data not to be saved in time then when they join back duplicate data is loaded which can be seen as item duplication. Many exploits use this in games to duplicate items such as pets or to reset there spin count
Excuse me? Because if you meant client-sided exploits, it wouldn’t apply either. Neither server or client exploits can mess with datastore calls that easily.
exploits can be entirely be used on the client to force the client to leave the game fast enough for data not to be saved. i do not know how but i have seen it done before in games like shindo life.
You said “exploit”. Exploits can’t affect server-sided data saving. Also please don’t address people like that. It is incredibly informal and rude and shows no respect whatsoever. We here on the Dev forum show respect for everyone, even if people disagree with each other. That is what keeps this forum productive.
Or you could just press “leave game” really fast? I’ve done tests and they yield incredibly similar results. Also if people are able to do that, that is a game design flaw.
Those server-sided exploits can’t intercept data store calls, and it is unlikely to tamper with existing scripts. They usually just duplicate them selves or teleport people to another game.