DataStore v2.0 - Now Officially Launched!

Hi developers,

In August, we started the DataStore v2.0 Public Beta. Thanks to everyone who opted-in and gave us feedback! After the final prep and testing, we’re thrilled to announce that DataStore v2.0 is now officially released for general availability!

You can now directly use the new functionality for both your existing data and new data! All of the features are fully backward compatible. As mentioned in the previous announcement, DataStore v2.0 offers the following benefits:

  1. Automatic backup with versioning: To protect your data, all objects in your datastores will be automatically versioned whenever you update them. The latest version will be kept forever and the older versions will be stored for 30 days. When you need to restore your data, you use the new versioning APIs to list the versions, find the correct data, and restore it.

  2. Enumerate your datastore with listing: You can now enumerate all of your datastores in an experience and list all the keys in a datastore with the new listing APIs, which will be useful to understand data usage and run migrations. The key listing API also supports filtering through prefix, which will be handy to quickly find certain keys.

  3. Tag your data for future indexing and querying: You can now set metadata for each object in a datastore, e.g. color of a house and UserID for GDPR requests; Querying and indexing based on such metadata will be supported in future releases. Tools like automatic GDPR Right-to-be-Forgotten request processing, and experiences like dynamically searching user generated items are all made possible with data tagging.

To learn more, check out our latest DataStore Tutorial and the API references.

DataStore v2.0 is an important milestone to achieve our vision of making DataStore best-in-class data service for the community. We’d like to thank you for the continuous support and feedback, which is the best motivation for us! Hope you’ll enjoy this update and take full advantage of the new features!


Happy building!
The Roblox Developer Services Team

FAQ

What actions do I need to take if I opted-in for public beta?

  • The v2 flag will not be checked anymore, so you can keep your code as is and it will continue to work. If you’d like to keep your code clean, feel free to remove the flag setting part.

Please check out our previous FAQ for answers to additional questions.

Known Issue

(Update on 10/25/21) Please note the issue that AllScopes option doesn’t work without setting the experiment flag has been fixed. You can directly use this option now. To learn more, check out the latest Tutorial.

219 Likes

This topic was automatically opened after 10 minutes.

Is DataStore2 by @Kampfkarren obsolete now? I really do not want to switch again, since converting an existing game to DataStore2 Kampfkarren edition was hard enough. I might consider this for future releases I make if DataStore2 is obsolete now.


By that, I mean is DataStore2 Roblox Edition more reliable? I had some data-saving issues with v1 that were fixed when I converted to 2 Kampfkarren edition.

14 Likes

Nice! I have been waiting for this! Hope it works great!

7 Likes

image
might want to update these comments!
since it is public now

13 Likes

I’ve been waiting for this feature, thanks for launching it!

Yay

7 Likes

DataStore2 is a community-made module that takes advantage of DataStore v1.0 to make it more reliable, while DataStore v2.0 is an official Roblox implementation of a new API.

9 Likes

Looks great, will use it in my new games.

3 Likes

Firstly, I know you specifically reached out to a lot of my feature requests and I want to say that I appreciate you having the time to address my complaints and turn them into solid features.

Secondly, all these features are really good. If you’re a developer and you hate datastores, these features will make life so much easier.

All we need is an some sort of API for external use (so that we don’t have to be in a studio session to input or mess with data), utility and I’m fully sold.

Edit: A few more features would be nice.

  • Being able to have a development datastore (i.e some sort of internal tag for 'dev) that can be deleted so it doesn’t mess with data that is in production.

  • A way to visually see my tables, keys and the relationship between them. i.e primary keys, composite keys, types that each data field accepts, etc.

  • Development datastores that are temporary for studio play sessions. As of right now, it’s really hard to test datastores without going into a production game environment. This is really bad and promotes really bad habits for new users.

  • Being able to compare two tables and seeing if duplicates exist with an option to merge. I wrote a custom plugin for this and I do actually find it very useful enough to be in the hands of most developers.

  • Being able to clone / copy a datastore and tag it into dev. (Less messy for non-technical users).

  • Categorizing datastores by date, time of save or by tag.

  • Being able to lookup keys (regex, exact, matching, etc) in multiple tables and returning results.

  • Being able to archive a datastore as means to better save data if player-base is huge.

21 Likes

So the new listing APIs allow you to find all data assigned to a certain key? (For example, If i searched for a user ID that requested a right-to-be-forgotten, I could find and delete all of their data?)

edit: Nvm, the listing API allows you to find all the keys in a datastore and filter through them, which is basically the same result but with a different journey.

4 Likes

This post should interest you:

8 Likes

Pretty much yes. ProfileService is a way nicer solution to datastoring than DS2.
DS2 handles things fine on Standard mode too, but it’s too simple, doesn’t do much other than just handle things properly.

I personally after seeing the private beta period getting announced and them saying on the invite post that it would have versioning, it was pretty much just ‘DS2 byebye!’ as the first thought. I was personally discouraging DS2 use because of that. DS2’s ordered backups method is expensive, as heck. DSV2 gives you what the berezaa method gave you with some differences and being less expensive to achieve.

If you would wanna move stuff to DSV2, then it would be expensive to do that as well, as you need to ListDataStores then get the ordered data store version of that, list the versions there, get the key, and then set to an actual datastore, and it’s just hard.
I personally say you should just stay with DS2 now if it’s not causing you any issues.

4 Likes

I’m very happy with the arrival of a new api for the old DataStore, but I still don’t think it’s very good to use a direct connection to the database, besides being slow it ends up having limitations that can only be corrected within the game itself.
Anyway I am very happy about the DataStore 2 update, I see that I will have more things to implement in my DataBase modules.

4 Likes

This seems great. However, is this a whole new way of saving data or just some additions to the previous data store version?

9 Likes

I am so happy about this! Thank you Roblox!

Not having to manage our own backup system is one less thing to keep me up at night :slight_smile:

6 Likes

Thank you roblox, finally I am able to actually use the roblox datastores without any fear of corruptions, as long as it keeps up the hype of beta I’m so hyped for this.

4 Likes

Thanks Roblox! Now I won’t have to create a backup everytime a game of mine needs a datastore :slight_smile:

3 Likes

Thanks, Roblox! I guess it is time for me to convert my datastores to the newer version.

4 Likes

Just use an another datastore?

Datastore Editor plugin by @sleitnick If i remember right

5 Likes

When this was still in beta if v2 features were enabled then DataStoreService:GetDataStore would return a DataStore instead of a GlobalDataStore. However, since this update is now live does this mean that it won’t return a GlobalDataStore again? The only reason I’m confused about this is because of the DataStoreService:GetGlobalDataStore function.

Will the GetGlobalDataStore method be updated to return a DataStore object instead of a GlobalDataStore? If so, then what will become of the GlobalDataStore object? Will it be deprecated and replaced with the DataStore object? Or will it become the base for the DataStore object to inherit from, sort of like PVInstance?

In short, I’m asking this; Once this update is processed by the community and becomes the norm, will the GlobalDataStore object have any relevance anymore? The reason I’m asking is because I’m making an module that’s just an abstraction layer of `DataStoreService’ and the answer to this is relevant to the development of it.

6 Likes