Codici di errore e limiti del data store

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Le richieste che effettui ai data store possono fallire a causa di una scarsa connettività o altri problemi. Per gestire gli errori e restituire messaggi con un codice di errore, avvolgi le funzioni del data store in pcall().

Una chiamata di scrittura fallita, come UpdateAsync(), significa che il server di gioco non ha ricevuto una risposta positiva. Ciò non garantisce sempre che la scrittura nel backend non sia avvenuta. In alcuni scenari di errore, lo stato finale della scrittura può essere sconosciuto al chiamante finché non viene verificato con una lettura successiva senza cache.

Riferimento dei codici di errore

Codice di erroreNome erroreMessaggio erroreNote
101KeyNameEmptyIl nome della chiave non può essere vuoto.Controlla se l'input della chiave nella funzione del data store è una stringa vuota.
102KeyNameLimitIl nome della chiave supera il limite di 50 caratteri.Controlla se l'input della chiave nella funzione del data store supera la lunghezza di 50.
103ValueNotAllowedNon è possibile consentire X in DataStore.Una funzione di aggiornamento errata ha restituito un valore di tipo X.
104CantStoreValueImpossibile memorizzare X in DataStore.La funzione di aggiornamento ha restituito un valore di tipo X che non è stato serializzato.
105ValueTooLargeIl valore serializzato supera il limite di X.Se stai impostando un valore con SetAsync() o UpdateAsync(), la lunghezza serializzata del valore non può superare la dimensione X. Per controllare la lunghezza serializzata dei dati, usa JSONEncode().
106MaxValueInvalidMaxValue deve essere un intero.Se stai passando un valore massimo a GetSortedAsync() per un OrderedDataStore, deve essere un intero.
106MinValueInvalidMinValue deve essere un intero.Se stai passando un valore minimo a GetSortedAsync() per un OrderedDataStore, deve essere un intero.
106PageSizeGreaterPageSize deve essere all'interno di un intervallo predefinito.La dimensione minima della pagina per un OrderedDataStore è 1.
106PageSizeLesserPageSize deve essere all'interno di un intervallo predefinito.La dimensione massima della pagina per un OrderedDataStore è 100.
107MinMaxOrderInvalidMaxValue deve essere maggiore o uguale a MinValue.Il valore massimo deve essere maggiore o uguale al valore minimo per GetSortedAsync().
301GetAsyncThrottleRichiesta GetAsync scartata. La richiesta è stata limitata ma la coda era piena.La richiesta GetAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
302SetAsyncThrottleRichiesta SetAsync scartata. La richiesta è stata limitata ma la coda era piena.La richiesta SetAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
303IncreAsyncThrottleRichiesta IncrementAsync scartata. La richiesta è stata limitata ma la coda era piena.La richiesta IncrementAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
304UpdateAsyncThrottleRichiesta UpdateAsync scartata. La richiesta è stata limitata ma la coda era piena.La richiesta UpdateAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
304TransformThrottleRichiesta UpdateAsync scartata. La richiesta è stata limitata ma la coda era piena.La richiesta UpdateAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
305GetSortedThrottleRichiesta GetSorted scartata. La richiesta è stata limitata ma la coda era piena.La richiesta GetSortedAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
306RemoveAsyncThrottleRichiesta RemoveAsync scartata. La richiesta è stata limitata ma la coda era piena.La richiesta RemoveAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
401DataModelNoAccessRichiesta fallita. DataModel è inaccessibile mentre l'esperienza si sta chiudendo.DataModel non è inizializzato perché l'esperienza si sta chiudendo.
402LuaWebSrvsNoAccessRichiesta fallita. LuaWebService è inaccessibile mentre l'esperienza si sta chiudendo.LuaWebService non è inizializzato perché l'esperienza si sta chiudendo.
403StudioAccessToApisNotAllowedImpossibile scrivere nel DataStore da Studio perché l'accesso all'API non è abilitato.L'accesso all'API deve essere attivo per utilizzare i data store in Studio.
404InternalErrorOrderedDataStore non esiste.Il OrderedDataStore associato a questa richiesta non è stato trovato. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi.
501InternalErrorImpossibile analizzare la risposta perché i dati potrebbero essere danneggiati.Il server non è stato in grado di analizzare la risposta alla tua richiesta. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi.
502RequestRejectedI servizi API hanno rifiutato la richiesta con errore X.Errore X si è verificato durante l'elaborazione sui server Roblox. Riprova più tardi.
503InternalErrorLa richiesta del data store è stata completata con successo ma la chiave non è stata trovata.La chiave richiesta non è stata trovata nel data store. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi.
504InternalErrorLa richiesta del data store è stata completata con successo ma la risposta non era formattata correttamente.Il server non è stato in grado di analizzare la risposta alla tua richiesta. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi.
505InternalErrorLa richiesta dell'OrderedDataStore è stata completata con successo ma la risposta non era formattata correttamente.Il server non è stato in grado di analizzare la risposta alla tua richiesta OrderedDataStore. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi.
509OperationNotAllowedLe operazioni del data store sono bloccate mentre sono in esecuzione su un RCC personale per evitare possibili corruzioni dei dati.Le scritture nel data store sono bloccate sui canali RCC privati.
511AttributeSizeTooLargeLa dimensione dell'attributo dei metadati supera il limite di X.La dimensione dei metadati serializzati supera il limite di X. Il valore X è dinamico. Se la dimensione cambia, il valore cambia anche.
512UserIdLimitExceededLa dimensione UserID supera il limite di X.La lunghezza dell'array degli ID utente forniti dall'utente supera il limite di X.
513AttributeFormatErrorIl formato dell'attributo userId è invalido.L'ID utente fornito non è un numero.
513AttributeFormatErrorIl formato dei metadati dell'attributo è invalido.I metadati non sono una tabella.
GetVersionAsyncThrottleRichiesta GetVersionAsync scartata. La richiesta è stata limitata.La richiesta GetVersionAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
GetVersionAtTimeAsyncThrottleRichiesta GetVersionAtTimeAsync scartata. La richiesta è stata limitata.La richiesta GetVersionAtTimeAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
ListDataStoresAsyncThrottleRichiesta ListDataStoresAsync scartata. La richiesta è stata limitata.La richiesta ListDataStoresAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
ListKeysAsyncThrottleRichiesta ListKeysAsync scartata. La richiesta è stata limitata.La richiesta ListKeysAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
ListVersionsAsyncThrottleRichiesta ListVersionsAsync scartata. La richiesta è stata limitata.La richiesta ListVersionsAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
RemoveVersionAsyncThrottleRichiesta RemoveVersionAsync scartata. La richiesta è stata limitata.La richiesta RemoveVersionAsync() ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste con il throughput attuale.
InvalidTimestampIl timestamp deve essere positivo e non superiore ai dieci minuti nel futuro.Il timestamp fornito a GetVersionAtTimeAsync() non era valido.
StandardReadExperienceThrottledLa richiesta StandardRead è stata limitata dai limiti dell'esperienza.Una richiesta a GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), o la lettura di UpdateAsync() su un data store standard ha superato il limite di velocità a livello di esperienza StandardRead.
StandardWriteExperienceThrottledLa richiesta StandardWrite è stata limitata dai limiti dell'esperienza.Una richiesta a SetAsync(), IncrementAsync(), o la scrittura di UpdateAsync() su un data store standard ha superato il limite di velocità a livello di esperienza StandardWrite.
StandardListExperienceThrottledLa richiesta StandardList è stata limitata dai limiti dell'esperienza.Una richiesta a ListKeysAsync(), ListVersionsAsync(), o ListDataStoresAsync() su data store standard ha superato il limite di velocità a livello di esperienza StandardList.
StandardRemoveExperienceThrottledLa richiesta StandardRemove è stata limitata dai limiti dell'esperienza.Una richiesta a RemoveAsync() su un data store standard ha superato il limite di velocità a livello di esperienza StandardRemove.
OrderedReadExperienceThrottledLa richiesta OrderedRead è stata limitata dai limiti dell'esperienza.Una richiesta a GetAsync() o la lettura di UpdateAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedRead.
OrderedWriteExperienceThrottledLa richiesta OrderedWrite è stata limitata dai limiti dell'esperienza.Una richiesta a SetAsync(), IncrementAsync(), o la scrittura di UpdateAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedWrite.
OrderedListExperienceThrottledLa richiesta OrderedList è stata limitata dai limiti dell'esperienza.Una richiesta a GetSortedAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedList.
OrderedRemoveExperienceThrottledLa richiesta OrderedRemove è stata limitata dai limiti dell'esperienza.Una richiesta a RemoveAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedRemove.
StandardReadGameServerThrottledLa richiesta StandardRead è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), o la lettura di UpdateAsync() su un data store standard ha superato il limite di velocità a livello di server di gioco StandardRead.
StandardWriteGameServerThrottledLa richiesta StandardWrite è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a SetAsync(), IncrementAsync(), o la scrittura di UpdateAsync() su un data store standard ha superato il limite di velocità a livello di server di gioco StandardWrite.
StandardListGameServerThrottledLa richiesta StandardList è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a ListKeysAsync(), ListVersionsAsync(), o ListDataStoresAsync() su data store standard ha superato il limite di velocità a livello di server di gioco StandardList.
StandardRemoveGameServerThrottledLa richiesta StandardRemove è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a RemoveAsync() su un data store standard ha superato il limite di velocità a livello di server di gioco StandardRemove.
OrderedReadGameServerThrottledLa richiesta OrderedRead è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a GetAsync() o la lettura di UpdateAsync() su un data store ordinato ha superato il limite di velocità a livello di server di gioco OrderedRead.
OrderedWriteGameServerThrottledLa richiesta OrderedWrite è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a SetAsync(), IncrementAsync(), o la scrittura di UpdateAsync() su un data store ordinato ha superato il limite di velocità a livello di server di gioco OrderedWrite.
OrderedListGameServerThrottledLa richiesta OrderedList è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a GetSortedAsync() su un data store ordinato ha superato il limite di velocità a livello di server di gioco OrderedList.
OrderedRemoveGameServerThrottledLa richiesta OrderedRemove è stata limitata dai limiti del server di gioco o la coda delle richieste era piena.Una richiesta a RemoveAsync() su un data store ordinato ha superato il limite di velocità a livello di server di gioco OrderedRemove.

