數據存儲的最佳實踐

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

使用這些實踐來組織和管理整個生命周期中的可靠、可擴展和可觀察的數據。

組織您的數據

創建更少的數據存儲

數據存儲的行為類似於數據庫中的表。使用一小組固定的數據存儲,並通過鍵在其中組織記錄。例如,將每個玩家的個人資料存儲在一個 PlayerData 數據存儲中,而不是為每個玩家創建一個數據存儲。

每個玩家使用一個或少數鍵

當數據符合 4 MB 對象大小限制 時,將每個玩家的持久數據存儲在一個鍵下。例如,在 PlayerData 數據存儲中使用 User_123456 這樣的鍵。這種模式減少了請求,讓您可以原子性地更新相關值,並使回滾更容易理解。

如果玩家數據的不同部分具有不同的訪問模式或接近每鍵大小或吞吐量限制,則將記錄拆分為少量確定性鍵。將必須原子性更改的數據保留在同一鍵中。

使用靜態鍵模式和前綴

從穩定的標識符和靜態模式構建鍵名,例如 User_{UserId}。不要使用顯示名稱或其他可能變更的值。靜態模式使鍵在伺服器和工具之間可預測。對於數據存儲,它們還允許 自動化的被遺忘權處理 識別玩家數據。

使用 前綴 來分組相關鍵。例如,支持多個角色資料的體驗可能會使用 User_123456/Profile/WarriorUser_123456/Profile/Mage。然後,您可以將 User_123456/Profile 傳遞給 ListKeysAsync() 來列出該玩家的資料。

範圍 是另一種細分數據存儲的方法。範圍會將一個字符串添加到該數據存儲實例中的每個鍵前,默認為 global

評估數據存儲模塊

第三方數據存儲模塊始終是一個選擇,在許多情況下,可能比從頭開始構建系統更受歡迎。在採用之前,請檢查其所有權、維護狀態和功能集。了解如何在不使用該模塊的情況下訪問和遷移您的數據。

減少和分配請求

在內存中緩衝玩家數據

在會話開始時加載玩家的數據,並保持伺服器本地副本以供遊戲使用。更新本地副本,而不是為每次更改發送數據存儲請求。定期保存,當玩家離開時、伺服器關閉時,以及在關鍵檢查點(如購買處理)時保存。選擇一個保持在請求限制內且短於任何會話鎖定過期的定期保存間隔;玩家數據和購買示例 使用 180 秒。

錯開重複請求

不要從每個伺服器在相同的時間表上啟動重複請求。在啟動固定頻率循環之前,為每個伺服器或玩家分配一個隨機的初始偏移量。對於不需要精確節奏的輪詢或協調循環,為每個間隔添加有界隨機抖動。這些模式在時間上分配請求,減少同步流量高峰。

重試瞬時故障

將請求包裝在 pcall() 中,並使用指數回退重試瞬時故障。為每個延遲添加隨機抖動,以便伺服器不會同時重試。限制延遲和嘗試次數,並且不要重試由無效請求或無法再提供有用結果的操作引起的錯誤。

按鍵順序處理數據存儲重試。較舊的請求在較新的請求成功後重試可能會覆蓋較新的數據。還要考慮結果未知的寫入:失敗的調用意味著伺服器未收到成功的響應,但後端可能已完成寫入。更多信息,請參見 數據存儲錯誤代碼和限制重試

偏好 UpdateAsync 而非 SetAsync

當寫入依賴於當前值或當多個伺服器可能寫入相同鍵時,偏好使用 UpdateAsync()UpdateAsync() 在寫入之前將最新值讀入您的回調,這減少了丟失更新的情況。SetAsync() 在不先讀取的情況下覆蓋鍵,如果兩個伺服器同時寫入,可能會導致不一致。

當您創建新鍵或替換不依賴於先前值的值時,使用 SetAsync()。有關這兩種方法的比較,請參見 Set vs update

分片熱鍵

每個鍵都有 讀取和寫入吞吐量限制。如果一個邏輯記錄在您減少不必要的請求後持續達到這些限制,則將其分片到確定性鍵中。從標識符中選擇一個穩定的分片,例如 User_{UserId}_Inventory_{ShardId},以便每個伺服器將相同的數據路由到相同的分片。

分片使維護一致性和執行未來遷移變得更加複雜。不要對適合一個鍵且保持在其吞吐量限制以下的數據進行分片。

建立操作工作流程

一起使用可用工具:

  1. 觀察。 使用 數據存儲可觀察性儀表板 來跟踪請求、響應狀態、吞吐量和存儲。為重要的數據存儲指標配置 自定義警報,以便您的團隊能夠對持續故障或意外增長做出反應。創作者中心通知還會讓您知道當存儲接近或超過限制時,並包括指導和鏈接到儀表板。
  2. 檢查。 使用 數據存儲管理器 檢查數據存儲、鍵、存儲使用情況和估計成本。如果體驗有超過 100 個數據存儲,數據存儲列表不會顯示大小和鍵計數。對於這些指標,使用 Open Cloud 或 數據存儲批處理器
  3. 修復。 對於單個記錄使用數據存儲管理器。對於可重複或大規模工作流程,使用 Open Cloud 數據存儲 API數據存儲批處理器
  4. 有意識地擴展。 首先減少不必要的存儲和請求。如果合法使用超過默認配額,請評估 擴展服務

Open Cloud 和遊戲伺服器共享體驗級請求預算。對操作性 Open Cloud 腳本進行速率限制,以免干擾實時流量。

管理數據生命周期

使用數據存儲版本,而不是為每個修訂創建新鍵。只有鍵的最新版本計入存儲使用情況,版本讓您檢查或恢復早期值。

對於臨時和快速變化的數據,使用 內存存儲。內存存儲數據會自動過期,並且不會增加持久數據存儲的存儲。

在測試結束時刪除測試數據,並刪除過期事件或退役功能的數據。在您標記數據存儲以供刪除後,會有 30 天的緩衝期,您可以在此期間恢復它。在這 30 天之後,Roblox 將永久刪除該數據存儲。更多信息,請參見 數據存儲管理器

設置被遺忘權處理

為遵循靜態數據存儲和鍵模式的玩家數據配置 自動化的被遺忘權 (RTBF) 處理。自動化 RTBF 是首選工作流程,因為 Roblox 在處理符合條件的請求時會應用您的刪除模板。

如果自動化 RTBF 不支持您的數據架構,請使用 被刪除權 webhook 來運行自定義刪除工作流程。驗證任一工作流程是否刪除所有匹配的玩家數據。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。