Amazon DynamoDB
Guía para desarrolladores (Versión de API 2012-08-10)

Límites en DynamoDB

En esta sección se describen los límites actuales en Amazon DynamoDB, o la ausencia de ellos en algunos casos. Cada uno de los límites se aplica a una sola región, a no ser que se especifique otra cosa.

Modo de capacidad de lectura/escritura y rendimiento

Puede cambiar entre los modos de capacidad de lectura/escritura una vez cada 24 horas.

Tamaños de las unidades de capacidad (para las tablas aprovisionadas)

Una unidad de capacidad de lectura equivale a una lectura de consistencia alta por segundo, o bien a dos lecturas coherentes finales por segundo, para elementos con un tamaño de hasta 4 KB.

Una unidad de capacidad de escritura equivale a una escritura por segundo para los elementos con un tamaño de hasta 1 KB.

Las solicitudes de lectura transaccionales requieren dos unidades de capacidad de lectura por segundo respecto a los elementos de hasta 4 KB.

Las solicitudes de escritura transaccionales requieren dos unidades de capacidad de escritura para realizar una escritura por segundo respecto a los elementos de hasta 1 KB.

Tamaños de las unidades de solicitud (para las tablas bajo demanda)

Una unidad de solicitud de lectura equivale a una lectura de consistencia alta, o bien a dos lecturas consistentes finales, para elementos con un tamaño de hasta 4 KB.

Una unidad de solicitud de escritura equivale a una escritura para los elementos con un tamaño de hasta 1 KB.

Las solicitudes de lectura transaccionales requieren dos unidades de solicitud de lectura para realizar una lectura respecto a los elementos de hasta 4 KB.

Las solicitudes de escritura transaccionales requieren dos unidades de solicitud de escritura para realizar una escritura respecto a los elementos de hasta 1 KB.

Límites de rendimiento predeterminados

AWS establece algunos límites predeterminados respecto al desempeño que se puede aprovisionar. Estos son los límites a menos que solicite una cantidad mayor. Para solicitar un aumento del límite de servicio, consulte https://aws.amazon.com/support.

Bajo demanda Aprovisionada

Per table

40,000 read request units and 40,000 write request units

40,000 read capacity units and 40,000 write capacity units

Per account

Not applicable

80,000 read capacity units and 80,000 write capacity units

Minimum throughput for any table or global secondary index

Not applicable

1 read capacity unit and 1 write capacity unit

nota

Todo el desempeño disponible para la cuenta se puede aplicar a una sola tabla o a varias tablas.

El límite de desempeño provisionado incluye la suma de la capacidad de la tabla y de la capacidad de todos sus índices secundarios globales.

En la Consola de administración de AWS, puede usar Amazon CloudWatch para consultar el rendimiento de lectura y escritura actual en una región de AWS determinada; para ello, fíjese en los valores de read capacity y write capacity graphs en la pestaña Metrics (Métricas). Asegúrese de no acercarse demasiado a los límites.

Si ha aumentado los límites predeterminados de rendimiento aprovisionado, puede usar la operación DescribeLimits para consultar los valores de los límites en un momento dado.

Aumento o reducción del rendimiento (en las tablas aprovisionadas)

Aumento de desempeño provisionado

Puede aumentar el valor de ReadCapacityUnits o WriteCapacityUnits con tanta frecuencia como sea preciso; para ello, puede usar la Consola de administración de AWS o la operación UpdateTable. En una sola llamada, puede aumentar el rendimiento aprovisionado de una tabla, de cualquier índice secundario global de esa tabla o de cualquier combinación de ellos. El nuevo ajuste no surtirá efecto hasta que se haya completado la operación UpdateTable.

No puede superar los límites por cuenta al agregar capacidad aprovisionada. DynamoDB tampoco permite aumentar la capacidad aprovisionada con gran rapidez. Aparte de estas restricciones, puede aumentar la capacidad provisionada de las tablas tanto como lo necesite. Para obtener más información sobre los límites por cuenta, consulte la sección anterior, Límites de rendimiento predeterminados.

Reducción de desempeño provisionado

En cada tabla e índice secundario global de una operación UpdateTable, puede reducir el valor de ReadCapacityUnits, de WriteCapacityUnits o de ambas opciones. El nuevo ajuste no surtirá efecto hasta que se haya completado la operación UpdateTable. Se puede reducir la capacidad hasta cuatro veces al día. Un día se define según la hora universal coordinada (UTC). Además, si no ha habido ninguna reducción en la última hora, se permite una reducción adicional. Esto aumenta el número máximo de reducciones a 27 veces al día (4 en la primera hora y 1 en cada hora posterior).

importante

