Announcing DataStore v2.0 - Automatic Versioning, Data Tagging, & Listing!

Yeah, SetExperimentalFeatures takes a dictionary. Not that helpful that it wasn’t listed off the bat in the original thread on how to do that, or maybe they were in the process of updating the Developer Hub and the page was cached when I went to check. API’s relatively straightforward though.

3 Likes

Will this be added soon, since tagging seems kind of useless until this is added.

3 Likes

Around a year and a half ago I worked on a simulator, and waited something like 7 seconds after the player joined before calling GetAsync just to make sure previous session probably saved. Now if old data for some reason took longer than that to save (and yes it attempted to save repeatedly on fail), they’d lose a session’s worth of progress, which isn’t the end of the world (I wasn’t smart enough to use session locking at the time). But I received reports on a daily basis of data being completely wiped, and estimated it was happening on average once in every 10,000 sessions or so. However it appeared to happen more or less often depending on the weather.

After switching to Bereza’s method of saving every session in a list and fetching the most recent one, the reports of complete data wipes essentially stopped.

2 Likes

I’m sort of confused.

It has a version history now. That is cool, but is there a point of using this over Datastore2? Datastore2 has version history, except there is no 30 day deletion. I’m confused as to if this should replace Datastore2. What specifically about the data versioning is superior? Is it faster or more efficient?

2 Likes

Very cool, was learning how to backup datastores a couple days ago but then this came out lol

2 Likes

I doubt roblox is going to make it an uppercase N, most likely a typo

3 Likes

This is not an improvement on datastore efficiency, all it is is new features being added to DataStores.

3 Likes

I believe it’s an expression, or at least that’s what I intended it to be. What I meant was it seems like it was dependent on what kind of day Roblox was having. Some days there’s a lot of outages and such.

3 Likes

I highly doubt it, as everything else is a lowercase n.

2 Likes

You can typically call both immediately. UpdateAsync will internally retry itself until the transform function returns either with data to be written to the key or nil to cancel the write. Get and Set operations normally shouldn’t take too long unless other logic is processing data and it yields; and any time spent actually writing to the data service would be on Roblox’s side.

Can follow up in PMs if you’d like. Just had a brief scare reading that post and thinking that GetAsync might’ve been returning the wrong things again, lol. The most likely cause for a GetAsync returning nil is either running into the cache, improper processing or something on Roblox’s side. If you’ve been good for now then you shouldn’t have anything to worry about; and if not, worth a bug report writeup.

DataStore V2 is new and they’ve apparently done some migrations and versioning on our behalf but I wouldn’t put it pass a migration to potentially miss on data, not sure what their process there was. Always worth a post if you encounter any new issues with this new API. :slight_smile:

I haven’t gotten around to playing with it yet, but I will! Soon:tm:.

2 Likes

If the API will support the feature natively, then I don’t see any point in using Datastore2 over the new API.

3 Likes


Does IncrementAsync have this UserId support too?

4 Likes

I know @dragonknightflies has responded to a bunch of my feature requests regarding datastores and to finally see this out is amazing. I actually have no real words. Automatic Versioning and Datastore and Key Listing are incredibly powerful and help to make datastores feasible while maintaining a level of safety than before. Data Tagging is one of the most useful things I can possibly think of and I am incredibly surprised that Roblox decided to add it in. Not many people know about it but, it helps a lot when indexing large sets of data and being able to break that initial set into tags is incredible.

The only gripe that I can think of is that datastores prove to not be well-suited during the developmental phase. I think that temporary datastores that can be instanced within studio for developmental testing would prove to be equally as powerful to Developers and lessen the amount of data-prone errors that Developers face since it provides a testing layer per-se that does not affect all users or rather, on production.

As a developer, we do have alternative libraries that offer something similar by emulating the functionality that datastores have but, so far it has not been added as native which is a bit restricting when you don’t want to push database changes to production w/o it possibly going wrong.

6 Likes

Agreed, I’ve created workarounds for these data types but it would be convenient to get straight to the point.

3 Likes

Documentation for various datastore v2 APIs are missing from the devhub at the moment : Some datastore v2 APIs are missing from documentation

3 Likes

The docs have a useless table in it:
Screenshot_20210812_233317
It just says there is no limit, which means this limit table is useless.

4 Likes

(post withdrawn by author, will be automatically deleted in 1 hour unless flagged)

2 Likes

This is great.

If our games have millions of entries, will we have to write our own migration logic that distributes of processes migrations over multiple servers?

Will there be any easy way to migrate data without taking down the game or anything like that?

Super excited to see what comes from this.

11 Likes

Really, really excited to see what people with do with this, new implements, I mean, there’s a lot!
This will actually really change the DataStore scene a lot, and also make certain things obselete, but yeah I mean, this is great.

I’m excited to see what happens after wards with querying features for example, that would be really really useful.

Imo, yes, this is way better than using the berezaa method, it’s better for GDPR and also way quicker, there’s no issue with limits like the berezaa method, 30 days imo is probably more than enough for most people, data issues either occur because of you or some really bad problem on Roblox’s side, and those are quite rare

Also bye bye DataStore2.

3 Likes

Is this some sort of dream? No words can express my excitement to see this image:

I needed this badly due to my tendency to break things after experimentation.

@loleris I would like to see ProfileService updated to use Datastore 2.0

4 Likes