Operaciones de lectura y escritura de DynamoDB - Amazon DynamoDB

Operaciones de lectura y escritura de DynamoDB

Las operaciones de lectura de DynamoDB permiten recuperar uno o más elementos de una tabla especificando el valor de la clave de partición y, de forma opcional, el valor de la clave de clasificación. Mediante las operaciones de escritura de DynamoDB, puede insertar, actualizar o eliminar elementos en una tabla. En este tema se explica el consumo de unidades de capacidad para estas dos operaciones.

Consumo de unidades de capacidad para operaciones de lectura

Las solicitudes de lectura de DynamoDB pueden ser altamente coherentes, coherentes posteriores o transaccionales.

  • Una solicitud de lectura altamente coherente de un elemento de hasta 4 KB requiere una unidad de lectura.

  • Una solicitud de lectura coherente posterior de un elemento de hasta 4 KB requiere media unidad de lectura.

  • Una solicitud de lectura transaccional de un elemento de hasta 4 KB requiere dos unidades de lectura.

Para obtener más información sobre los modelos de consistencia de lectura de DynamoDB, consulte Coherencia de lectura de DynamoDB.

A efectos de las lecturas, los tamaños de los elementos se redondean al siguiente múltiplo de 4 KB. Por ejemplo, leer un elemento de 3 500 bytes consume el mismo rendimiento que leer un elemento de 4 KB.

Para leer un elemento mayor de 4 KB, DynamoDB necesita unidades de lectura adicionales. El número total de unidades de lectura necesarias depende del tamaño del elemento y de si se desea utilizar una lectura coherente posterior o una lectura altamente coherente. Por ejemplo, si el tamaño de su fila es de 8 KB, necesitará 2 unidades de lectura para realizar una lectura altamente coherente. Necesitará 1 unidad de lectura si elige lecturas coherentes posteriores o 4 unidades de lectura para una solicitud de lectura transaccional.

En la siguiente lista se describe cómo las operaciones de lectura de DynamoDB consumen unidades de lectura:

  • GetItem: lee un solo elemento de una tabla. Para determinar el número de unidades que va a consumir GetItem, tome el tamaño del elemento y redondéelo al siguiente límite de 4 KB. Este es el número de unidades de lectura necesarias si se especifica una lectura altamente coherente. Si se trata de una lectura coherente posterior, que es el valor predeterminado, divida este número por dos.

    Por ejemplo, si lee un elemento de 3,5 KB, DynamoDB redondea su tamaño a 4 KB. Si lee un elemento de 10 KB, DynamoDB redondea su tamaño a 12 KB.

  • BatchGetItem: lee hasta 100 elementos de una o varias tablas. DynamoDB procesa cada elemento del lote como una solicitud GetItem individual. DynamoDB redondea primero el tamaño de cada elemento al siguiente límite de 4 KB y, a continuación, calcula el tamaño total. El resultado no es necesariamente equivalente al tamaño total de todos los elementos. Por ejemplo, si BatchGetItem lee dos elementos de 1,5 KB y 6,5 KB, DynamoDB calcula el tamaño como 12 KB (4 KB + 8 KB). DynamoDB no calcula el tamaño como 8 KB (1,5 KB + 6,5 KB).

  • Query: lee varios elementos que tienen el mismo valor de clave de partición. Todos los elementos devueltos se tratan como una sola operación de lectura, de tal forma que DynamoDB calcula el tamaño total de todos los elementos. A continuación, DynamoDB redondea el tamaño al siguiente límite de 4 KB. Por ejemplo, supongamos que la consulta devuelve 10 elementos cuyo tamaño combinado es de 40,8 KB. DynamoDB redondea el tamaño del elemento de la operación a 44 KB. Si una consulta devuelve 1500 elementos de 64 bytes cada uno, el tamaño acumulado es de 96 KB.

  • Scan: lee todos los elementos de una tabla. DynamoDB considera el tamaño de los elementos que se evalúan, no el tamaño de los elementos que el examen devuelve. Para obtener más información sobre las operaciones Scan, consulte Análisis de tablas en DynamoDB.

importante

