Các yêu cầu bạn thực hiện đến kho dữ liệu có thể thất bại do kết nối kém hoặc các vấn đề khác. Để xử lý lỗi và trả về thông điệp với mã lỗi, hãy bao bọc các chức năng kho dữ liệu trong pcall().
Một cuộc gọi ghi không thành công, chẳng hạn như UpdateAsync(), có nghĩa là máy chủ trò chơi không nhận được phản hồi thành công. Nó không luôn đảm bảo rằng việc ghi phía backend đã không xảy ra. Trong một số kịch bản lỗi, trạng thái ghi cuối cùng có thể không được biết đến bởi người gọi cho đến khi được xác minh với một lần đọc tiếp theo mà không có bộ nhớ đệm.
Tham khảo mã lỗi
| Mã lỗi | Tên lỗi | Thông điệp lỗi | Ghi chú | |
|---|---|---|---|---|
| 101 | KeyNameEmpty | Tên khóa không thể để trống. | Kiểm tra xem đầu vào khóa vào chức năng kho dữ liệu có phải là chuỗi rỗng không. | |
| 102 | KeyNameLimit | Tên khóa vượt quá giới hạn 50 ký tự. | Kiểm tra xem đầu vào khóa vào chức năng kho dữ liệu có vượt quá độ dài 50 không. | |
| 103 | ValueNotAllowed | Không thể cho phép X trong DataStore. | Chức năng cập nhật không hợp lệ đã trả về một giá trị thuộc loại X. | |
| 104 | CantStoreValue | Không thể lưu trữ X trong DataStore. | Chức năng cập nhật đã trả về một giá trị thuộc loại X không thể tuần tự hóa. | |
| 105 | ValueTooLarge | Giá trị tuần tự hóa vượt quá giới hạn X. | Nếu bạn đang đặt một giá trị với SetAsync() hoặc UpdateAsync(), chiều dài tuần tự hóa của giá trị không thể vượt quá kích thước X. Để kiểm tra chiều dài tuần tự hóa của dữ liệu, hãy sử dụng JSONEncode(). | |
| 106 | MaxValueInvalid | MaxValue phải là một số nguyên. | Nếu bạn đang truyền một giá trị tối đa cho GetSortedAsync() cho một OrderedDataStore, nó phải là một số nguyên. | |
| 106 | MinValueInvalid | MinValue phải là một số nguyên. | Nếu bạn đang truyền một giá trị tối thiểu cho GetSortedAsync() cho một OrderedDataStore, nó phải là một số nguyên. | |
| 106 | PageSizeGreater | PageSize phải nằm trong một khoảng đã được định nghĩa trước. | Giá trị trang tối thiểu cho một OrderedDataStore là 1. | |
| 106 | PageSizeLesser | PageSize phải nằm trong một khoảng đã được định nghĩa trước. | Giá trị trang tối đa cho một OrderedDataStore là 100. | |
| 107 | MinMaxOrderInvalid | MaxValue phải lớn hơn hoặc bằng MinValue. | Giá trị tối đa phải lớn hơn hoặc bằng giá trị tối thiểu cho GetSortedAsync(). | |
| 301 | GetAsyncThrottle | Yêu cầu GetAsync bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu GetAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 302 | SetAsyncThrottle | Yêu cầu SetAsync bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu SetAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 303 | IncreAsyncThrottle | Yêu cầu IncrementAsync bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu IncrementAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 304 | UpdateAsyncThrottle | Yêu cầu UpdateAsync bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu UpdateAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 304 | TransformThrottle | Yêu cầu UpdateAsync bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu UpdateAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 305 | GetSortedThrottle | Yêu cầu GetSorted bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu GetSortedAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 306 | RemoveAsyncThrottle | Yêu cầu RemoveAsync bị từ chối. Yêu cầu đã bị thắt chặt nhưng hàng đợi đã đầy. | Yêu cầu RemoveAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | |
| 401 | DataModelNoAccess | Yêu cầu thất bại. DataModel không thể truy cập khi trải nghiệm đang tắt. | DataModel chưa được khởi tạo vì trải nghiệm đang tắt. | |
| 402 | LuaWebSrvsNoAccess | Yêu cầu thất bại. LuaWebService không thể truy cập khi trải nghiệm đang tắt. | LuaWebService chưa được khởi tạo vì trải nghiệm đang tắt. | |
| 403 | StudioAccessToApisNotAllowed | Không thể ghi vào DataStore từ Studio vì quyền truy cập API không được kích hoạt. | Quyền truy cập API phải được kích hoạt để có thể sử dụng kho dữ liệu trong Studio. | |
| 404 | InternalError | OrderedDataStore không tồn tại. | OrderedDataStore liên kết với yêu cầu này không được tìm thấy. Điều này có thể là dấu hiệu của sự hỏng dữ liệu. Hãy thử lại sau. | |
| 501 | InternalError | Không thể phân tích phản hồi vì dữ liệu có thể bị hỏng. | Máy chủ không thể phân tích phản hồi cho yêu cầu của bạn. Điều này có thể là dấu hiệu của sự hỏng dữ liệu. Hãy thử lại sau. | |
| 502 | RequestRejected | Dịch vụ API đã từ chối yêu cầu với lỗi X. | Lỗi X xảy ra khi xử lý trên các máy chủ Roblox. Hãy thử lại sau. | |
| 503 | InternalError | Yêu cầu kho dữ liệu đã thành công nhưng khóa không được tìm thấy. | Khóa được yêu cầu không được tìm thấy trong kho dữ liệu. Điều này có thể là dấu hiệu của sự hỏng dữ liệu. Hãy thử lại sau. | |
| 504 | InternalError | Yêu cầu kho dữ liệu đã thành công nhưng phản hồi không được định dạng chính xác. | Máy chủ không thể phân tích phản hồi cho yêu cầu của bạn. Điều này có thể là dấu hiệu của sự hỏng dữ liệu. Hãy thử lại sau. | |
| 505 | InternalError | Yêu cầu OrderedDataStore đã thành công nhưng phản hồi không được định dạng chính xác. | Máy chủ không thể phân tích phản hồi cho yêu cầu OrderedDataStore của bạn. Điều này có thể là dấu hiệu của sự hỏng dữ liệu. Hãy thử lại sau. | |
| 509 | OperationNotAllowed | Các thao tác kho dữ liệu bị chặn trong khi chạy trên một RCC cá nhân để ngăn ngừa sự cố hỏng dữ liệu có thể xảy ra. | Các thao tác ghi vào kho dữ liệu bị chặn trên các kênh RCC riêng tư. | |
| 511 | AttributeSizeTooLarge | Kích thước thuộc tính siêu dữ liệu vượt quá giới hạn X. | Kích thước siêu dữ liệu tuần tự vượt quá giới hạn X. Giá trị X là động. Nếu kích thước thay đổi, giá trị cũng sẽ thay đổi. | |
| 512 | UserIdLimitExceeded | Kích thước UserID vượt quá giới hạn X. | Chiều dài của mảng ID người dùng do người dùng cung cấp vượt quá giới hạn X. | |
| 513 | AttributeFormatError | Định dạng thuộc tính userId không hợp lệ. | ID người dùng provided không phải là số. | |
| 513 | AttributeFormatError | Định dạng siêu dữ liệu thuộc tính không hợp lệ. | Siêu dữ liệu không phải là một bảng. | |
| GetVersionAsyncThrottle | Yêu cầu GetVersionAsync bị từ chối. Yêu cầu đã bị thắt chặt. | Yêu cầu GetVersionAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | ||
| GetVersionAtTimeAsyncThrottle | Yêu cầu GetVersionAtTimeAsync bị từ chối. Yêu cầu đã bị thắt chặt. | Yêu cầu GetVersionAtTimeAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | ||
| ListDataStoresAsyncThrottle | Yêu cầu ListDataStoresAsync bị từ chối. Yêu cầu đã bị thắt chặt. | Yêu cầu ListDataStoresAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | ||
| ListKeysAsyncThrottle | Yêu cầu ListKeysAsync bị từ chối. Yêu cầu đã bị thắt chặt. | Yêu cầu ListKeysAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | ||
| ListVersionsAsyncThrottle | Yêu cầu ListVersionsAsync bị từ chối. Yêu cầu đã bị thắt chặt. | Yêu cầu ListVersionsAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | ||
| RemoveVersionAsyncThrottle | Yêu cầu RemoveVersionAsync bị từ chối. Yêu cầu đã bị thắt chặt. | Yêu cầu RemoveVersionAsync() đã vượt quá kích thước hàng đợi tối đa và Roblox không thể xử lý các yêu cầu ở thông lượng hiện tại. | ||
| InvalidTimestamp | Dấu thời gian phải dương và không quá mười phút trong tương lai. | Dấu thời gian được cung cấp cho GetVersionAtTimeAsync() không hợp lệ. | ||
| StandardReadExperienceThrottled | Yêu cầu StandardRead đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), hoặc đọc của UpdateAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardRead. | ||
| StandardWriteExperienceThrottled | Yêu cầu StandardWrite đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến SetAsync(), IncrementAsync(), hoặc ghi của UpdateAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardWrite. | ||
| StandardListExperienceThrottled | Yêu cầu StandardList đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến ListKeysAsync(), ListVersionsAsync(), hoặc ListDataStoresAsync() trên các kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardList. | ||
| StandardRemoveExperienceThrottled | Yêu cầu StandardRemove đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến RemoveAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardRemove. | ||
| OrderedReadExperienceThrottled | Yêu cầu OrderedRead đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến GetAsync() hoặc đọc của UpdateAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedRead. | ||
| OrderedWriteExperienceThrottled | Yêu cầu OrderedWrite đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến SetAsync(), IncrementAsync(), hoặc ghi của UpdateAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedWrite. | ||
| OrderedListExperienceThrottled | Yêu cầu OrderedList đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến GetSortedAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedList. | ||
| OrderedRemoveExperienceThrottled | Yêu cầu OrderedRemove đã bị thắt chặt theo giới hạn trải nghiệm. | Một yêu cầu đến RemoveAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedRemove. | ||
| StandardReadGameServerThrottled | Yêu cầu StandardRead đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), hoặc đọc của UpdateAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi StandardRead. | ||
| StandardWriteGameServerThrottled | Yêu cầu StandardWrite đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến SetAsync(), IncrementAsync(), hoặc ghi của UpdateAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi StandardWrite. | ||
| StandardListGameServerThrottled | Yêu cầu StandardList đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến ListKeysAsync(), ListVersionsAsync(), hoặc ListDataStoresAsync() trên các kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi StandardList. | ||
| StandardRemoveGameServerThrottled | Yêu cầu StandardRemove đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến RemoveAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi StandardRemove. | ||
| OrderedReadGameServerThrottled | Yêu cầu OrderedRead đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến GetAsync() hoặc đọc của UpdateAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi OrderedRead. | ||
| OrderedWriteGameServerThrottled | Yêu cầu OrderedWrite đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến SetAsync(), IncrementAsync(), hoặc ghi của UpdateAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi OrderedWrite. | ||
| OrderedListGameServerThrottled | Yêu cầu OrderedList đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến GetSortedAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi OrderedList. | ||
| OrderedRemoveGameServerThrottled | Yêu cầu OrderedRemove đã bị thắt chặt theo giới hạn máy chủ trò chơi hoặc hàng đợi yêu cầu đã đầy. | Một yêu cầu đến RemoveAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ máy chủ trò chơi OrderedRemove. |
Mã lỗi máy chủ
| Tên lỗi | Thông điệp lỗi | Ghi chú |
|---|---|---|
| DatastoreDeleted | Kho dữ liệu đã bị xóa. | Một thao tác trên kho dữ liệu không thể diễn ra vì kho dữ liệu đã bị xóa trước đó. |
| DatastoreThrottled | Tỷ lệ yêu cầu vượt quá giới hạn tối đa cho datastore. | Quá nhiều yêu cầu đã được gửi đến một kho dữ liệu duy nhất. |
| InternalServerError | Đã xảy ra lỗi máy chủ nội bộ. | Lỗi thỉnh thoảng trên máy chủ Roblox. Hãy thử lại, tốt nhất là với thời gian chờ gia tăng (exponential backoff). |
| InvalidExclusiveStartKey | Khóa bắt đầu độc quyền được cung cấp không hợp lệ. | Khóa bắt đầu độc quyền (con trỏ) được cung cấp cho một thao tác danh sách như ListKeysAsync() không hợp lệ. |
| InvalidPlace | Nơi được cung cấp không hợp lệ. | Không có ID vũ trụ phù hợp cho địa điểm. Hãy thử lại sau. |
| InvalidTarget | Mục tiêu được cung cấp không hợp lệ. | Tên khóa kho dữ liệu được sắp xếp vượt quá giới hạn 50 ký tự. |
| InvalidUniverse | Vũ trụ được cung cấp không hợp lệ. | Không có ID địa điểm phù hợp cho vũ trụ. Hãy thử lại sau. |
| InvalidUserIds | ID người dùng được cung cấp có định dạng không hợp lệ. | Không thể phân tích ID người dùng. |
| KeyThrottled | Tỷ lệ yêu cầu vượt quá giới hạn tối đa cho khóa. | Tỷ lệ yêu cầu vượt quá tỷ lệ yêu cầu tối đa cho một khóa duy nhất. |
| KeyNotFound | Khóa được yêu cầu không tồn tại. | Khóa không tồn tại. |
| N/A | Không có trang nào để tiến tới. | Lỗi này xảy ra khi bạn gọi Pages:AdvanceToNextPageAsync() trên trang cuối cùng. |
| StandardReadExperienceThrottled | Tỷ lệ yêu cầu đọc tiêu chuẩn vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), hoặc đọc của UpdateAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardRead. |
| StandardWriteExperienceThrottled | Tỷ lệ yêu cầu viết tiêu chuẩn vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến SetAsync(), IncrementAsync(), hoặc ghi của UpdateAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardWrite. |
| StandardListExperienceThrottled | Tỷ lệ yêu cầu danh sách tiêu chuẩn vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến ListKeysAsync(), ListVersionsAsync(), hoặc ListDataStoresAsync() trên các kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardList. |
| StandardRemoveExperienceThrottled | Tỷ lệ yêu cầu xóa tiêu chuẩn vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến RemoveAsync() trên một kho dữ liệu tiêu chuẩn đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm StandardRemove. |
| OrderedReadExperienceThrottled | Tỷ lệ yêu cầu đọc sắp xếp vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến GetAsync() hoặc đọc của UpdateAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedRead. |
| OrderedWriteExperienceThrottled | Tỷ lệ yêu cầu viết sắp xếp vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến SetAsync(), IncrementAsync(), hoặc ghi của UpdateAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedWrite. |
| OrderedListExperienceThrottled | Tỷ lệ yêu cầu danh sách sắp xếp vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến GetSortedAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedList. |
| OrderedRemoveExperienceThrottled | Tỷ lệ yêu cầu xóa sắp xếp vượt quá giới hạn tối đa cho trải nghiệm. | Một yêu cầu đến RemoveAsync() trên một kho dữ liệu được sắp xếp đã vượt quá giới hạn tỷ lệ ở cấp độ trải nghiệm OrderedRemove. |
Giới hạn
Mô hình dữ liệu có giới hạn. Nếu một trải nghiệm vượt quá các giới hạn này, dịch vụ tự động thắt chặt việc sử dụng kho dữ liệu của trải nghiệm và gây ra các yêu cầu trong một trong những hàng đợi sau:
- Đặt
- Đặt theo thứ tự
- Lấy
- Lấy theo thứ tự
Các yêu cầu trong một hàng đợi được xử lý theo thứ tự mà chúng được nhận. Hàm được gọi tiếp tục dừng lại miễn là yêu cầu của nó vẫn đang trong hàng đợi. Nếu khóa kho dữ liệu tự nó bị thắt chặt, yêu cầu được đặt vào hàng đợi nhưng tạm thời bị bỏ qua.
Mỗi hàng đợi có giới hạn 30 yêu cầu. Khi giới hạn của một hàng đợi được đạt, các yêu cầu sẽ thất bại với mã lỗi trong khoảng 301-306, cho thấy rằng các yêu cầu đã bị từ chối hoàn toàn.
Giới hạn truy cập
Các kho dữ liệu chịu tác động của cả giới hạn cấp trải nghiệm và máy chủ. Các giới hạn ở cấp độ trải nghiệm được điều chỉnh theo tổng số người dùng đồng thời trong trải nghiệm, trong khi các giới hạn ở cấp độ máy chủ có thể cấu hình và được coi là công cụ cho người tạo.
Giới hạn trải nghiệm
Mỗi trải nghiệm được phép một số lượng yêu cầu kho dữ liệu nhất định dựa trên loại kho dữ liệu, loại yêu cầu và số người dùng đồng thời. Đối với mỗi loại kho dữ liệu và loại yêu cầu, giới hạn được chia sẻ giữa tất cả các chức năng đã được liệt kê.
Lưu ý rằng UpdateAsync() tiêu tốn từ cả ngân sách yêu cầu đọc và ghi. Một cuộc gọi duy nhất sẽ giảm cả hai giới hạn.
Kho dữ liệu tiêu chuẩn
| Loại yêu cầu | Chức năng | Số yêu cầu mỗi phút |
|---|---|---|
| Đọc | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 250 + người dùng đồng thời × 40 |
| Ghi | SetAsync() IncrementAsync() UpdateAsync() | 250 + người dùng đồng thời × 20 |
| Danh sách | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 10 + người dùng đồng thời × 2 |
| Xóa | RemoveAsync() | 100 + người dùng đồng thời × 40 |
Kho dữ liệu được sắp xếp
| Loại yêu cầu | Chức năng | Số yêu cầu mỗi phút |
|---|---|---|
| Đọc | GetAsync() UpdateAsync() | 250 + người dùng đồng thời × 40 |
| Ghi | SetAsync() IncrementAsync() UpdateAsync() | 250 + người dùng đồng thời × 20 |
| Danh sách | GetSortedAsync() | 100 + người dùng đồng thời × 2 |
| Xóa | RemoveAsync() | 100 + người dùng đồng thời × 40 |
Giới hạn máy chủ
Mỗi máy chủ có một giới hạn tỷ lệ có thể cấu hình cho mỗi loại yêu cầu, dựa trên số người chơi trong máy chủ đó. Các máy chủ nhận một đợt khởi động một lần bổ sung ngân sách yêu cầu khi chúng được tạo lần đầu. Sử dụng GetRequestBudgetForRequestType() để xác nhận số lượng yêu cầu kho dữ liệu mà máy chủ hiện tại có thể thực hiện tại bất kỳ thời điểm nào.
Các giới hạn này có thể cấu hình bởi người tạo bằng cách sử dụng SetRateLimitForRequestType() API. Sử dụng API này, một người tạo có thể cấu hình giới hạn tỷ lệ kho dữ liệu của riêng họ cho mỗi loại yêu cầu.
Các giới hạn tỷ lệ mặc định sau đây sẽ áp dụng nếu API không được gọi:
Kho dữ liệu tiêu chuẩn
| Loại yêu cầu | DataStoreRequestType Enum | Chức năng | Số yêu cầu mỗi phút |
|---|---|---|---|
| Đọc | StandardRead | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 60 + số người chơi × 40 |
| Ghi | StandardWrite | SetAsync() IncrementAsync() UpdateAsync() | 60 + số người chơi × 40 |
| Danh sách | StandardList | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 5 + số người chơi × 2 |
| Xóa | StandardRemove | RemoveAsync() | 60 + số người chơi × 40 |
| Xóa phiên bản (Không còn sử dụng) | RemoveVersionAsync | RemoveVersionAsync() | 5 + số người chơi × 2 |
Kho dữ liệu được sắp xếp
| Loại yêu cầu | DataStoreRequestType Enum | Chức năng | Số yêu cầu mỗi phút |
|---|---|---|---|
| Đọc | OrderedRead | GetAsync() UpdateAsync() | 60 + số người chơi × 40 |
| Ghi | OrderedWrite | SetAsync() IncrementAsync() UpdateAsync() | 30 + số người chơi × 5 |
| Danh sách | OrderedList | GetSortedAsync() | 5 + số người chơi × 2 |
| Xóa | OrderedRemove | RemoveAsync() | 30 + số người chơi × 5 |
Giới hạn dữ liệu
Các kho dữ liệu giới hạn lượng dữ liệu có thể được sử dụng cho mỗi mục nhập.
Tên kho dữ liệu, tên khóa, và phạm vi đều phải dưới một chiều dài ký tự nhất định. Sử dụng string.len() để kiểm tra chiều dài của chúng.
Dữ liệu (giá trị khóa) cũng được lưu trữ dưới dạng chuỗi, bất kể loại ban đầu của nó. Bạn có thể kiểm tra kích thước của dữ liệu với chức năng JSONEncode(), cái mà chuyển đổi dữ liệu Luau thành một bảng JSON đã tuần tự hóa.
| Thành phần | Số ký tự tối đa |
|---|---|
| Tên kho dữ liệu | 50 |
| Tên khóa | 50 |
| Phạm vi | 50 |
| Dữ liệu (giá trị khóa) | 4,194,304 trên mỗi khóa |
Giới hạn siêu dữ liệu
Giới hạn số ký tự trong siêu dữ liệu do người dùng xác định.
| Thành phần | Số ký tự tối đa |
|---|---|
| Tên khóa | 50 |
| Giá trị | 250 |
| Cặp khóa-giá trị | 300 |
Giới hạn thông lượng
Các giới hạn thông lượng từng khóa đảm bảo rằng hiệu năng được tối ưu trên các máy chủ Roblox. Mỗi giới hạn áp dụng cho từng khóa duy nhất trên tất cả các máy chủ trong một trải nghiệm và làm mới theo thời gian.
Roblox kiểm tra việc sử dụng ngân sách liên quan đến khóa trong 60 giây vừa qua. Nếu việc sử dụng, bao gồm yêu cầu hiện tại, nằm trong giới hạn thông lượng, yêu cầu được phê duyệt. Nếu việc sử dụng vượt quá giới hạn, yêu cầu sẽ bị từ chối.
| Loại yêu cầu | Giới hạn |
|---|---|
| Đọc | 25 MB mỗi phút |
| Ghi | 4 MB mỗi phút |
Ngoài các giới hạn thông lượng trên, Roblox tổ chức dữ liệu thành các phân vùng dựa trên một sơ đồ nội bộ. Do đó, khi máy chủ phía backend nhận được một khối lượng yêu cầu lớn đến cùng một kho dữ liệu, nó có thể dẫn đến việc bị thắt chặt thêm. Bất kể nguyên nhân, việc thắt chặt hiện rõ dưới dạng lỗi DatastoreThrottled hoặc KeyThrottled, tùy thuộc vào việc giới hạn thông lượng đã bị vượt quá cho một kho dữ liệu riêng lẻ hay một khóa. Những thông điệp lỗi này áp dụng cho cả kho dữ liệu được sắp xếp và tiêu chuẩn.
Giới hạn lưu trữ
Trong tương lai, để cung cấp một trải nghiệm lưu trữ có thể mở rộng và ổn định, các kho dữ liệu sẽ triển khai một giới hạn lưu trữ ở cấp độ trải nghiệm trên việc sử dụng lưu trữ của bạn.
Giới hạn này sẽ là tổng của một giới hạn cơ bản cho mỗi trải nghiệm của bạn và một giới hạn theo người dùng dựa trên số người dùng suốt đời trong trải nghiệm của bạn. Một người dùng suốt đời là bất kỳ người dùng nào đã tham gia vào trải nghiệm của bạn ít nhất một lần.
Giới hạn lưu trữ sẽ được tính bằng công thức Tổng giới hạn lưu trữ phiên bản mới nhất = 100 MB + 1 MB * số người dùng suốt đời.
Các khóa mà bạn đã xóa hoặc thay thế, ngay cả khi vẫn có thể truy cập thông qua các API phiên bản, không được tính vào việc sử dụng lưu trữ của trải nghiệm của bạn. Tuy nhiên, toàn bộ kho dữ liệu đã bị xóa thông qua phương thức Open Cloud DeleteDataStore vẫn tiếp tục được tính vào việc sử dụng lưu trữ của bạn trong suốt thời gian 30 ngày xử lý, cho đến khi chúng bị xóa vĩnh viễn.