Codici di errore del server

Nome erroreMessaggio erroreNote
DatastoreDeletedIl data store è stato eliminato.Un'operazione sul data store non è potuta avvenire perché il data store era stato precedentemente eliminato.
DatastoreThrottledLa frequenza delle richieste supera il massimo consentito per il datastore.Troppo molte richieste sono state inviate a un singolo data store.
InternalServerErrorSi è verificato un errore interno del server.Errore occasionale sui server Roblox. Riprova, idealmente con un backoff esponenziale.
InvalidExclusiveStartKeyLa chiave di avvio esclusiva fornita non è valida.La chiave di avvio esclusiva (cursore) fornita a un'operazione di elenco come ListKeysAsync() non è valida.
InvalidPlaceIl posto fornito non è valido.Nessun ID di universo corrispondente per il posto. Riprova più tardi.
InvalidTargetIl target fornito non è valido.Il nome della chiave dello store ordinato supera il limite di 50 caratteri.
InvalidUniverseL'universo fornito non è valido.Nessun ID di luogo corrispondente per l'universo. Riprova più tardi.
InvalidUserIdsGli ID utente forniti hanno un formato non valido.Impossibile analizzare gli ID utente.
KeyThrottledLa frequenza delle richieste supera il massimo consentito per la chiave.La frequenza delle richieste supera il limite massimo consentito per una singola chiave.
KeyNotFoundLa chiave richiesta non esiste.La chiave non esiste.
N/ANessuna pagina da avanzare.Questo errore si verifica quando chiami Pages:AdvanceToNextPageAsync() nell'ultima pagina.
StandardReadExperienceThrottledIl tasso di richiesta di lettura standard supera il massimo consentito per l'esperienza.Una richiesta a GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), o la lettura di UpdateAsync() su un data store standard ha superato il limite di velocità a livello di esperienza StandardRead.
StandardWriteExperienceThrottledIl tasso di richiesta di scrittura standard supera il massimo consentito per l'esperienza.Una richiesta a SetAsync(), IncrementAsync(), o la scrittura di UpdateAsync() su un data store standard ha superato il limite di velocità a livello di esperienza StandardWrite.
StandardListExperienceThrottledIl tasso di richiesta di elenco standard supera il massimo consentito per l'esperienza.Una richiesta a ListKeysAsync(), ListVersionsAsync(), o ListDataStoresAsync() su data store standard ha superato il limite di velocità a livello di esperienza StandardList.
StandardRemoveExperienceThrottledIl tasso di richiesta di rimozione standard supera il massimo consentito per l'esperienza.Una richiesta a RemoveAsync() su un data store standard ha superato il limite di velocità a livello di esperienza StandardRemove.
OrderedReadExperienceThrottledIl tasso di richiesta di lettura ordinata supera il massimo consentito per l'esperienza.Una richiesta a GetAsync() o la lettura di UpdateAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedRead.
OrderedWriteExperienceThrottledIl tasso di richiesta di scrittura ordinata supera il massimo consentito per l'esperienza.Una richiesta a SetAsync(), IncrementAsync(), o la scrittura di UpdateAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedWrite.
OrderedListExperienceThrottledIl tasso di richiesta di elenco ordinato supera il massimo consentito per l'esperienza.Una richiesta a GetSortedAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedList.
OrderedRemoveExperienceThrottledIl tasso di richiesta di rimozione ordinata supera il massimo consentito per l'esperienza.Una richiesta a RemoveAsync() su un data store ordinato ha superato il limite di velocità a livello di esperienza OrderedRemove.