Los límites de reducción de tablas e índices secundarios globales no están asociados, lo que significa que los índices secundarios globales de una determinada tabla tienen sus propios límites de reducción. Sin embargo, si una solicitud reduce el rendimiento de una tabla y un índice secundario global, se rechazará si se supera alguno de los límites actuales. Las solicitudes no se procesan parcialmente.

ejemplo

En las primeras 4 horas de un día, una tabla con un índice secundario global puede modificarse de la siguiente manera:

  • Reduzca los valores WriteCapacityUnits o ReadCapacityUnits (o ambos) cuatro veces.

  • Reduzca los valores WriteCapacityUnits o ReadCapacityUnits (o ambos) del índice secundario global cuatro veces.

Al final de ese mismo día, el rendimiento de la tabla y del índice secundario global se podría reducir un total de 27 veces cada uno.

Tablas

Tamaño de la tabla

No existe ningún límite práctico del tamaño de una tabla. Las tablas no presentan restricciones en cuanto al número de elementos o de bytes.

Tablas por cuenta

Para cualquier cuenta de AWS, existe un límite inicial de 256 tablas por región de AWS.

Para solicitar un aumento del límite de servicio, consulte https://aws.amazon.com/support.

Índices secundarios

Índices secundarios por tabla

Puede definir un máximo de 5 índices secundarios locales.

Existe un límite inicial de 20 índices secundarios globales por tabla. Para solicitar un aumento del límite de servicio, consulte https://aws.amazon.com/support.

Puede crear o eliminar solo un índices secundario global por operación de UpdateTable.

Atributos de Índice secundario proyectados por tabla

Puede proyectar un máximo de 100 atributos en todos los índices secundarios locales y globales de una tabla. Esto solo se aplica a los atributos proyectados especificados por el usuario.

En una operación CreateTable, si especifica ProjectionType como valor de INCLUDE, el recuento total de atributos especificados en NonKeyAttributes y sumados para todos los índices secundarios, no deberá superar el valor de 100. Si se proyecta el mismo nombre de atributo en dos índices diferentes, esto cuenta como dos atributos distintos a la hora de determinar la cantidad total.

Este límite no se aplica a los índices secundarios cuyo valor de ProjectionType sea KEYS_ONLY o ALL.

Claves de partición y claves de ordenación

Longitud de la clave de partición

La longitud mínima de un valor de clave de partición es de 1 byte. La longitud máxima es de 2048 bytes.

Valores de clave de partición

No existe ningún límite práctico respecto al número de valores diferentes de clave de partición, ni para tablas ni para los índices secundarios.

Longitud de la clave de ordenación

La longitud mínima de un valor de clave de ordenación es de 1 byte. La longitud máxima es de 1024 bytes.

Valores de clave de ordenación

En general, no existe ningún límite práctico respecto al número de valores diferentes de clave de ordenación por cada valor de clave de partición.

Hay una excepción en las tablas que utilizan índices secundarios. Con un local secondary index, se limita el tamaño de las colecciones de elementos: por cada valor de clave de partición diferente, los tamaños totales de todos los elementos de la tabla y de los índices no puede superar el tamaño de 10 GB. Esto podría restringir el número de claves de ordenación por cada valor de clave de partición. Para obtener más información, consulte Límite de tamaño de una colección de elementos.

Reglas de nomenclatura

Nombres de las tablas y de las instancias de Índice secundario

Los nombres de las tablas y de los índices secundarios deben tener 3 caracteres como mínimo y 255 como máximo. A continuación se muestran los caracteres permitidos:

  • A-Z

  • a-z

  • 0-9

  • _ (guion bajo)

  • - (guion)

  • . (punto)

Nombres de los atributos

En general, un nombre de atributo debe tener un carácter como mínimo y su tamaño máximo no debe superar los 64 KB.

A continuación se muestran las excepciones. Los siguientes nombres de atributo no puede tener más de 255 caracteres:

  • Los nombres de las claves de partición de un Secondary index.

  • Los nombres de las claves de ordenación de un Secondary index.

  • Los nombres de los atributos proyectados especificados por el usuario (aplicables solo al local secondary index). En una operación CreateTable, si especifica el valor ProjectionType para INCLUDE, los nombres de los atributos del parámetro NonKeyAttributes estarán sujetos a restricciones de longitud. Los tipos de proyecciones KEYS_ONLY y ALL no se ven afectados.

Estos nombres de atributos deben codificarse mediante UTF-8 y el tamaño total de cada nombre (después de la codificación) no puede superar los 255 bytes.

Tipos de datos

String

La longitud de un valor de tipo String está limitada en función del tamaño de elemento máximo de 400 KB.