Si realiza una operación de lectura en un elemento que no existe, DynamoDB seguirá consumiendo rendimiento de lectura como se ha indicado anteriormente. En el caso de las operaciones Query/Scan, se le seguirá cobrando un rendimiento de lectura adicional basado en la coherencia de lectura y en el número de particiones que se han buscado para atender la solicitud, aunque no existan datos.

Para cualquier operación que devuelve elementos, puede solicitar un subconjunto de atributos para recuperarlos. Sin embargo, esto no afecta al cálculo del tamaño de los elementos. Por otra parte, Query y Scan pueden devolver recuentos de elementos en lugar de valores de atributos. Para obtener el recuento de los elementos, se consume la misma cantidad de unidades de lectura y se llevan a cabo los mismos cálculos de tamaño de los elementos. Esto se debe a que DynamoDB tiene que leer cada elemento para poder incrementar el recuento.

Consumo de unidades de capacidad para operaciones de escritura

Una unidad de escritura equivale a una escritura para un elemento con un tamaño de hasta 1 KB. Para escribir un elemento mayor de 1 KB, DynamoDB tendrá que consumir unidades de escritura adicionales. Las solicitudes de escritura transaccionales requieren 2 unidades de escritura para realizar una escritura para elementos de hasta 1 KB. El número total de unidades de solicitud de escritura necesarias depende del tamaño del elemento. Por ejemplo, si el tamaño de elemento es de 2 KB, se necesitan 2 unidades de lectura para mantener una solicitud de escritura o 4 unidades de escritura para una solicitud de escritura transaccional.

A efectos de las escrituras, los tamaños de los elementos se redondean al siguiente múltiplo de 1 KB. Por ejemplo, escribir un elemento de 500 bytes consume el mismo rendimiento que leer un elemento de 1 KB.

En la siguiente lista se describe cómo consumen unidades de escritura las operaciones de escritura de DynamoDB:

  • PutItem: escribe un solo elemento en una tabla. Si ya existe un elemento con la misma clave principal en la tabla, la operación lo sustituye. Para calcular el consumo de desempeño provisionado, el tamaño de elemento que se tiene en cuenta es el mayor de los dos.

  • UpdateItem: modifica un solo elemento en la tabla. DynamoDB considera el tamaño del elemento tal y como aparece antes y después de la actualización. El desempeño provisionado consumido refleja el mayor de estos tamaños de elemento. Aunque se actualice un subconjunto de atributos del elemento, UpdateItem consumirá la cantidad total de rendimiento aprovisionado (el mayor de los tamaños de elemento de “antes” y “después”).

  • DeleteItem: elimina un solo elemento de una tabla. El consumo de desempeño provisionado se basa en el tamaño del elemento eliminado.

  • BatchWriteItem: escribe hasta 25 elementos en una o varias tablas. DynamoDB procesa cada elemento del lote como una consulta PutItem o DeleteItem individual (las actualizaciones no son compatibles). DynamoDB redondea primero el tamaño de cada elemento al siguiente límite de 1 KB y, a continuación, calcula el tamaño total. El resultado no es necesariamente equivalente al tamaño total de todos los elementos. Por ejemplo, si BatchWriteItem escribe dos elementos de 500 bytes y 3,5 KB, DynamoDB calcula el tamaño como 5 KB (1 KB + 4 KB). DynamoDB no calcula un tamaño de 4 KB (500 bytes + 3,5 KB).

A efectos de las operaciones PutItem, UpdateItem y DeleteItem, DynamoDB redondea los tamaños de los elementos al 1 KB inmediatamente superior. Por ejemplo, si coloca o elimina un elemento de 1,6 KB, DynamoDB redondeará su tamaño a 2 KB.

Las operaciones PutItem, UpdateItem y DeleteItem permiten escrituras condicionales, en las que se especifica una expresión que debe evaluarse en true para que la operación se lleve a cabo correctamente. Aunque el resultado de evaluar la expresión sea false, DynamoDB consume unidades de capacidad de escritura de la tabla. La cantidad de unidades de capacidad de escritura consumidas depende del tamaño del elemento. Este elemento puede ser un elemento existente en la tabla o uno nuevo que esté intentando crear o actualizar. Por ejemplo, supongamos que un elemento existente tiene 300 KB. El nuevo elemento que está intentando crear o actualizar tiene 310 KB. Las unidades de capacidad de escritura consumidas serán de 310 KB para el nuevo elemento.