Limiti

I modelli di dati hanno limiti. Se un'esperienza supera questi limiti, il servizio limita automaticamente l'uso del data store dell'esperienza e fa sì che le richieste future vengano inserite in una delle seguenti code:

  • Imposta
  • Imposta ordinata
  • Ottieni
  • Ottieni ordinato

Le richieste in una coda vengono gestite nell'ordine in cui vengono ricevute. La funzione chiamata continua a sospendersi finché la sua richiesta è ancora in coda. Se la chiave del data store stessa è limitata, la richiesta viene inserita in una coda ma viene temporaneamente saltata.

Ogni coda ha un limite di 30 richieste. Quando il limite di una coda viene raggiunto, le richieste falliscono con un codice di errore nell'intervallo 301-306, indicando che le richieste sono state completamente scartate.

Limiti di accesso

I data store sono soggetti sia a limiti a livello di esperienza che del server. I limiti a livello di esperienza si adattano al numero totale di utenti simultanei nell'esperienza, mentre i limiti a livello di server sono configurabili e devono essere utilizzati come uno strumento dal creatore.

Limiti dell'esperienza

Ogni esperienza è autorizzata a un certo numero di richieste del data store in base al tipo di data store, tipo di richiesta e numero di utenti simultanei. Per ciascun tipo di data store e tipo di richiesta, il limite è condiviso tra tutte le funzioni elencate.

  • UpdateAsync() consuma sia dal budget delle richieste di lettura che da quello delle scritture. Una singola chiamata decreta entrambi i limiti.
  • Il server di gioco e Open Cloud condividono un budget; il traffico di Open Cloud può essere limitato dall'uso interno all'esperienza (e viceversa). Vedi Controllo dei limiti di velocità per ulteriori indicazioni.