Los valores de tipo String son Unicode con codificación binaria UTF-8. Dado que UTF-8 es una codificación de ancho variable, DynamoDB determina los bytes UTF-8 de un valor de tipo String para determinar su longitud.

Number

Un valor de tipo Number puede tener hasta 38 dígitos de precisión y pueden ser positivo, negativo o cero.

  • Rango de valores positivos: de 1E-130 a 9.9999999999999999999999999999999999999E+125

  • Rango de valores negativos: de -9.9999999999999999999999999999999999999E+125 a -1E-130

DynamoDB utiliza cadenas JSON para representar los datos de tipo Number en las solicitudes y las respuestas. Para obtener más información, consulte API de bajo nivel de DynamoDB.

Si la precisión del número es importante, debe pasar los números a DynamoDB utilizando cadenas que se conviertan a partir de un tipo de número.

Binary

La longitud de un valor de tipo Binary está limitada en función del tamaño de elemento máximo de 400 KB.

Las aplicaciones que utilizan atributos de tipo Binary deben codificar los datos en formato Base64 antes de enviárselos a DynamoDB. Al recibirlos, DynamoDB decodifica los datos y los convierte a matrices de bytes sin signo; a continuación, utiliza ese resultado como longitud del atributo.

Elementos

Tamaño de elemento

El tamaño máximo de un elemento en DynamoDB es de 400 KB, que incluye tanto la longitud en formato binario de los nombres de los atributos (longitud en UTF-8) y las longitudes de los valores de los atributos (también en formato binario). El nombre de los atributos se tiene en cuenta al calcular el límite de tamaño.

Por ejemplo, tomemos un elemento con dos atributos: un atributo denominado "shirt-color" cuyo valor es "R" y otro denominado "shirt-size" cuyo valor es "M". El tamaño total de ese elemento es de 23 bytes.

Tamaño de los elementos en las tablas con instancias de Índice secundario local

Para cada local secondary index de una tabla, existe un límite de 400 KB que se aplica al total de los siguientes tamaños:

  • El tamaño de los datos de un elemento de la tabla.

  • El tamaño de la entrada del local secondary index correspondiente a dicho elemento, incluidos sus valores de clave y atributos proyectados.

Atributos

Pares de nombre-valor de los atributos por elemento

El tamaño acumulado de los atributos por elemento debe ajustarse al tamaño máximo de elemento DynamoDB (400 KB).

Número de valores de una lista, un mapa o un conjunto

No existe ningún límite respecto al número de valores de una lista, un mapa o un conjunto, siempre y cuando el elemento que contenga los valores se ajuste al límite de tamaño de elemento de 400 KB.

Valores de los atributos

Un valor de atributo no puede ser un valor de tipo String o Set (String Set, Number Set o Binary Set) vacío. Sin embargo, sí se admiten valores de tipo List o Map vacíos.

Profundidad de los atributos anidados

DynamoDB admite atributos anidados hasta un máximo de 32 niveles de profundidad.

Parámetros de expresión

Los parámetros de expresión incluyen ProjectionExpression, ConditionExpression, UpdateExpression y FilterExpression.

Longitudes

La longitud máxima de cualquier cadena de expresión es 4 KB. Por ejemplo, el tamaño de ConditionExpression a=b es de 3 bytes.

La longitud máxima de cualquier nombre de atributo de expresión individual o valor de atributo de expresión es de 255 bytes. Por ejemplo, en el caso de #name, es de 5 bytes, mientras que en el de :val, es de 4.

La longitud máxima de todas las variables de sustitución de una expresión es de 2 MB. Este valor representa la suma de las longitudes de todos los ExpressionAttributeNames y ExpressionAttributeValues.

Operadores y operandos

El número máximo de operadores o funciones que se admiten en una UpdateExpression es de 300. Por ejemplo, UpdateExpression SET a = :val1 + :val2 + :val3 contiene dos operadores "+".

La cantidad máxima de operandos del comparador IN es de 100.

Palabras reservadas

DynamoDB no impide utilizar nombres que entran en conflicto con las palabras reservadas. Para ver una lista completa, consulte Palabras reservadas en DynamoDB.

Sin embargo, si utiliza una palabra reservada en un parámetro de expresión, también debe especificar ExpressionAttributeNames. Para obtener más información, consulte Nombres de atributos de expresión.

Transacciones de DynamoDB

Las operaciones de la API transaccionales de DynamoDB presentan las siguientes restricciones:

  • Una transacción no puede contener más de 25 elementos únicos.

  • Una transacción no puede contener más de 4 MB de datos.

  • No se pueden aplicar dos acciones de una transacción al mismo elemento de la misma tabla. Por ejemplo, no se puede usar ConditionCheck y Update para el mismo elemento de una transacción.

  • Una transacción no puede operar en tablas que se encuentren en más de una cuenta o región de AWS.

  • De forma predeterminada, las transacciones están deshabilitadas para las tablas globales. Si desea usar transacciones con tablas globales, hable con un representante de cuenta o póngase en contacto con Amazon Support.

