DataStore Game Limits

The wiki states that “requests to a specific key can be throttled if it’s being requested from too many servers at once”

But what is the actual budget?

2 Likes

It is 260k per key to my knowledge.

1 Like

260k requests per minute?
a source might be helpful

No, 260,000 for a single save file, as in the actual key.

Check this out: http://wiki.roblox.com/index.php?title=Data_store#Limitations

I don’t think you understand my question
I know you can only store 260K json-encoded characters in a data component (which by the way your source is wrong, my OP has the proper link)

Maybe consider reading the post lol

Have you looked here? It shows the budgets of the datastores depending on what you use.

If it’s not published then it is either not quantifiable or subject to change based on the amount of resources Roblox makes available for game servers.

Roblox uses DynamoDB to host datastores, so you could look at their documentation to see if you can figure out anything meaningful:
https://docs.aws.amazon.com/dynamodb/index.html#lang/en_us

If I had to take a guess at why this is mentioned on the hub: DynamoDB (like many databases) stores data across shards/partitions and uses a partition key to evenly divide the keyspace over the partitions. If you constantly write/read a specific key from all your game servers, your partitioning will be highly unbalanced in terms of traffic because one of the partitions (the one with that specific key) will receive a much higher amount of traffic than the other partitions. This could subsequently lead to throttling because many separate requests accessing the same resource repetitively doesn’t scale. These kind of databases work best when your keyspace is more-or-less evenly accessed (i.e. player data), not so much for a distinct set of highly available keys that are accessed/written a lot.

6 Likes

The link you provided does not seem to work. Where can one access the documentation?

Fixed the link. A quick google should also lead you to most meaningful places in amazon’s documentation.

1 Like

What is ‘this’?

The shards system sounds really interesting, I’m going to try researching shards a little more

My scenario is that in my new game I will basically have a Roblox catalog system
Specifically I have this:

Do you recommend I implement an external database for this? (I am of course planning for my game to be #1 on Roblox ;P)

I meant the quote that you mentioned in the first post: “requests to a specific key can be throttled if it’s being requested from too many servers at once”

Yeah, you would pick a database that supports writing and reading from highly volatile keys. Maybe look at Redis or Memcached.

2 Likes

was about to make a topic about something similar to this…

My situation is a little different of Acreol’s, say i want to allow players to choose what map they’d like to play on each round, and each time a map is chose I update a datastore key “MapName” adding +1 value to it.

This would mean that key could potentially be updated frequently should the game have have a lot of servers active.

Any suggestions on a way i could go on about doing this yet not reach the limits?

If you wanted to do it professionally, you’d send a message about each event to some external server which stores it as a time series, and then you have some machines crunching that data into usable information (like “maps chosen over time”). Datastores don’t really have a way to reduce a lot of information into a small keyspace, it simply isn’t built for that.

If you use a platform like GameAnalytics or similar then 95% of the work is done for you and you just need to implement the part where it sends the events.

If you want to also i.e. show the reduced values again in-game, then probably set up a small server of your own that collects events and reduces them, then exposes them back to your game servers.

2 Likes