Data store standard
Tipo di richiestaAPI del server di giocoAPI di Open CloudLimiti condivisi (richieste al minuto)
LetturaGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
Ottieni voce del data store300 + utentiConcurrenti × 40
ScritturaSetAsync()
IncrementAsync()
UpdateAsync()
Crea, aggiorna, incrementa voce del data store300 + utentiConcurrenti × 20
ElencoListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
Elenca data store, Elenca voci del data store, Elenca revisioni delle voci del data store300 + utentiConcurrenti × 2
RimuoviRemoveAsync()Elimina voce del data store, Elimina data store, Ripristina data store300 + utentiConcurrenti × 40
Data store ordinati
Tipo di richiestaAPI del server di giocoAPI di Open CloudLimiti condivisi (richieste al minuto)
LetturaGetAsync()
UpdateAsync()
Ottieni voce del data store ordinato300 + utentiConcurrenti × 40
ScritturaSetAsync()
IncrementAsync()
UpdateAsync()
Crea, aggiorna, incrementa voce del data store ordinato300 + utentiConcurrenti × 20
ElencoGetSortedAsync()Elenca voci del data store ordinato300 + utentiConcurrenti × 2
RimuoviRemoveAsync()Elimina voce del data store ordinato300 + utentiConcurrenti × 40
Controllo dei limiti di velocità

Poiché le richieste di Open Cloud e del server di gioco sono condivise, è importante controllare in modo indipendente quanto ciascuna può consumare dal budget.

Server di gioco

