Le richieste che effettui ai data store possono fallire a causa di una connessione scadente o di 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. Non garantisce sempre che la scrittura sul backend non sia avvenuta. In alcuni scenari di errore, lo stato finale della scrittura potrebbe essere sconosciuto per il chiamante fino a quando non viene verificato con una lettura successiva senza cache.
Riferimento ai codici di errore
| Codice di errore | Nome errore | Messaggio di errore | Note | |
|---|---|---|---|---|
| 101 | KeyNameEmpty | Il nome della chiave non può essere vuoto. | Controlla se la chiave inserita nella funzione del data store è una stringa vuota. | |
| 102 | KeyNameLimit | Il nome della chiave supera il limite di 50 caratteri. | Controlla se la chiave inserita nella funzione del data store supera una lunghezza di 50. | |
| 103 | ValueNotAllowed | Non è possibile consentire X in DataStore. | Una funzione di aggiornamento errata ha restituito un valore di tipo X. | |
| 104 | CantStoreValue | Non è possibile memorizzare X in DataStore. | La funzione di aggiornamento ha restituito un valore di tipo X che non è stato serializzato. | |
| 105 | ValueTooLarge | Il 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, utilizza JSONEncode(). | |
| 106 | MaxValueInvalid | MaxValue deve essere un intero. | Se stai passando un valore massimo a GetSortedAsync() per un OrderedDataStore, deve essere un intero. | |
| 106 | MinValueInvalid | MinValue deve essere un intero. | Se stai passando un valore minimo a GetSortedAsync() per un OrderedDataStore, deve essere un intero. | |
| 106 | PageSizeGreater | PageSize deve rientrare in un intervallo predefinito. | La dimensione minima della pagina per un OrderedDataStore è 1. | |
| 106 | PageSizeLesser | PageSize deve rientrare in un intervallo predefinito. | La dimensione massima della pagina per un OrderedDataStore è 100. | |
| 107 | MinMaxOrderInvalid | MaxValue deve essere maggiore o uguale a MinValue. | Il valore massimo deve essere maggiore o uguale al valore minimo per GetSortedAsync(). | |
| 301 | GetAsyncThrottle | Richiesta 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 al throughput attuale. | |
| 302 | SetAsyncThrottle | Richiesta 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 al throughput attuale. | |
| 303 | IncreAsyncThrottle | Richiesta 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 al throughput attuale. | |
| 304 | UpdateAsyncThrottle | Richiesta 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 al throughput attuale. | |
| 304 | TransformThrottle | Richiesta 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 al throughput attuale. | |
| 305 | GetSortedThrottle | Richiesta 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 al throughput attuale. | |
| 306 | RemoveAsyncThrottle | Richiesta 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 al throughput attuale. | |
| 401 | DataModelNoAccess | Richiesta fallita. DataModel è inaccessibile mentre l'esperienza è in fase di chiusura. | DataModel non è inizializzato perché l'esperienza è in fase di chiusura. | |
| 402 | LuaWebSrvsNoAccess | Richiesta fallita. LuaWebService è inaccessibile mentre l'esperienza è in fase di chiusura. | LuaWebService non è inizializzato perché l'esperienza è in fase di chiusura. | |
| 403 | StudioAccessToApisNotAllowed | Non è possibile scrivere su DataStore da Studio perché l'accesso all'API non è attivato. | L'accesso all'API deve essere attivo per utilizzare i data store in Studio. | |
| 404 | InternalError | OrderedDataStore non esiste. | Il OrderedDataStore associato a questa richiesta non è stato trovato. Questo potrebbe essere un segnale di corruzione dei dati. Riprova più tardi. | |
| 501 | InternalError | Impossibile 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 segnale di corruzione dei dati. Riprova più tardi. | |
| 502 | RequestRejected | I servizi API hanno rifiutato la richiesta con errore X. | Errore X si è verificato durante l'elaborazione sui server Roblox. Riprova più tardi. | |
| 503 | InternalError | La richiesta al 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 segnale di corruzione dei dati. Riprova più tardi. | |
| 504 | InternalError | La richiesta al 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 segnale di corruzione dei dati. Riprova più tardi. | |
| 505 | InternalError | La richiesta 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 di OrderedDataStore. Questo potrebbe essere un segnale di corruzione dei dati. Riprova più tardi. | |
| 509 | OperationNotAllowed | Le operazioni del data store sono bloccate mentre si esegue su un RCC personale per prevenire possibili corruzioni dei dati. | Le scritture del data store sono bloccate su canali RCC privati. | |
| 511 | AttributeSizeTooLarge | La 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, anche il valore cambia. | |
| 512 | UserIdLimitExceeded | La dimensione di UserID supera il limite di X. | La lunghezza dell'array degli ID utente forniti dall'utente supera il limite di X. | |
| 513 | AttributeFormatError | Il formato dell'attributo userId non è valido. | L'ID utente fornito non è un numero. | |
| 513 | AttributeFormatError | Il formato dei metadati dell'attributo non è valido. | I metadati non sono una tabella. | |
| GetVersionAsyncThrottle | Richiesta 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 al throughput attuale. | ||
| GetVersionAtTimeAsyncThrottle | Richiesta 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 al throughput attuale. | ||
| ListDataStoresAsyncThrottle | Richiesta 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 al throughput attuale. | ||
| ListKeysAsyncThrottle | Richiesta 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 al throughput attuale. | ||
| ListVersionsAsyncThrottle | Richiesta 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 al throughput attuale. | ||
| RemoveVersionAsyncThrottle | Richiesta 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 al throughput attuale. | ||
| InvalidTimestamp | Il timestamp deve essere positivo e non superiore a dieci minuti nel futuro. | Il timestamp fornito a GetVersionAtTimeAsync() non era valido. | ||
| StandardReadExperienceThrottled | La 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. | ||
| StandardWriteExperienceThrottled | La 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. | ||
| StandardListExperienceThrottled | La 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. | ||
| StandardRemoveExperienceThrottled | La 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. | ||
| OrderedReadExperienceThrottled | La 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. | ||
| OrderedWriteExperienceThrottled | La 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. | ||
| OrderedListExperienceThrottled | La 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. | ||
| OrderedRemoveExperienceThrottled | La 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. | ||
| StandardReadGameServerThrottled | La 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. | ||
| StandardWriteGameServerThrottled | La 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. | ||
| StandardListGameServerThrottled | La 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. | ||
| StandardRemoveGameServerThrottled | La 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. | ||
| OrderedReadGameServerThrottled | La 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. | ||
| OrderedWriteGameServerThrottled | La 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. | ||
| OrderedListGameServerThrottled | La 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. | ||
| OrderedRemoveGameServerThrottled | La 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 errore | Messaggio di errore | Note |
|---|---|---|
| DatastoreDeleted | Il data store è stato eliminato. | Un'operazione sul data store non poteva avvenire perché il data store era stato precedentemente eliminato. |
| DatastoreThrottled | Il tasso di richiesta supera il massimo consentito per il datastore. | Troppi richieste sono state inviate a un singolo data store. |
| InternalServerError | Si è verificato un errore interno del server. | Errore occasionale sui server Roblox. Riprova, idealmente con un'esponenziale retrocessione. |
| InvalidExclusiveStartKey | La chiave di partenza esclusiva fornita non è valida. | La chiave di partenza esclusiva (cursore) fornita a un'operazione di elenco come ListKeysAsync() non è valida. |
| InvalidPlace | Il posto fornito non è valido. | Nessun ID di universo corrispondente per il posto. Riprova più tardi. |
| InvalidTarget | Il target fornito non è valido. | Il nome della chiave del data store ordinato supera il limite di 50 caratteri. |
| InvalidUniverse | L'universo fornito non è valido. | Nessun ID di posto corrispondente per l'universo. Riprova più tardi. |
| InvalidUserIds | Gli ID utente forniti presentano un formato non valido. | Impossibile analizzare gli ID utente. |
| KeyThrottled | Il tasso di richiesta supera il massimo consentito per la chiave. | Il tasso di richiesta supera il tasso massimo consentito per una singola chiave. |
| KeyNotFound | La chiave richiesta non esiste. | La chiave non esiste. |
| N/A | Nessuna pagina da avanzare. | Questo errore si verifica quando chiami Pages:AdvanceToNextPageAsync() nell'ultima pagina. |
| StandardReadExperienceThrottled | Il 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 lettura standard a livello di esperienza. |
| StandardWriteExperienceThrottled | Il 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 scrittura standard a livello di esperienza. |
| StandardListExperienceThrottled | Il 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 elenco standard a livello di esperienza. |
| StandardRemoveExperienceThrottled | Il 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 rimozione standard a livello di esperienza. |
| OrderedReadExperienceThrottled | Il 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 lettura ordinata a livello di esperienza. |
| OrderedWriteExperienceThrottled | Il 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 scrittura ordinata a livello di esperienza. |
| OrderedListExperienceThrottled | Il 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 elenco ordinato a livello di esperienza. |
| OrderedRemoveExperienceThrottled | Il 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 rimozione ordinata a livello di esperienza. |
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 siano 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 yield finché la sua richiesta è ancora in coda. Se la chiave del data store stesso è limitata, la richiesta è inserita in una coda ma viene saltata temporaneamente.
Ogni coda ha un limite di 30 richieste. Quando il limite di una coda è raggiunto, le richieste falliscono con un codice di errore nell'intervallo 301-306, che indica che le richieste sono state completamente scartate.
Limiti di accesso
I data store sono soggetti a limiti sia a livello di esperienza che a livello di server. I limiti a livello di esperienza scalano con il numero totale di utenti concorrenti nell'esperienza, mentre i limiti a livello di server sono configurabili e devono essere utilizzati come strumento dal creatore.
Limiti di esperienza
Ogni esperienza è consentita a un certo numero di richieste al data store in base al tipo di data store, al tipo di richiesta e al numero di utenti concorrenti. Per ogni tipo di data store e tipo di richiesta, il limite è condiviso tra tutte le funzioni elencate.
Nota che UpdateAsync() consuma sia dal budget di richieste di lettura che da quello di scrittura. Una singola chiamata decrementerà entrambi i limiti.
Data store standard
| Tipo di richiesta | Funzioni | Richieste al minuto |
|---|---|---|
| Lettura | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 250 + utenti concorrenti × 40 |
| Scrittura | SetAsync() IncrementAsync() UpdateAsync() | 250 + utenti concorrenti × 20 |
| Elenco | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 10 + utenti concorrenti × 2 |
| Rimozione | RemoveAsync() | 100 + utenti concorrenti × 40 |
Data store ordinati
| Tipo di richiesta | Funzioni | Richieste al minuto |
|---|---|---|
| Lettura | GetAsync() UpdateAsync() | 250 + utenti concorrenti × 40 |
| Scrittura | SetAsync() IncrementAsync() UpdateAsync() | 250 + utenti concorrenti × 20 |
| Elenco | GetSortedAsync() | 100 + utenti concorrenti × 2 |
| Rimozione | RemoveAsync() | 100 + utenti concorrenti × 40 |
Limiti del server
Ogni server ha un limite di velocità configurabile per ogni tipo di richiesta, basato sul numero di giocatori in quel server. I server ricevono un'improvvisa quantità di budget di richiesta aggiuntivo quando vengono creati per la prima volta. Usa GetRequestBudgetForRequestType() per confermare il numero di richieste al data store che il server corrente può effettuare in un dato momento.
Questi limiti sono configurabili dal creatore utilizzando SetRateLimitForRequestType(). Utilizzando questa API, un creatore può configurare i propri limiti di velocità per i data store per ogni tipo di richiesta.
I seguenti limiti di velocità predefiniti si applicano se l'API non viene chiamata:
Data store standard
| Tipo di richiesta | DataStoreRequestType Enum | Funzioni | Richieste al minuto |
|---|---|---|---|
| Lettura | StandardRead | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Scrittura | StandardWrite | SetAsync() IncrementAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Elenco | StandardList | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 5 + numPlayers × 2 |
| Rimozione | StandardRemove | RemoveAsync() | 60 + numPlayers × 40 |
| RemoveVersion (Deprecato) | RemoveVersionAsync | RemoveVersionAsync() | 5 + numPlayers × 2 |
Data store ordinati
| Tipo di richiesta | DataStoreRequestType Enum | Funzioni | Richieste al minuto |
|---|---|---|---|
| Lettura | OrderedRead | GetAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Scrittura | OrderedWrite | SetAsync() IncrementAsync() UpdateAsync() | 30 + numPlayers × 5 |
| Elenco | OrderedList | GetSortedAsync() | 5 + numPlayers × 2 |
| Rimozione | OrderedRemove | RemoveAsync() | 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 scopo devono tutti rientrare in 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.
| Componente | Numero massimo di caratteri |
|---|---|
| Nome del data store | 50 |
| Nome della chiave | 50 |
| Scopo | 50 |
| Dati (valore della chiave) | 4.194.304 per chiave |
Limiti dei metadati
Limiti al numero di caratteri nei metadati definiti dall'utente.
| Componente | Numero massimo di caratteri |
|---|---|
| Nome della chiave | 50 |
| Valore | 250 |
| Coppie chiave-valore | 300 |
Limiti di throughput
I limiti di throughput per chiave garantiscono che le prestazioni siano ottimali sui server Roblox. Ogni limite si applica a ciascuna singola chiave su tutti i server in un'esperienza e si rinnova nel tempo.
Roblox esamina l'uso della quota associata alla chiave negli ultimi 60 secondi. Se l'uso, includendo la richiesta attuale, è entro il limite di throughput, la richiesta è approvata. Se l'uso supera il limite, la richiesta viene negata.
| Tipo di richiesta | Limite |
|---|---|
| Lettura | 25 MB al minuto |
| Scrittura | 4 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 volume elevato di richieste allo stesso data store, può risultare in un'ulteriore limitazione. Indipendentemente dalla causa, il throttling si manifesta come errori DatastoreThrottled o KeyThrottled, a seconda che sia stato superato il limite di throughput per un singolo data store o per una chiave. Questi messaggi di errore si applicano sia ai data store ordinati che a quelli standard.
Limiti di archiviazione
In futuro, per fornire un'esperienza di archiviazione scalabile e stabile, i data store implementeranno un limite di archiviazione a livello di esperienza sul tuo utilizzo di archiviazione.
Questo limite sarà la somma di un limite di base per ciascuna delle tue esperienze e un limite per utente basato sul numero di utenti a vita nella tua esperienza. Un utente a vita è qualsiasi utente che ha partecipato alla tua esperienza almeno una volta.
Il limite di archiviazione sarà calcolato utilizzando la formula Limite totale di archiviazione della versione più recente = 100 MB + 1 MB * conteggio utenti a vita.
Qualsiasi chiave che elimini o sostituisci, anche se ancora accessibile tramite API di versione, non conta per l'utilizzo di archiviazione della tua esperienza. Tuttavia, interi data store eliminati tramite il metodo Open Cloud DeleteDataStore continuano a contare per il tuo utilizzo di archiviazione per la durata del loro periodo di elaborazione di 30 giorni, fino a quando non vengono eliminati permanentemente.