Flujos de DynamoDB

Lectores simultáneos de un fragmento en Flujos de DynamoDB

No permita que más de dos procesos lean el mismo fragmento de Flujos de DynamoDB al mismo tiempo. Si excede este límite, puede producirse una limitación controlada de las solicitudes.

Capacidad de escritura máxima de una tabla con un flujo habilitado

AWS establece algunos límites predeterminados respecto a la capacidad de escritura de las tablas de DynamoDB que tienen habilitados flujos de DynamoDB. Estos son los límites a menos que solicite una cantidad mayor. Para solicitar un aumento del límite de servicio, consulte https://aws.amazon.com/support.

  • Regiones US East (N. Virginia), EE.UU. Este (Ohio), EE.UU. Oeste (Norte de California), EE.UU. Oeste (Oregón), América del Sur (São Paulo), UE (Fráncfort), UE (Irlanda), Asia Pacífico (Tokio), Asia Pacífico (Seúl), Asia Pacífico (Singapur), Asia Pacífico (Sídney) y China (Pekín):

    • Por tabla – 40 000 unidades de capacidad de escritura

  • Todas las demás regiones:

    • Por tabla – 10 000 unidades de capacidad de escritura

nota

Los límites de rendimiento aprovisionados también se aplican a las tablas de DynamoDB que tienen habilitados flujos de DynamoDB. Para obtener más información, consulte Límites de rendimiento predeterminados.

DynamoDB Accelerator (DAX)

Disponibilidad en las regiones de AWS

Para obtener una lista de las regiones de AWS en las que está disponible DAX, consulte DynamoDB Accelerator (DAX) en la AWS General Reference.

Nodos

Un clúster de DAX consta exactamente de un nodo principal y entre cero y nueve nodos de réplica de lectura.

El número total de nodos (por cuenta de AWS) no puede superar los 50 en una misma región de AWS.

Grupos de parámetros

Puede crear hasta 20 grupos de parámetros de DAX por región.

Grupos de subredes

Puede crear hasta 50 grupos de subredes de DAX por región.

Dentro de un grupo de subredes, puede definir hasta 20 subredes.

Límites específicos de API

CreateTable/UpdateTable/DeleteTable

En general, puede haber hasta 50 solicitudes CreateTable, UpdateTable y DeleteTable en ejecución simultáneamente (en cualquier combinación). Es decir, el número total de tablas que se encuentren en estado CREATING, UPDATING o DELETING no puede ser mayor que 50.

La única excepción se admite al crear una tabla con un índice secundario o varios. Puede tener hasta 25 solicitudes de este tipo ejecutándose al mismo tiempo. Sin embargo, si las especificaciones de la tabla o el índice son complejas, DynamoDB podría reducir temporalmente el número de operaciones simultáneas.

BatchGetItem

En una sola operación BatchGetItem se puede recuperar un máximo de 100 elementos. El tamaño total de todos los elementos recuperados no puede ser mayor que 16 MB.

BatchWriteItem

Una misma operación BatchWriteItem puede contener hasta 25 solicitudes PutItem o DeleteItem. El tamaño total de todos los elementos escritos no puede ser mayor que 16 MB.

DescribeLimits

Solo se debe llamar a DescribeLimits de forma periódica. Es de esperar que se produzcan errores de limitación controlada si se realiza la llamada más de una vez por minuto.

Query

El conjunto de resultados de una operación Query está limitado a 1 MB por llamada. Puede utilizar LastEvaluatedKey de la respuesta a la consulta para recuperar más resultados.

Scan

El conjunto de resultados de una operación Scan está limitado a 1 MB por llamada. Puede utilizar LastEvaluatedKey de la respuesta al examen para recuperar más resultados.

Cifrado en reposo de DynamoDB

Puede cambiar de una clave maestra de cliente (CMK) propiedad de AWS a una CMK administrada por AWS hasta cuatro veces cada 24 horas a partir del momento en el que se cree la tabla. Y, en caso de no producirse ningún cambio en las últimas horas, se permite un cambio adicional. Esto aumenta el número máximo de cambios a ocho al día (cuatro cambios en las primeras 6 horas y uno en cada una de las 6 horas posteriores).

Puede cambiar las claves de cifrado para usar una CMK propiedad de AWS con tanta frecuencia como sea preciso.

Estos son los límites a menos que solicite una cantidad mayor. Para solicitar un aumento del límite de servicio, consulte https://aws.amazon.com/support.