I singoli server hanno limiti incorporati, come descritto sopra. Usa una combinazione di SetRateLimitForRequestType() e GetRequestBudgetForRequestType() per mantenere un controllo dettagliato sul contributo dei singoli server al budget totale.

Open Cloud

Le richieste di Open Cloud richiedono una soluzione esterna di limitazione della velocità. Raccomandiamo uno dei seguenti approcci:

  • (Semplice) Aggiungi un breve timeout dopo ogni richiesta, specialmente se chiami la stessa API in un ciclo continuo. Imposta questo timeout uguale a 60 / (consumo desiderato del budget per minuto) secondi, come limite massimo. Nota che questo approccio non consente di inviare richieste in esplosioni.
  • (Robusto) Implementa un limitatore di velocità locale utilizzando la strategia del bucket a perdita.

I seguenti campioni di codice Node.js includono implementazioni di riferimento.

const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new Error('La variabile ambiente API_KEY non è impostata.');
}
const apiHeaderKey = 'x-api-key';
const universeId = '';
const dataStoreId = 'Inventory';
const baseUrl = 'https://apis.roblox.com/cloud/v2/';
// --- Configurazione della limitazione della velocità per operazione (richieste al minuto) ---
const LIST_RATE_PER_MIN = 60;
const GET_RATE_PER_MIN = 120;
const UPDATE_RATE_PER_MIN = 60;
// Limite superiore per il tempo per operazione: 60 / (richieste al minuto) secondi.
const LIST_INTERVAL_MS = (60 / LIST_RATE_PER_MIN) * 1000;
const GET_INTERVAL_MS = (60 / GET_RATE_PER_MIN) * 1000;
const UPDATE_INTERVAL_MS = (60 / UPDATE_RATE_PER_MIN) * 1000;
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
// Effettua la richiesta, quindi attende l'intervallo di questa operazione prima di restituire.
async function throttledFetch(url, options, intervalMs) {
const response = await fetch(url, options);
await sleep(intervalMs);
return response;
}
async function listEntries(universe, dataStore) {
const listPath = `universes/${universe}/data-stores/${dataStore}/entries`;
const url = baseUrl + listPath;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, LIST_INTERVAL_MS);
return response.json();
}
async function getEntry(path) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, GET_INTERVAL_MS);
return response.json();
}
async function updateEntry(path, payload) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
method: 'PATCH',
headers: {
[apiHeaderKey]: apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify(payload) // Il corpo deve essere una stringa
}, UPDATE_INTERVAL_MS);
return response;
}
(async () => {
try {
const entries = await listEntries(universeId, dataStoreId);
for (const entry of entries.dataStoreEntries) {
const path = entry.path;
console.log(`\nElaborazione voce: ${path}`);
const currentData = await getEntry(path);
currentData.value.currency += 10;
const payload = { value: currentData.value };
const updateResponse = await updateEntry(path, payload);
console.log(`Stato: ${updateResponse.status}`);
console.log(`Risposta: ${await updateResponse.text()}`);
}
} catch (error) {
console.error('Si è verificato un errore durante l\'esecuzione:', error);
}
})();

Limiti del server

Ogni server ha un limite di velocità configurabile per ciascun tipo di richiesta, basato sul numero di giocatori in quel server. I server ricevono un'esplosione di richiesta di budget aggiuntiva una tantum quando vengono creati per la prima volta. Usa GetRequestBudgetForRequestType() per confermare il numero di richieste del data store che il server corrente può effettuare in qualsiasi momento.

Questi limiti sono configurabili dal creatore utilizzando l'API SetRateLimitForRequestType(). Usando questa API, un creatore può configurare i propri limiti di velocità per i data store per ciascun tipo di richiesta.

I seguenti limiti di velocità predefiniti si applicano se l'API non viene chiamata:

Data store standard
Tipo di richiestaEnum DataStoreRequestTypeAPI del server di giocoRichieste al minuto
LetturaStandardReadGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
60 + numPlayers × 40
ScritturaStandardWriteSetAsync()
IncrementAsync()
UpdateAsync()
60 + numPlayers × 40
ElencoStandardListListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
5 + numPlayers × 2
RimozioneStandardRemoveRemoveAsync()60 + numPlayers × 40
RemoveVersion (Deprecato)RemoveVersionAsyncRemoveVersionAsync()5 + numPlayers × 2
Data store ordinati
Tipo di richiestaEnum DataStoreRequestTypeAPI del server di giocoRichieste al minuto
LetturaOrderedReadGetAsync()
UpdateAsync()
60 + numPlayers × 40
ScritturaOrderedWriteSetAsync()
IncrementAsync()
UpdateAsync()
30 + numPlayers × 5
ElencoOrderedListGetSortedAsync()5 + numPlayers × 2
RimozioneOrderedRemoveRemoveAsync()30 + numPlayers × 5

