Las solicitudes que realices a los almacenes de datos pueden fallar debido a una conectividad deficiente u otros problemas. Para manejar errores y devolver mensajes con un código de error, envuelve las funciones del almacén de datos en pcall().
Una llamada de escritura fallida, como UpdateAsync(), significa que el servidor del juego no recibió una respuesta exitosa. No garantiza que la escritura en el backend no haya ocurrido. En algunos escenarios de falla, el estado final de la escritura puede ser desconocido para el llamador hasta que se verifique con una lectura de seguimiento sin caché.
Referencia de códigos de error
| Código de error | Nombre de error | Mensaje de error | Notas | |
|---|---|---|---|---|
| 101 | KeyNameEmpty | El nombre de la clave no puede estar vacío. | Verifica si la clave ingresada en la función del almacén de datos es una cadena vacía. | |
| 102 | KeyNameLimit | El nombre de la clave excede el límite de 50 caracteres. | Verifica si la clave ingresada en la función del almacén de datos excede una longitud de 50. | |
| 103 | ValueNotAllowed | No se puede permitir X en DataStore. | Una función de actualización incorrecta devolvió un valor de tipo X. | |
| 104 | CantStoreValue | No se puede almacenar X en DataStore. | La función de actualización devolvió un valor de tipo X que no se serializó. | |
| 105 | ValueTooLarge | El valor serializado excede el límite de X. | Si estás configurando un valor con SetAsync() o UpdateAsync(), la longitud serializada del valor no puede exceder el tamaño X. Para verificar la longitud serializada de los datos, utiliza JSONEncode(). | |
| 106 | MaxValueInvalid | MaxValue debe ser un número entero. | Si pasas un valor máximo a GetSortedAsync() para un OrderedDataStore, debe ser un entero. | |
| 106 | MinValueInvalid | MinValue debe ser un número entero. | Si pasas un valor mínimo a GetSortedAsync() para un OrderedDataStore, debe ser un entero. | |
| 106 | PageSizeGreater | PageSize debe estar dentro de un rango predefinido. | El tamaño de página mínimo para un OrderedDataStore es 1. | |
| 106 | PageSizeLesser | PageSize debe estar dentro de un rango predefinido. | El tamaño de página máximo para un OrderedDataStore es 100. | |
| 107 | MinMaxOrderInvalid | MaxValue debe ser mayor o igual a MinValue. | El valor máximo debe ser mayor o igual al valor mínimo para GetSortedAsync(). | |
| 301 | GetAsyncThrottle | Solicitud GetAsync descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud GetAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 302 | SetAsyncThrottle | Solicitud SetAsync descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud SetAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 303 | IncreAsyncThrottle | Solicitud IncrementAsync descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud IncrementAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 304 | UpdateAsyncThrottle | Solicitud UpdateAsync descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud UpdateAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 304 | TransformThrottle | Solicitud UpdateAsync descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud UpdateAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 305 | GetSortedThrottle | Solicitud GetSorted descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud GetSortedAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 306 | RemoveAsyncThrottle | Solicitud RemoveAsync descartada. La solicitud fue limitada pero la cola estaba llena. | La solicitud RemoveAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | |
| 401 | DataModelNoAccess | La solicitud ha fallado. DataModel es inaccesible mientras la experiencia se está apagando. | DataModel no está inicializado porque la experiencia se está apagando. | |
| 402 | LuaWebSrvsNoAccess | La solicitud ha fallado. LuaWebService es inaccesible mientras la experiencia se está apagando. | LuaWebService no está inicializado porque la experiencia se está apagando. | |
| 403 | StudioAccessToApisNotAllowed | No se puede escribir en DataStore desde Studio porque el acceso a la API no está habilitado. | El acceso a la API debe estar activo para utilizar almacenes de datos en Studio. | |
| 404 | InternalError | OrderedDataStore no existe. | El OrderedDataStore asociado con esta solicitud no fue encontrado. Esto podría ser una señal de corrupción de datos. Intenta de nuevo más tarde. | |
| 501 | InternalError | No se puede analizar la respuesta porque los datos pueden estar corruptos. | El servidor no pudo analizar la respuesta a tu solicitud. Esto podría ser una señal de corrupción de datos. Intenta de nuevo más tarde. | |
| 502 | RequestRejected | Los Servicios API rechazaron la solicitud con el error X. | Error X ocurrió al procesar en los servidores de Roblox. Intenta de nuevo más tarde. | |
| 503 | InternalError | La solicitud del almacén de datos fue exitosa, pero no se encontró la clave. | La clave solicitada no se encontró en el almacén de datos. Esto podría ser una señal de corrupción de datos. Intenta de nuevo más tarde. | |
| 504 | InternalError | La solicitud del almacén de datos fue exitosa, pero la respuesta no estaba formateada correctamente. | El servidor no pudo analizar la respuesta a tu solicitud. Esto podría ser una señal de corrupción de datos. Intenta de nuevo más tarde. | |
| 505 | InternalError | La solicitud del OrderedDataStore fue exitosa, pero la respuesta no estaba formateada correctamente. | El servidor no pudo analizar la respuesta a tu solicitud de OrderedDataStore. Esto podría ser una señal de corrupción de datos. Intenta de nuevo más tarde. | |
| 509 | OperationNotAllowed | Las operaciones del almacén de datos están bloqueadas mientras se ejecuta en un RCC Personal para prevenir posibles corrupciones de datos. | Las escrituras en el almacén de datos están bloqueadas en canales RCC privados. | |
| 511 | AttributeSizeTooLarge | El tamaño del atributo de metadatos excede el límite de X. | El tamaño de los metadatos serializados excede el límite de X. El valor X es dinámico. Si el tamaño cambia, el valor también cambia. | |
| 512 | UserIdLimitExceeded | El tamaño de UserID excede el límite de X. | La longitud del array de IDs de usuario proporcionado por el usuario excede el límite de X. | |
| 513 | AttributeFormatError | El formato del atributo userId es inválido. | El ID de usuario proporcionado no es un número. | |
| 513 | AttributeFormatError | El formato de los metadatos del atributo es inválido. | Los metadatos no son una tabla. | |
| GetVersionAsyncThrottle | Solicitud GetVersionAsync descartada. La solicitud fue limitada. | La solicitud GetVersionAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | ||
| GetVersionAtTimeAsyncThrottle | Solicitud GetVersionAtTimeAsync descartada. La solicitud fue limitada. | La solicitud GetVersionAtTimeAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | ||
| ListDataStoresAsyncThrottle | Solicitud ListDataStoresAsync descartada. La solicitud fue limitada. | La solicitud ListDataStoresAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | ||
| ListKeysAsyncThrottle | Solicitud ListKeysAsync descartada. La solicitud fue limitada. | La solicitud ListKeysAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | ||
| ListVersionsAsyncThrottle | Solicitud ListVersionsAsync descartada. La solicitud fue limitada. | La solicitud ListVersionsAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | ||
| RemoveVersionAsyncThrottle | Solicitud RemoveVersionAsync descartada. La solicitud fue limitada. | La solicitud RemoveVersionAsync() ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el rendimiento actual. | ||
| InvalidTimestamp | La marca de tiempo debe ser positiva y no más de diez minutos en el futuro. | La marca de tiempo proporcionada a GetVersionAtTimeAsync() no fue válida. | ||
| StandardReadExperienceThrottled | La solicitud StandardRead fue limitada por los límites de experiencia. | Una solicitud a GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), o la lectura de UpdateAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de experiencia de StandardRead. | ||
| StandardWriteExperienceThrottled | La solicitud StandardWrite fue limitada por los límites de experiencia. | Una solicitud a SetAsync(), IncrementAsync(), o la escritura de UpdateAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de experiencia de StandardWrite. | ||
| StandardListExperienceThrottled | La solicitud StandardList fue limitada por los límites de experiencia. | Una solicitud a ListKeysAsync(), ListVersionsAsync(), o ListDataStoresAsync() en almacenes de datos estándar excedió el límite de tasa de nivel de experiencia de StandardList. | ||
| StandardRemoveExperienceThrottled | La solicitud StandardRemove fue limitada por los límites de experiencia. | Una solicitud a RemoveAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de experiencia de StandardRemove. | ||
| OrderedReadExperienceThrottled | La solicitud OrderedRead fue limitada por los límites de experiencia. | Una solicitud a GetAsync() o la lectura de UpdateAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedRead. | ||
| OrderedWriteExperienceThrottled | La solicitud OrderedWrite fue limitada por los límites de experiencia. | Una solicitud a SetAsync(), IncrementAsync(), o la escritura de UpdateAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedWrite. | ||
| OrderedListExperienceThrottled | La solicitud OrderedList fue limitada por los límites de experiencia. | Una solicitud a GetSortedAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedList. | ||
| OrderedRemoveExperienceThrottled | La solicitud OrderedRemove fue limitada por los límites de experiencia. | Una solicitud a RemoveAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedRemove. | ||
| StandardReadGameServerThrottled | La solicitud StandardRead fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), o la lectura de UpdateAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de servidor del juego de StandardRead. | ||
| StandardWriteGameServerThrottled | La solicitud StandardWrite fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a SetAsync(), IncrementAsync(), o la escritura de UpdateAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de servidor del juego de StandardWrite. | ||
| StandardListGameServerThrottled | La solicitud StandardList fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a ListKeysAsync(), ListVersionsAsync(), o ListDataStoresAsync() en almacenes de datos estándar excedió el límite de tasa de nivel de servidor del juego de StandardList. | ||
| StandardRemoveGameServerThrottled | La solicitud StandardRemove fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a RemoveAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de servidor del juego de StandardRemove. | ||
| OrderedReadGameServerThrottled | La solicitud OrderedRead fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a GetAsync() o la lectura de UpdateAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de servidor del juego de OrderedRead. | ||
| OrderedWriteGameServerThrottled | La solicitud OrderedWrite fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a SetAsync(), IncrementAsync(), o la escritura de UpdateAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de servidor del juego de OrderedWrite. | ||
| OrderedListGameServerThrottled | La solicitud OrderedList fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a GetSortedAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de servidor del juego de OrderedList. | ||
| OrderedRemoveGameServerThrottled | La solicitud OrderedRemove fue limitada por los límites del servidor del juego o la cola de solicitudes estaba llena. | Una solicitud a RemoveAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de servidor del juego de OrderedRemove. |
Códigos de error del servidor
| Nombre de error | Mensaje de error | Notas |
|---|---|---|
| DatastoreDeleted | El almacén de datos ha sido eliminado. | No se pudo realizar una operación en el almacén de datos porque el almacén de datos fue eliminado previamente. |
| DatastoreThrottled | La tasa de solicitudes excede el máximo permitido para el datastore. | Se enviaron demasiadas solicitudes a un único almacén de datos. |
| InternalServerError | Ocurrió un error interno del servidor. | Error ocasional en los servidores de Roblox. Intenta de nuevo, idealmente con retroceso exponencial. |
| InvalidExclusiveStartKey | La clave de inicio exclusivo proporcionada no es válida. | La clave de inicio exclusivo (cursor) proporcionada a una operación de lista como ListKeysAsync() no es válida. |
| InvalidPlace | El lugar proporcionado es inválido. | No hay una ID de Un universo correspondiente para el lugar. Intenta de nuevo más tarde. |
| InvalidTarget | El objetivo proporcionado es inválido. | El nombre de clave del almacén de datos ordenado excede el límite de 50 caracteres. |
| InvalidUniverse | El universo proporcionado es inválido. | No hay un ID de Lugar correspondiente para el universo. Intenta de nuevo más tarde. |
| InvalidUserIds | Los IDs de usuario proporcionados tienen un formato inválido. | No se pudo analizar los IDs de usuario. |
| KeyThrottled | La tasa de solicitudes excede el máximo permitido para la clave. | La tasa de solicitudes excede la tasa máxima permitida para una única clave. |
| KeyNotFound | La clave solicitada no existe. | La clave no existe. |
| N/A | No hay páginas a las que avanzar. | Este error ocurre cuando llamas a Pages:AdvanceToNextPageAsync() en la última página. |
| StandardReadExperienceThrottled | La tasa de solicitudes de lectura estándar excede el máximo permitido para la experiencia. | Una solicitud a GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), o la lectura de UpdateAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de experiencia de StandardRead. |
| StandardWriteExperienceThrottled | La tasa de solicitudes de escritura estándar excede el máximo permitido para la experiencia. | Una solicitud a SetAsync(), IncrementAsync(), o la escritura de UpdateAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de experiencia de StandardWrite. |
| StandardListExperienceThrottled | La tasa de solicitudes de lista estándar excede el máximo permitido para la experiencia. | Una solicitud a ListKeysAsync(), ListVersionsAsync(), o ListDataStoresAsync() en almacenes de datos estándar excedió el límite de tasa de nivel de experiencia de StandardList. |
| StandardRemoveExperienceThrottled | La tasa de solicitudes de eliminación estándar excede el máximo permitido para la experiencia. | Una solicitud a RemoveAsync() en un almacén de datos estándar excedió el límite de tasa de nivel de experiencia de StandardRemove. |
| OrderedReadExperienceThrottled | La tasa de solicitudes de lectura ordenada excede el máximo permitido para la experiencia. | Una solicitud a GetAsync() o la lectura de UpdateAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedRead. |
| OrderedWriteExperienceThrottled | La tasa de solicitudes de escritura ordenada excede el máximo permitido para la experiencia. | Una solicitud a SetAsync(), IncrementAsync(), o la escritura de UpdateAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedWrite. |
| OrderedListExperienceThrottled | La tasa de solicitudes de lista ordenada excede el máximo permitido para la experiencia. | Una solicitud a GetSortedAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedList. |
| OrderedRemoveExperienceThrottled | La tasa de solicitudes de eliminación ordenada excede el máximo permitido para la experiencia. | Una solicitud a RemoveAsync() en un almacén de datos ordenado excedió el límite de tasa de nivel de experiencia de OrderedRemove. |
Límites
Los modelos de datos tienen límites. Si una experiencia excede estos límites, el servicio automáticamente limita el uso del almacén de datos de la experiencia y hace que las futuras solicitudes se coloquen en una de las siguientes colas:
- Establecer
- Conjuntos ordenados
- Obtener
- Obtener ordenado
Las solicitudes en una cola se manejan en el orden en que se reciben. La función llamada continúa esperando mientras su solicitud siga en cola. Si la clave del almacén de datos en sí está limitada, la solicitud se coloca en una cola pero se omite temporalmente.
Cada cola tiene un límite de 30 solicitudes. Cuando se alcanza el límite de una cola, las solicitudes fallan con un código de error en el rango de 301-306, indicando que las solicitudes han sido completamente descartadas.
Límites de acceso
Los almacenes de datos están sujetos tanto a límites de experiencia como de servidor. Los límites a nivel de experiencia escalan con el número total de usuarios concurrentes en la experiencia, mientras que los límites a nivel de servidor son configurables y deben ser utilizados como una herramienta por el creador.
Límites de experiencia
Cada experiencia tiene permitido un cierto número de solicitudes al almacén de datos basado en el tipo de almacén de datos, tipo de solicitud y número de usuarios concurrentes. Para cada tipo de almacén de datos y tipo de solicitud, el límite se comparte entre todas las funciones listadas.
Ten en cuenta que UpdateAsync() consume tanto del presupuesto de solicitudes de lectura como de escritura. Una sola llamada disminuirá ambos límites.
Almacenes de datos estándar
| Tipo de solicitud | Funciones | Solicitudes por minuto |
|---|---|---|
| Leer | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 250 + concurrentUsers × 40 |
| Escribir | SetAsync() IncrementAsync() UpdateAsync() | 250 + concurrentUsers × 20 |
| Listar | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 10 + concurrentUsers × 2 |
| Eliminar | RemoveAsync() | 100 + concurrentUsers × 40 |
Almacenes de datos ordenados
| Tipo de solicitud | Funciones | Solicitudes por minuto |
|---|---|---|
| Leer | GetAsync() UpdateAsync() | 250 + concurrentUsers × 40 |
| Escribir | SetAsync() IncrementAsync() UpdateAsync() | 250 + concurrentUsers × 20 |
| Listar | GetSortedAsync() | 100 + concurrentUsers × 2 |
| Eliminar | RemoveAsync() | 100 + concurrentUsers × 40 |
Límites del servidor
Cada servidor tiene un límite de tasa configurable para cada tipo de solicitud, basado en el número de jugadores en ese servidor. Los servidores reciben un impulso de presupuesto adicional por una sola vez cuando son creados por primera vez. Utiliza GetRequestBudgetForRequestType() para confirmar el número de solicitudes al almacén de datos que el servidor actual puede realizar en cualquier momento.
Estos límites son configurables por el creador mediante el API SetRateLimitForRequestType(). Usando esta API, un creador puede configurar sus propios límites de tasa para los almacenes de datos para cada tipo de solicitud.
Los siguientes límites de tasa por defecto se aplican si la API no es llamada:
Almacenes de datos estándar
| Tipo de solicitud | DataStoreRequestType Enum | Funciones | Solicitudes por minuto |
|---|---|---|---|
| Leer | StandardRead | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Escribir | StandardWrite | SetAsync() IncrementAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Listar | StandardList | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 5 + numPlayers × 2 |
| Eliminar | StandardRemove | RemoveAsync() | 60 + numPlayers × 40 |
| EliminarVersión (Obsoleto) | RemoveVersionAsync | RemoveVersionAsync() | 5 + numPlayers × 2 |
Almacenes de datos ordenados
| Tipo de solicitud | DataStoreRequestType Enum | Funciones | Solicitudes por minuto |
|---|---|---|---|
| Leer | OrderedRead | GetAsync() UpdateAsync() | 60 + numPlayers × 40 |
| Escribir | OrderedWrite | SetAsync() IncrementAsync() UpdateAsync() | 30 + numPlayers × 5 |
| Listar | OrderedList | GetSortedAsync() | 5 + numPlayers × 2 |
| Eliminar | OrderedRemove | RemoveAsync() | 30 + numPlayers × 5 |
Límites de datos
Los almacenes de datos limitan la cantidad de datos que se pueden usar por entrada.
El nombre del almacén de datos, el nombre de la clave y el alcance deben estar todos bajo una cierta longitud de caracteres. Utiliza string.len() para verificar su longitud.
Los datos (valor de clave) también se almacenan como una cadena, independientemente de su tipo inicial. Puedes verificar el tamaño de los datos con la función JSONEncode(), que convierte los datos de Luau en una tabla JSON serializada.
| Componente | Número máximo de caracteres |
|---|---|
| Nombre del almacén de datos | 50 |
| Nombre de la clave | 50 |
| Alcance | 50 |
| Datos (valor de clave) | 4,194,304 por clave |
Límites de metadatos
Límites en el número de caracteres en los metadatos definidos por el usuario.
| Componente | Número máximo de caracteres |
|---|---|
| Nombre de la clave | 50 |
| Valor | 250 |
| Pares clave-valor | 300 |
Límites de rendimiento
Los límites de rendimiento por clave aseguran que el rendimiento sea óptimo en los servidores de Roblox. Cada límite se aplica a cada clave única en todos los servidores en una experiencia y se refresca con el tiempo.
Roblox examina el uso del cupo asociado con la clave durante los últimos 60 segundos. Si el uso, incluida la solicitud actual, se encuentra dentro del límite de rendimiento, la solicitud es aprobada. Si el uso excede el límite, la solicitud es denegada.
| Tipo de solicitud | Límite |
|---|---|
| Leer | 25 MB por minuto |
| Escribir | 4 MB por minuto |
Además de los límites de rendimiento antes mencionados, Roblox organiza los datos en particiones basadas en un esquema interno. Como resultado, cuando el servidor backend recibe un alto volumen de solicitudes al mismo almacén de datos, esto puede resultar en un mayor límite de tasas. Independientemente de la causa, el limitamiento se manifiesta como errores de DatastoreThrottled o KeyThrottled, dependiendo de si se excedió el límite de rendimiento para un almacén de datos único o una clave. Estos mensajes de error se aplican tanto a los almacenes de datos ordenados como a los estándares.
Límites de almacenamiento
En el futuro, para proporcionar una experiencia de almacenamiento escalable y estable, los almacenes de datos implementarán un límite de almacenamiento a nivel de experiencia sobre tu uso del almacenamiento.
Este límite será la suma de un límite base para cada una de tus experiencias y un límite por usuario basado en el número de usuarios de por vida en tu experiencia. Un usuario de por vida es cualquier usuario que se haya unido a tu experiencia al menos una vez.
El límite de almacenamiento se calculará utilizando la fórmula Límite total de almacenamiento de la última versión = 100 MB + 1 MB * número total de usuarios de por vida.
Cualquier clave que eliminaste o reemplazaste, incluso si aún es accesible a través de APIs de versión, no cuenta hacia el uso de almacenamiento de tu experiencia. Sin embargo, los almacenes de datos completos eliminados a través del método Open Cloud DeleteDataStore seguirán contando para tu uso de almacenamiento durante la duración de su periodo de procesamiento de 30 días, hasta que sean eliminados permanentemente.