데이터 저장소에 대한 요청은 연결이 불안정하거나 다른 문제로 인해 실패할 수 있습니다. 오류를 처리하고 오류 코드와 함께 메시지를 반환하려면 데이터 저장소 함수를 pcall()로 래핑하십시오.
UpdateAsync()와 같은 실패한 쓰기 호출은 게임 서버가 성공적인 응답을 받지 못했음을 의미합니다. 이는 백엔드 쓰기가 발생하지 않았다는 것을 항상 보장하지는 않습니다. 일부 실패 시나리오에서는 최종 쓰기 상태가 후속 읽기를 통해 검증될 때까지 호출자에게 알 수 없습니다.
오류 코드 참조
| 오류 코드 | 오류 이름 | 오류 메시지 | 노트 | |
|---|---|---|---|---|
| 101 | KeyNameEmpty | 키 이름은 비어 있을 수 없습니다. | 데이터 저장소 함수에 입력된 키가 빈 문자열인지 확인하십시오. | |
| 102 | KeyNameLimit | 키 이름은 50자 제한을 초과합니다. | 데이터 저장소 함수에 입력된 키가 50자를 초과하는지 확인하십시오. | |
| 103 | ValueNotAllowed | DataStore에서 X를 허용할 수 없습니다. | 잘못된 업데이트 함수가 X 형식의 값을 반환했습니다. | |
| 104 | CantStoreValue | DataStore에 X를 저장할 수 없습니다. | 업데이트 함수가 직렬화되지 않은 X 형식의 값을 반환했습니다. | |
| 105 | ValueTooLarge | 직렬화된 값이 X 한계를 초과합니다. | SetAsync() 또는 UpdateAsync()를 사용하여 값을 설정할 경우 값의 직렬화된 길이는 X 크기를 초과할 수 없습니다. 데이터의 직렬화된 길이를 확인하려면 JSONEncode()를 사용하십시오. | |
| 106 | MaxValueInvalid | MaxValue는 정수여야 합니다. | GetSortedAsync()에 최대 값을 전달하는 경우 정수여야 합니다. | |
| 106 | MinValueInvalid | MinValue는 정수여야 합니다. | GetSortedAsync()에 최소 값을 전달하는 경우 정수여야 합니다. | |
| 106 | PageSizeGreater | PageSize는 미리 정의된 범위 내에 있어야 합니다. | OrderedDataStore의 최소 페이지 크기는 1입니다. | |
| 106 | PageSizeLesser | PageSize는 미리 정의된 범위 내에 있어야 합니다. | OrderedDataStore의 최대 페이지 크기는 100입니다. | |
| 107 | MinMaxOrderInvalid | MaxValue는 MinValue 이상이어야 합니다. | GetSortedAsync()의 경우 최대 값이 최소 값 이상이어야 합니다. | |
| 301 | GetAsyncThrottle | GetAsync 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | GetAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 302 | SetAsyncThrottle | SetAsync 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | SetAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 303 | IncreAsyncThrottle | IncrementAsync 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | IncrementAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 304 | UpdateAsyncThrottle | UpdateAsync 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | UpdateAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 304 | TransformThrottle | UpdateAsync 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | UpdateAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 305 | GetSortedThrottle | GetSorted 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | GetSortedAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 306 | RemoveAsyncThrottle | RemoveAsync 요청이 중단되었습니다. 요청이 제한되었지만 대기열이 가득 찼습니다. | RemoveAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | |
| 401 | DataModelNoAccess | 요청이 실패했습니다. DataModel에 접근할 수 없습니다. 경험이 종료되는 중입니다. | DataModel이 초기화되지 않았습니다. 경험이 종료되는 중입니다. | |
| 402 | LuaWebSrvsNoAccess | 요청이 실패했습니다. LuaWebService에 접근할 수 없습니다. 경험이 종료되는 중입니다. | LuaWebService가 초기화되지 않았습니다. 경험이 종료되는 중입니다. | |
| 403 | StudioAccessToApisNotAllowed | API 접근이 활성화되어 있지 않아 Studio에서 DataStore에 쓸 수 없습니다. | Studio에서 데이터 저장소를 사용하기 위해 API 접근이 활성화되어 있어야 합니다. | |
| 404 | InternalError | OrderedDataStore가 존재하지 않습니다. | 이 요청과 관련된 OrderedDataStore를 찾을 수 없었습니다. 이는 데이터 손상의 징표일 수 있습니다. 나중에 다시 시도하십시오. | |
| 501 | InternalError | 응답을 파싱할 수 없습니다. 데이터가 손상되었을 수 있습니다. | 서버가 요청에 대한 응답을 파싱할 수 없었습니다. 이는 데이터 손상의 징표일 수 있습니다. 나중에 다시 시도하십시오. | |
| 502 | RequestRejected | API 서비스가 오류 X로 요청을 거부했습니다. | Roblox 서버에서 처리하는 동안 오류 X가 발생했습니다. 나중에 다시 시도하십시오. | |
| 503 | InternalError | 데이터 저장소 요청이 성공적이었지만 키를 찾을 수 없습니다. | 요청한 키를 데이터 저장소에서 찾을 수 없습니다. 이는 데이터 손상의 징표일 수 있습니다. 나중에 다시 시도하십시오. | |
| 504 | InternalError | 데이터 저장소 요청이 성공적이었지만 응답이 올바르게 형식화되지 않았습니다. | 서버가 요청에 대한 응답을 파싱할 수 없었습니다. 이는 데이터 손상의 징표일 수 있습니다. 나중에 다시 시도하십시오. | |
| 505 | InternalError | OrderedDataStore 요청이 성공적이었지만 응답이 올바르게 형식화되지 않았습니다. | 서버가 OrderedDataStore 요청에 대한 응답을 파싱할 수 없었습니다. 이는 데이터 손상의 징표일 수 있습니다. 나중에 다시 시도하십시오. | |
| 509 | OperationNotAllowed | 데이터 저장소 작업이 개인 RCC에서 실행 중일 때 차단됩니다. 데이터 손상의 가능성을 방지하기 위함입니다. | 개인 RCC 채널에서는 데이터 저장소 쓰기가 차단됩니다. | |
| 511 | AttributeSizeTooLarge | 메타데이터 속성 크기가 X 한계를 초과합니다. | 직렬화된 메타데이터 크기가 X 한계를 초과합니다. 값 X는 동적입니다. 크기가 변경되면 값도 변경됩니다. | |
| 512 | UserIdLimitExceeded | UserID 크기가 X 한계를 초과합니다. | 사용자가 제공한 사용자 ID 배열의 길이가 X 한계를 초과합니다. | |
| 513 | AttributeFormatError | 속성 userId 형식이 유효하지 않습니다. | 제공된 사용자 ID가 숫자가 아닙니다. | |
| 513 | AttributeFormatError | 속성 메타데이터 형식이 유효하지 않습니다. | 메타데이터가 테이블이 아닙니다. | |
| GetVersionAsyncThrottle | GetVersionAsync 요청이 중단되었습니다. 요청이 제한되었습니다. | GetVersionAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | ||
| GetVersionAtTimeAsyncThrottle | GetVersionAtTimeAsync 요청이 중단되었습니다. 요청이 제한되었습니다. | GetVersionAtTimeAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | ||
| ListDataStoresAsyncThrottle | ListDataStoresAsync 요청이 중단되었습니다. 요청이 제한되었습니다. | ListDataStoresAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | ||
| ListKeysAsyncThrottle | ListKeysAsync 요청이 중단되었습니다. 요청이 제한되었습니다. | ListKeysAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | ||
| ListVersionsAsyncThrottle | ListVersionsAsync 요청이 중단되었습니다. 요청이 제한되었습니다. | ListVersionsAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | ||
| RemoveVersionAsyncThrottle | RemoveVersionAsync 요청이 중단되었습니다. 요청이 제한되었습니다. | RemoveVersionAsync() 요청이 최대 대기열 크기를 초과했으며 Roblox가 현재 처리량에서 요청을 처리할 수 없습니다. | ||
| InvalidTimestamp | 타임스탬프는 긍정적이어야 하며, 미래의 10분을 초과해서는 안 됩니다. | GetVersionAtTimeAsync()에 제공된 타임스탬프가 유효하지 않았습니다. | ||
| StandardReadExperienceThrottled | StandardRead 요청이 경험 한계로 인해 제한되었습니다. | GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), 또는 표준 데이터 저장소에서의 UpdateAsync() 읽기가 StandardRead 경험 수준 요율 한계를 초과했습니다. | ||
| StandardWriteExperienceThrottled | StandardWrite 요청이 경험 한계로 인해 제한되었습니다. | SetAsync(), IncrementAsync(), 또는 표준 데이터 저장소에서의 UpdateAsync() 쓰기가 StandardWrite 경험 수준 요율 한계를 초과했습니다. | ||
| StandardListExperienceThrottled | StandardList 요청이 경험 한계로 인해 제한되었습니다. | ListKeysAsync(), ListVersionsAsync(), 또는 표준 데이터 저장소에서의 ListDataStoresAsync()에 대한 요청이 StandardList 경험 수준 요율 한계를 초과했습니다. | ||
| StandardRemoveExperienceThrottled | StandardRemove 요청이 경험 한계로 인해 제한되었습니다. | RemoveAsync()에 대한 표준 데이터 저장소 요청이 StandardRemove 경험 수준 요율 한계를 초과했습니다. | ||
| OrderedReadExperienceThrottled | OrderedRead 요청이 경험 한계로 인해 제한되었습니다. | GetAsync() 또는 주문형 데이터 저장소에서의 UpdateAsync() 읽기에 대한 요청이 OrderedRead 경험 수준 요율 한계를 초과했습니다. | ||
| OrderedWriteExperienceThrottled | OrderedWrite 요청이 경험 한계로 인해 제한되었습니다. | SetAsync(), IncrementAsync(), 또는 주문형 데이터 저장소에서의 UpdateAsync() 쓰기에 대한 요청이 OrderedWrite 경험 수준 요율 한계를 초과했습니다. | ||
| OrderedListExperienceThrottled | OrderedList 요청이 경험 한계로 인해 제한되었습니다. | GetSortedAsync()에 대한 요청이 주문형 데이터 저장소에서 OrderedList 경험 수준 요율 한계를 초과했습니다. | ||
| OrderedRemoveExperienceThrottled | OrderedRemove 요청이 경험 한계로 인해 제한되었습니다. | RemoveAsync()에 대한 요청이 주문형 데이터 저장소에서 OrderedRemove 경험 수준 요율 한계를 초과했습니다. | ||
| StandardReadGameServerThrottled | StandardRead 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), 또는 표준 데이터 저장소에서 UpdateAsync() 읽기가 StandardRead 게임 서버 수준 요율 한계를 초과했습니다. | ||
| StandardWriteGameServerThrottled | StandardWrite 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | SetAsync(), IncrementAsync(), 또는 표준 데이터 저장소에서의 UpdateAsync() 쓰기가 StandardWrite 게임 서버 수준 요율 한계를 초과했습니다. | ||
| StandardListGameServerThrottled | StandardList 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | ListKeysAsync(), ListVersionsAsync(), 또는 표준 데이터 저장소에서의 ListDataStoresAsync() 요청이 StandardList 게임 서버 수준 요율 한계를 초과했습니다. | ||
| StandardRemoveGameServerThrottled | StandardRemove 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | RemoveAsync()에 대한 요청이 표준 데이터 저장소에서 StandardRemove 게임 서버 수준 요율 한계를 초과했습니다. | ||
| OrderedReadGameServerThrottled | OrderedRead 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | GetAsync() 또는 주문형 데이터 저장소에서의 UpdateAsync() 읽기에 대한 요청이 OrderedRead 게임 서버 수준 요율 한계를 초과했습니다. | ||
| OrderedWriteGameServerThrottled | OrderedWrite 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | SetAsync(), IncrementAsync(), 또는 주문형 데이터 저장소에서의 UpdateAsync() 쓰기에 대한 요청이 OrderedWrite 게임 서버 수준 요율 한계를 초과했습니다. | ||
| OrderedListGameServerThrottled | OrderedList 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | GetSortedAsync()에 대한 요청이 주문형 데이터 저장소에서 OrderedList 게임 서버 수준 요율 한계를 초과했습니다. | ||
| OrderedRemoveGameServerThrottled | OrderedRemove 요청이 게임 서버 한계 또는 요청 대기열이 가득 차서 제한되었습니다. | RemoveAsync()에 대한 요청이 주문형 데이터 저장소에서 OrderedRemove 게임 서버 수준 요율 한계를 초과했습니다. |
서버 오류 코드
| 오류 이름 | 오류 메시지 | 노트 |
|---|---|---|
| DatastoreDeleted | 데이터 저장소가 삭제되었습니다. | 데이터 저장소가 이전에 삭제되었기 때문에 데이터 저장소에 대한 작업을 수행할 수 없어었습니다. |
| DatastoreThrottled | 요청 속도가 datastore의 허용 최대치를 초과합니다. | 단일 데이터 저장소에 너무 많은 요청이 전송되었습니다. |
| InternalServerError | 내부 서버 오류가 발생했습니다. | Roblox 서버에서 발생하는 간헐적인 오류입니다. 다시 시도하십시오. 이상적으로는 지수 백오프를 사용하십시오. |
| InvalidExclusiveStartKey | 제공된 배타적 시작 키가 유효하지 않습니다. | ListKeysAsync()와 같은 목록 작업에 제공된 배타적 시작 키(커서)가 유효하지 않습니다. |
| InvalidPlace | 제공된 장소가 유효하지 않습니다. | 장소와 일치하는 유니버스 ID가 없습니다. 나중에 다시 시도하십시오. |
| InvalidTarget | 제공된 대상을 유효하지 않습니다. | 주문형 데이터 저장소 키 이름이 50자 제한을 초과합니다. |
| InvalidUniverse | 제공된 유니버스가 유효하지 않습니다. | 유니버스와 일치하는 장소 ID가 없습니다. 나중에 다시 시도하십시오. |
| InvalidUserIds | 제공된 사용자 ID의 형식이 유효하지 않습니다. | 사용자 ID를 파싱하지 못했습니다. |
| KeyThrottled | 요청 속도가 키의 허용 최대치를 초과합니다. | 단일 키에 대해 허용된 요청 비율을 초과했습니다. |
| KeyNotFound | 요청한 키가 존재하지 않습니다. | 키가 존재하지 않습니다. |
| N/A | 진행할 페이지가 없습니다. | 마지막 페이지에서 Pages:AdvanceToNextPageAsync()을 호출할 때 발생하는 오류입니다. |
| StandardReadExperienceThrottled | 표준 읽기 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), 또는 표준 데이터 저장소에서의 UpdateAsync() 읽기가 StandardRead 경험 수준 요율 한계를 초과했습니다. |
| StandardWriteExperienceThrottled | 표준 쓰기 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | SetAsync(), IncrementAsync(), 또는 표준 데이터 저장소에서의 UpdateAsync() 쓰기가 StandardWrite 경험 수준 요율 한계를 초과했습니다. |
| StandardListExperienceThrottled | 표준 목록 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | ListKeysAsync(), ListVersionsAsync(), 또는 표준 데이터 저장소에서의 ListDataStoresAsync() 요청이 StandardList 경험 수준 요율 한계를 초과했습니다. |
| StandardRemoveExperienceThrottled | 표준 제거 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | RemoveAsync()에 대한 표준 데이터 저장소 요청이 StandardRemove 경험 수준 요율 한계를 초과했습니다. |
| OrderedReadExperienceThrottled | 주문형 읽기 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | GetAsync() 또는 UpdateAsync()에서의 주문형 읽기 요청이 OrderedRead 경험 수준 요율 한계를 초과했습니다. |
| OrderedWriteExperienceThrottled | 주문형 쓰기 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | SetAsync(), IncrementAsync(), 또는 주문형 데이터 저장소에서의 UpdateAsync() 쓰기가 OrderedWrite 경험 수준 요율 한계를 초과했습니다. |
| OrderedListExperienceThrottled | 주문형 목록 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | GetSortedAsync()에 대한 요청이 주문형 데이터 저장소에서 OrderedList 경험 수준 요율 한계를 초과했습니다. |
| OrderedRemoveExperienceThrottled | 주문형 제거 요청 속도가 경험에 대한 허용 최대치를 초과합니다. | RemoveAsync()에 대한 요청이 주문형 데이터 저장소에서 OrderedRemove 경험 수준 요율 한계를 초과했습니다. |
한계
데이터 모델에는 한계가 있습니다. 경험이 이러한 한계를 초과하면 서비스는 경험의 데이터 저장소 사용을 자동으로 제한하고 향후 요청을 다음 대기열 중 하나에 배치합니다:
- 설정
- 주문형 설정
- 가져오기
- 주문형 가져오기
대기열의 요청은 수신된 순서대로 처리됩니다. 호출된 함수는 요청이 대기열에 있는 동안 계속해서 대기합니다. 데이터 저장소 키 자체가 제한된 경우 요청은 대기열에 배치되지만 일시적으로 건너뛰어집니다.
각 대기열에는 30 요청의 한계가 있습니다. 대기열의 한계에 도달하면 요청은 301-306 범위의 오류 코드와 함께 실패하며 요청이 완전히 중단되었다는 것을 나타냅니다.
접근 한계
데이터 저장소는 경험 및 서버 수준 한계의 적용을 받습니다. 경험 수준의 한계는 경험 전역에서 총 동시 사용자 수에 따라 확대되고, 서버 수준의 한계는 구성 가능하며 생성자가 도구로 사용할 수 있도록 설계되었습니다.
경험 한계
각 경험은 데이터 저장소 유형, 요청 유형 및 동시 사용자 수에 따라 특정 수의 데이터 저장소 요청을 허용받습니다. 각 데이터 저장소 유형 및 요청 유형에 대해 한계는 나열된 모든 함수 간에 공유됩니다.
UpdateAsync()는 읽기 및 쓰기 요청 예산에서 모두 사용됩니다. 단일 호출이 두 한계를 모두 감소시킵니다.
표준 데이터 저장소
| 요청 유형 | 함수 | 분당 요청 수 |
|---|---|---|
| 읽기 | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 250 + 동시 사용자 × 40 |
| 쓰기 | SetAsync() IncrementAsync() UpdateAsync() | 250 + 동시 사용자 × 20 |
| 목록 | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 10 + 동시 사용자 × 2 |
| 제거 | RemoveAsync() | 100 + 동시 사용자 × 40 |
주문형 데이터 저장소
| 요청 유형 | 함수 | 분당 요청 수 |
|---|---|---|
| 읽기 | GetAsync() UpdateAsync() | 250 + 동시 사용자 × 40 |
| 쓰기 | SetAsync() IncrementAsync() UpdateAsync() | 250 + 동시 사용자 × 20 |
| 목록 | GetSortedAsync() | 100 + 동시 사용자 × 2 |
| 제거 | RemoveAsync() | 100 + 동시 사용자 × 40 |
서버 한계
각 서버는 해당 서버의 플레이어 수에 따라 각 요청 유형에 대한 구성 가능한 속도 제한이 있습니다. 서버는 처음 생성될 때 추가 요청 예산의 일회성 시작 급증을 받습니다. GetRequestBudgetForRequestType()을 사용하여 현재 서버가 특정 시간에 수행할 수 있는 데이터 저장소 요청 수를 확인하십시오.
이 한계는 생성자가 SetRateLimitForRequestType() API를 사용하여 구성할 수 있습니다. 이 API를 사용하면 생성자가 각 요청 유형에 대한 데이터 저장소 속도 제한을 구성할 수 있습니다.
API가 호출되지 않으면 다음 기본 속도 제한이 적용됩니다:
표준 데이터 저장소
| 요청 유형 | DataStoreRequestType 열거형 | 함수 | 분당 요청 수 |
|---|---|---|---|
| 읽기 | StandardRead | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 60 + numPlayers × 40 |
| 쓰기 | StandardWrite | SetAsync() IncrementAsync() UpdateAsync() | 60 + numPlayers × 40 |
| 목록 | StandardList | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 5 + numPlayers × 2 |
| 제거 | StandardRemove | RemoveAsync() | 60 + numPlayers × 40 |
| RemoveVersion (사용 중단) | RemoveVersionAsync | RemoveVersionAsync() | 5 + numPlayers × 2 |
주문형 데이터 저장소
| 요청 유형 | DataStoreRequestType 열거형 | 함수 | 분당 요청 수 |
|---|---|---|---|
| 읽기 | OrderedRead | GetAsync() UpdateAsync() | 60 + numPlayers × 40 |
| 쓰기 | OrderedWrite | SetAsync() IncrementAsync() UpdateAsync() | 30 + numPlayers × 5 |
| 목록 | OrderedList | GetSortedAsync() | 5 + numPlayers × 2 |
| 제거 | OrderedRemove | RemoveAsync() | 30 + numPlayers × 5 |
데이터 한계
데이터 저장소는 각 항목당 얼마나 많은 데이터를 사용할 수 있는지 제한합니다.
데이터 저장소 이름, 키 이름 및 범위는 모두 특정 문자 길이 이하여야 합니다. string.len()을 사용하여 길이를 확인하십시오.
데이터(키 값) 또한 초기 유형에 관계없이 문자열로 저장됩니다. JSONEncode() 함수를 사용하여 데이터를 확인할 수 있으며, 이 함수는 Luau 데이터를 직렬화된 JSON 테이블로 변환합니다.
| 구성 요소 | 최대 문자 수 |
|---|---|
| 데이터 저장소 이름 | 50 |
| 키 이름 | 50 |
| 범위 | 50 |
| 데이터 (키 값) | 키당 4,194,304 |
메타데이터 한계
사용자가 정의한 메타데이터의 문자 수에 대한 제한입니다.
| 구성 요소 | 최대 문자 수 |
|---|---|
| 키 이름 | 50 |
| 값 | 250 |
| 키-값 쌍 | 300 |
처리량 한계
키당 처리량 한계는 Roblox 서버에서 성능이 최적화되도록 보장합니다. 각 한계는 경험의 모든 서버에 걸쳐 있는 모든 단일 키에 적용되며 시간이 지남에 따라 새로 고쳐집니다.
Roblox는 마지막 60초 동안 키와 관련된 할당량 사용량을 검사합니다. 사용량이 현재 요청을 포함하여 처리량 한계 이내일 경우 요청이 승인됩니다. 사용량이 한계를 초과하면 요청이 거부됩니다.
| 요청 유형 | 한계 |
|---|---|
| 읽기 | 분당 25MB |
| 쓰기 | 분당 4MB |
위의 처리량 한계 외에도 Roblox는 내부 스키마에 따라 데이터를 파티션으로 정리합니다. 따라서 백엔드 서버가 동일한 데이터 저장소에 대해 높은 볼륨의 요청을 수신할 때 추가 제한이 발생할 수 있습니다. 원인에 관계없이 제한은 DatastoreThrottled 또는 KeyThrottled 오류로 나타납니다. 이는 처리량 한계가 단일 데이터 저장소 또는 키에 대해 초과되었는지에 따라 다릅니다. 이러한 오류 메시지는 주문형 데이터 저장소와 표준 데이터 저장소 모두에 적용됩니다.
저장소 한계
앞으로 масштаб 가능한 안정적인 저장소 경험을 제공하기 위해 데이터 저장소는 사용자 저장소 사용에 대한 경험 수준 저장소 한계를 구현할 것입니다.
이 한계는 각 경험에 대한 기본 한계와 경험에서의 평생 사용자 수를 기반으로 한 사용자당 한계의 합계입니다. 평생 사용자는 해당 경험에 최소 한 번 이상 참여한 모든 사용자를 의미합니다.
저장소 한계는 아래 공식을 사용하여 계산됩니다: 총 최신 버전 저장소 한계 = 100 MB + 1 MB * 평생 사용자 수.
삭제하거나 교체한 키는, 버전 API를 통해 여전히 접근 가능하더라도, 귀하의 경험의 저장소 사용량에 포함되지 않습니다. 하지만, Open Cloud의 DeleteDataStore 메서드를 통해 삭제된 전체 데이터 저장소는 그들의 30일 처리 기간 동안 귀하의 저장소 사용량에 계속 포함됩니다.