Limiti dei dati

I data store limitano la quantità di dati che possono essere utilizzati per voce.

Il nome del data store, il nome della chiave e l'ambito devono tutti essere sotto una certa lunghezza di caratteri. Usa string.len() per controllare la loro lunghezza.

I dati (valore della chiave) sono anche memorizzati come stringa, indipendentemente dal loro tipo iniziale. Puoi controllare la dimensione dei dati con la funzione JSONEncode(), che converte i dati Luau in una tabella JSON serializzata.

ComponenteNumero massimo di caratteri
Nome del data store50
Nome della chiave50
Ambito50
Dati (valore della chiave)4.194.304 per chiave

Limiti dei metadati

Limiti al numero di caratteri nei metadati definiti dall'utente.

ComponenteNumero massimo di caratteri
Nome della chiave50
Valore250
Coppie chiave-valore300

Limiti di throughput

I limiti di throughput per chiave garantiscono che le prestazioni siano ottimali sui server Roblox. Ogni limite si applica a ciascuna chiave su tutti i server in un'esperienza e si aggiorna nel tempo.

Roblox esamina l'uso delle quote associate alla chiave negli ultimi 60 secondi. Se l'uso, inclusa la richiesta attuale, è all'interno del limite di throughput, la richiesta viene approvata. Se l'uso supera il limite, la richiesta viene negata.

Tipo di richiestaAPI del server di giocoAPI di Open CloudLimite
LetturaGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
ListVersionsAsync()
UpdateAsync()
Ottieni voce del data store25 MB al minuto
ScritturaSetAsync()
IncrementAsync()
UpdateAsync()
RemoveAsync()
Crea, aggiorna, incrementa, rimuovi voce del data store4 MB al minuto

Oltre ai limiti di throughput sopra indicati, Roblox organizza i dati in partizioni in base a uno schema interno. Di conseguenza, quando il server backend riceve un alto volume di richieste allo stesso data store, possono verificarsi ulteriori limitazioni. Indipendentemente dalla causa, il throttling si manifesta come errori DatastoreThrottled o KeyThrottled, a seconda che il limite di throughput sia stato superato per un singolo data store o una chiave. Questi messaggi di errore si applicano sia ai data store ordinati che standard.

Limiti di archiviazione

Per mantenere stabile e scalabile l'archiviazione, i data store utilizzano un limite a livello di gioco sul tuo utilizzo di archiviazione.

Questo limite consiste in un'allocazione di base per ciascun gioco più un'allocazione aggiuntiva basata sul numero di utenti in vita. Un utente in vita è qualsiasi utente che ha partecipato al tuo gioco almeno una volta.

Il limite di archiviazione viene calcolato utilizzando la seguente formula Limite totale di archiviazione dell'ultima versione = 500 MB + 1 MB × numero di utenti in vita.

L'utilizzo di archiviazione viene misurato utilizzando la dimensione compressa dell'ultima versione di ciascuna chiave. I data store comprimono automaticamente i tuoi dati prima dell'archiviazione, quindi evita di pre-comprimerli tu stesso. La pre-compressione aggiunge un sovraccarico CPU non necessario e può ridurre l'efficacia della compressione integrata dei data store. Memorizzando dati non compressi, benefici automaticamente dei miglioramenti agli algoritmi di compressione di Roblox e delle ottimizzazioni basate su schemi future.

Solo l'ultima versione di ciascuna chiave conta verso il tuo utilizzo di archiviazione. Le chiavi eliminate e le versioni superate, pur essendo ancora accessibili tramite le API delle versioni durante il loro periodo di conservazione, non contano verso il tuo utilizzo di archiviazione. Tuttavia, i data store eliminati tramite il metodo Open Cloud DeleteDataStore continuano a contare verso l'utilizzo di archiviazione durante il loro periodo di elaborazione di eliminazione di 30 giorni, fino a quando non vengono rimossi definitivamente.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.