开发者们,你们好!
我们很高兴地宣布 DataStore 服务的一次大幅更新——DataStore v2.0 即将开始公开测试!在过去的几个季度里,开发者服务团队一直都将精力集中在这上面,而现在我们终于准备好让大家来体验一下了!
本次更新包括:
-
自动版本管理:DataStore 中的所有对象,例如键值对,都将自动版本化并保存 30 天。你可以在需要时用新的版本管理 API 来取回旧版本并恢复受损的数据。
-
DataStore 与键列表:你可以用新的列表 API 在作品中枚举 DataStore,并列出 DataStore 中所有的键,这样可以方便理解数据使用和运行迁移。键列表 API 也支持通过前缀过滤。
-
数据标签:你现在可以为 DataStore 中的每个对象设置元数据,例如建筑的颜色和 GDPR 请求的 UserID。后续会推出根据这些元数据进行查询和索引的功能。
所有 API 都向后兼容,不会使你现有的代码崩溃。更多详情请参考 DevHub 参考指南 853 和 API 参考。注意,你必须在 GetDataStore() API 中设置 “v2” 标志来开启测试功能,新 DataStore 和现有的都是如此。我们已经完成了内部迁移,无论你是否设置了 v2 标志,你的数据都已版本化。不过,你必须手动开启 v2 标志才能使用版本管理 API。
警告:在开启 DataStore 的 v2 标志后,请勿将其关闭,否则你之前设置的元数据可能会丢失。
鉴于这次公开测试的新功能都非常稳定,API 不太可能会进行修改,除非出现严重问题。我们自信地认为你可以将新功能整合至现有的作品中。在我们正式发布 DataStore v2.0 之后,这些新功能都会默认可用,无需手动开启。
常见问题
更新日期 2021年8月17日
我们对 DataStore v2.0 的发布感到非常兴奋,看到许多支持该版本的积极评论也非常高兴。我们也注意到了一些常见问题,所以这里花些时间来说明一下。
Q1. 开发者可以修改版本保存的 30 天期限吗?
我们将期限设为 30 天,因为我们认为这段时间足以让你发现问题,如故障和数据损坏之类,并恢复数据。另外,我们也需要在成本考量和将我们提供的价值最大化之间找到平衡。将来我们会考虑开放时间期限设置,以便让某些版本得以保存得更久,类似定期备份。
Q2. 与其他解决方案相比,DataStore v2.0 中的原生版本支持有什么优点?
对象的版本存储在类似仅限附录列表的数据结构中,这样可以避免许多问题,例如游戏服务器时间不同步导致新的写入被当作旧的写入来存储。
相较于其他基于指针的版本管理方式,新的版本管理系统有以下优点:
· 对象在一个 Set/UpdateAsync 调用中版本化,无需另写一个单独的版本信息和排序的 DataStore 。这样可以获得更佳的性能并更好地利用配额。
· 旧版本将自动被系统删除,无需开发者进行任何操作,也不占用任何 DataStore 的调用配额。
· 对象的 UpdateAsync 将正确地创建一个新版本。在基于指针的版本管理方式中应用 UpdateAsync 行为是非常困难的,因为指针和数据必须保持同步。
· 将来可以基于现有的版本管理系统推出其他与备份相关的功能。
Q3. 为什么我该使用元数据,而不是把数据保存在对象中?
虽然目前尚未决定,但我们在考虑两个可能的用途:1) 基于元数据的索引与查询,以便让你创建游戏内搜索功能,或运行临时数据分析,2) 可无缝列出所有 RtbF 条目以便查看和移除的 GDPR 工具。
Q4. Roblox 为什么不自动处理 GDPR 请求?
Roblox 以提供 DataStore 的方式成为开发者的服务提供商。Roblox 对 DataStore 中的数据没有决定权,开发者可以根据自己的具体需求来使用数据。身为自己作品的开发者,你对 DataStore 中的数据拥有完全的所有权。我们不想直接删除数据,除非得到你的授权。这与其他云计算供应商类似,例如使用亚马逊的 AWS 上的存储服务 S3 时,亚马逊不会单方面搜索并处理你的 S3 数据。
DataStore 的另一个问题是 Roblox 不知道哪些数据与哪些用户关联。例如,假设一个键叫作“h_1234567”,Roblox 不知道这个数据是属于 UserID 1234567 的用户,还是说“h”代表房屋而 1234567 是某种内部房屋识别码。如果我们假设是前者并自动删除数据,我们可能删除你游戏中的一些资源并破坏你的游戏。如果我们提示 h_1234567 可能有与用户 ID 1234567 相关的数据,你可以为我们确认是否确实如此,或者在这不符合你的数据安排时选择不删除。
我们仍在改进使 GDPR 的使用体验更加流畅的细节。在制定完成之后我们会公布详细的功能计划。在此期间欢迎提出宝贵建议!
我们也看到了几条关于对文章进行改进的评论,并已经更新了文章,可以参考这些评论来了解以前的问题。再次感谢你们的反馈,我们会继续在这个常见问题部分回答你们的问题。
我们非常重视你们的反馈,这样可以帮助我们改进功能并使它们更加符合你们的需求。如有任何问题请随时提出。我们的团队会定期阅读这些帖子并回答问题。
祝大家造得开心!
Roblox 开发者服务团队