Modo de capacidad de lectura/escritura - Amazon DynamoDB

Modo de capacidad de lectura/escritura

Amazon DynamoDB posee dos modos de capacidad de lectura/escritura para procesar las lecturas y escrituras en las tablas:

  • Bajo demanda

  • Capacidad aprovisionada (valor predeterminado, apta para capa gratuita)

El modo de capacidad de lectura/escritura controla cómo se le cobrará el rendimiento de lectura y escritura y cómo se administra la capacidad. Puede establecer el modo de capacidad de lectura/escritura al crear una tabla y también modificarlo más adelante.

Los índices secundarios heredan el modo de capacidad de lectura/escritura de la tabla base. Para obtener más información, consulte Consideraciones sobre el cambio del modo de capacidad de lectura/escritura.

El siguiente vídeo le ofrece una introducción a los modos de capacidad de la tabla.

Para obtener más información sobre las prácticas recomendadas para optimizar los costos de las tablas de DynamoDB, consulte Optimización de los costos en las tablas de DynamoDB.

Modo bajo demanda

Amazon DynamoDB en diferido es una opción de facturación flexible que permite atender a miles de solicitudes por segundo sin tener que planificar la capacidad. DynamoDB bajo demanda ofrece precios de pago por solicitud para las solicitudes de lectura y escritura. De este modo, únicamente tendrá que pagar por aquello que utilice.

Al elegir el modo en diferido, DynamoDB se adapta de forma instantánea a sus cargas de trabajo a medida que aumentan o disminuyen a cualquier nivel de tráfico alcanzado previamente. Si el nivel de tráfico de una carga de trabajo alcanza un nuevo nivel máximo, DynamoDB se adapta rápidamente para acomodar la carga de trabajo. Las tablas que usan el modo en diferido proporcionan la misma latencia de milisegundos de un solo dígito, compromiso de acuerdo de nivel de servicio (SLA) y seguridad que ya ofrece DynamoDB. Puede elegir el modo en diferido para las tablas nuevas y existentes, y puede seguir usando las API de DynamoDB existentes sin cambiar el código.

El modo bajo demanda es una opción interesante si se da cualquiera de las condiciones siguientes:

  • Crea nuevas tablas con cargas de trabajo desconocidas.

  • El tráfico de la aplicación es impredecible.

  • Prefiere disfrutar de la comodidad de pagar solo por lo que usa.

La única limitación de la tasa de solicitud son las cuotas predeterminadas de las tablas respecto al rendimiento de DynamoDB, pero se puede elevar bajo petición. Para obtener más información, consulte Cuotas de rendimiento predeterminadas.

Si desea comenzar a utilizar el modo bajo demanda, puede crear o actualizar una tabla para ello. Para obtener más información, consulte Operaciones básicas en tablas de DynamoDB.

Las tablas se pueden cambiar al modo bajo demanda una vez cada 24 horas. La creación de una tabla bajo demanda también inicia este periodo de 24 horas. Las tablas pueden volver al modo de capacidad aprovisionada en cualquier momento. Para conocer los asuntos a tener en cuenta al cambiar a otro modo de capacidad de lectura o escritura, consulte Consideraciones sobre el cambio del modo de capacidad de lectura/escritura.

Unidades de solicitud de lectura y de escritura

Para tablas en modo en diferido, no necesita especificar el rendimiento de lectura y escritura que espera de su aplicación. DynamoDB le carga las lecturas y escrituras que la aplicación lleva a cabo en las tablas en términos de unidades de solicitud de lectura y de escritura, respectivamente.

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 solicitud de lectura.

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

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

Para leer un elemento mayor que 4 KB, DynamoDB necesita unidades de solicitud de lectura adicionales. El número total de unidades de solicitud de lectura necesarias depende del tamaño del elemento y de si se desea utilizar lecturas consistentes finales o de consistencia alta. Por ejemplo, si el tamaño de elemento es de 8 KB, se necesitan 2 unidades de solicitud de lectura para sostener una lectura de consistencia alta, 1 unidad de solicitud de lectura si opta por las lecturas consistentes finales o 4 unidades de solicitud de lectura para una solicitud de lectura transaccional.

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

importante

Si realiza una operación de lectura en un elemento que no existe, DynamoDB seguirá consumiendo el rendimiento de lectura como se ha indicado anteriormente.

Una unidad de solicitud de escritura equivale a una escritura para un elemento con un tamaño de hasta 1 KB. Para escribir un elemento mayor que 1 KB, DynamoDB tendrá que consumir unidades de solicitud de escritura adicionales. Las solicitudes de escritura transaccionales requieren 2 unidades de solicitud de escritura para realizar una escritura respecto a los 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 solicitud de lectura para sostener una solicitud de escritura o 4 unidades de solicitud de lectura para una solicitud de lectura transaccional.

Para ver ejemplos detallados de precios y estimar los costos mediante la calculadora de precios, consulte Precios de Amazon DynamoDB.

Picos de tráfico y propiedades de escalado

Las tablas de DynamoDB que utilizan el modo de capacidad bajo demanda se adaptan automáticamente al volumen de tráfico de la aplicación. El modo de capacidad bajo demanda acomoda al instante hasta el doble del tráfico máximo alcanzado previamente en una tabla. Por ejemplo, si el patrón de tráfico de una tabla varía entre 25 000 y 50 000 lecturas de consistencia alta por segundo y el tráfico máximo anterior ha sido de 50 000 lecturas, el modo de capacidad bajo demanda acomoda al instante un tráfico sostenido de hasta 100 000 lecturas por segundo. Si la aplicación sostiene un tráfico de 100 000 lecturas por segundo, ese máximo se convierte en el nuevo pico anterior, lo que permite que el tráfico subsiguiente alcance hasta 200 000 lecturas por segundo.

Si se necesita más del doble del tráfico máximo anterior para una tabla, DynamoDB asigna automáticamente más capacidad a medida que aumenta el volumen de tráfico, para asegurarse de que la carga de trabajo no sufra ninguna limitación controlada. Sin embargo, esta limitación controlada podría producirse si supera el doble del pico anterior en el plazo de 30 minutos. Por ejemplo, si el patrón de tráfico de una tabla varía entre 25 000 y 50 000 lecturas de consistencia alta por segundo y el tráfico máximo alcanzado anteriormente ha sido de 50 000 lecturas, DynamoDB recomienda espaciar el aumento del tráfico a lo largo de al menos 30 minutos antes de subir por encima de las 100 000 lecturas por segundo.

Rendimiento inicial del modo de capacidad bajo demanda

Si recientemente ha cambiado una tabla al modo de capacidad bajo demanda por primera vez, o si ha creado una tabla con este modo habilitado, la tabla presentará la configuración de tráfico máximo anterior, aunque no haya atendido ningún tráfico en este modo:

A continuación, se muestran ejemplos de posibles escenarios.

  • Una tabla aprovisionada configurada como 100 WCU y 100 RCU. Cuando esta tabla se cambie a la versión bajo demanda por primera vez, DynamoDB se asegurará de que se escale horizontalmente para soportar al instante al menos 4000 unidades de escritura por segundo y 12 000 unidades de lectura por segundo.

  • Una tabla aprovisionada configurada como 8000 WCU y 24 000 RCU.Cuando esta tabla se cambie a la versión bajo demanda, seguirá siendo capaz de soportar al menos 8000 unidades de escritura por segundo y 24 000 unidades de lectura por segundo en cualquier momento.

  • Una tabla aprovisionada configurada con 8000 WCU y 24 000 RCU, que consumió 6000 unidades de escritura por segundo y 18 000 unidades de lectura por segundo durante un periodo prolongado. Cuando esta tabla se cambie a la versión bajo demanda, seguirá siendo capaz de soportar al menos 8000 unidades de escritura por segundo y 24 000 unidades de lectura por segundo. El tráfico anterior puede permitir además que la tabla mantenga niveles de tráfico mucho más altos sin limitaciones.

  • Una tabla que anteriormente se aprovisionaba con 10 000 WCU y 10 000 RCU, pero que actualmente se aprovisiona con 10 RCU y 10 WCU. Cuando esta tabla se cambie a la versión bajo demanda, será capaz de soportar al menos 10 000 unidades de escritura por segundo y 10 000 unidades de lectura por segundo.

Comportamiento de las tablas al cambiar el modo de capacidad de lectura/escritura

Cuando se cambia una tabla del modo de capacidad aprovisionada al modo de capacidad bajo demanda, DynamoDB efectúa varios cambios en la estructura y las particiones de la tabla. Este proceso puede tardar varios minutos. Durante el periodo de cambio, la tabla proporciona el rendimiento acorde con las unidades de capacidad de lectura y de escritura aprovisionadas previamente. Al cambiar del modo de capacidad bajo demanda al modo de capacidad aprovisionada, la tabla proporciona el rendimiento acorde con el tráfico máximo alcanzado anteriormente mientras la tabla estaba en el modo de capacidad bajo demanda.

Precalentamiento de una tabla para el modo de capacidad bajo demanda

Con el modo de capacidad bajo demanda, las solicitudes pueden ampliarse hasta el doble del pico anterior de la tabla. Tenga en cuenta que puede producirse una limitación si las solicitudes se disparan a más del doble de la capacidad predeterminada o de la tasa de solicitudes máxima alcanzada previamente en 30 minutos. Una solución es precalentar las tablas hasta la capacidad máxima prevista del pico.

Para precalentar la tabla, siga estos pasos:

  1. Asegúrese de comprobar los límites de su cuenta y confirme que puede alcanzar la capacidad deseada en modo aprovisionado.

  2. Si va a precalentar una tabla que ya existe, o una nueva tabla en modo bajo demanda, inicie este proceso al menos 24 horas antes del pico previsto. Solo puede cambiar entre el modo bajo demanda y el aprovisionado una vez cada 24 horas.

  3. Para precalentar una tabla que actualmente está en modo bajo demanda, cámbiela al modo aprovisionado y espere hasta que se active la tabla. A continuación, vaya al siguiente paso.

    Si desea precalentar una tabla nueva que está en modo aprovisionado, o que ya ha estado en modo aprovisionado durante 24 horas, puede pasar al siguiente paso sin esperar.

  4. Establezca el rendimiento de escritura de la tabla al valor máximo deseado y manténgalo así durante varios minutos. Incurrirá en costos por este alto volumen de rendimiento hasta que vuelva a cambiar al modo bajo demanda.

  5. Cambie al modo de capacidad bajo demanda. Esto debería mantener los valores de capacidad de rendimiento aprovisionados.

Modo aprovisionado

Si elige el modo aprovisionado, usted especifica el número de lecturas y escrituras por segundo que necesita para su aplicación. Puede utilizar el escalado automático para ajustar automáticamente la capacidad aprovisionada de la tabla en respuesta a los patrones de tráfico. Esto le ayuda a controlar el uso de DynamoDB para que se mantenga igual o menor que la velocidad de solicitudes definida y, de esta forma, poder predecir los costos.

El modo aprovisionado es una opción interesante si se da cualquiera de las condiciones siguientes:

  • El tráfico de la aplicación es predecible.

  • Ejecuta aplicaciones cuyo tráfico es constante o aumenta gradualmente.

  • Puede prever los requisitos de capacidad para controlar los costos.

Unidades de capacidad de lectura y de escritura

Para las tablas en modo aprovisionado, la capacidad de rendimiento se especifica en términos de unidades de capacidad de lectura (RCU) y de escritura (WCU):

  • Una unidad de capacidad de lectura equivale a una lectura de consistencia alta por segundo, o bien a dos lecturas eventualmente consistentes por segundo, para un elemento con un tamaño de hasta 4 KB. Las solicitudes de lectura transaccionales requieren dos unidades de capacidad de lectura por segundo respecto a los elementos de hasta 4 KB. Para leer un elemento mayor que 4 KB, DynamoDB tiene que consumir unidades de capacidad de lectura adicionales. El número total de unidades de capacidad de lectura necesarias depende del tamaño del elemento y de si se desea utilizar lecturas consistentes finales o de consistencia alta. Por ejemplo, si el tamaño de elemento es de 8 KB, se necesitan 2 unidades de capacidad de lectura para sostener una lectura de consistencia alta por segundo, 1 unidad de capacidad de lectura si opta por las lecturas consistentes finales o 4 unidades de capacidad de lectura para una solicitud de lectura transaccional. Para obtener más información, consulte Consumo de unidades de capacidad de lecturas.

    nota

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

  • Una unidad de capacidad de escritura equivale a una escritura por segundo para un elemento con un tamaño de hasta 1 KB. Para escribir un elemento mayor que 1 KB, DynamoDB tiene que consumir unidades de capacidad de escritura adicionales. Las solicitudes de escritura transaccionales requieren 2 unidades de capacidad de escritura para realizar una escritura por segundo respecto a los elementos de hasta 1 KB. El número total de unidades de capacidad 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 capacidad de escritura para sostener una solicitud de escritura por segundo o 4 unidades de capacidad de escritura para una solicitud de escritura transaccional. Para obtener más información, consulte Consumo de unidades de capacidad para escrituras.

importante

Al llamar a DescribeTable en una tabla bajo demanda, las unidades de capacidad de lectura y de escritura se establecen en 0.

Si la aplicación lee o escribe elementos mayores (hasta el tamaño de elemento máximo de 400 KB de DynamoDB), consumirá más unidades de capacidad.

Por ejemplo, supongamos que creamos una tabla aprovisionada con 6 unidades de capacidad de lectura y 6 unidades de capacidad de escritura. Con estos ajustes, la aplicación podría hacer lo siguiente:

  • Realizar lecturas de consistencia alta de hasta 24 KB por segundo (4 KB x 6 unidades de capacidad de lectura).

  • Realizar lecturas consistentes finales de hasta 48 KB por segundo (el doble de rendimiento de lectura).

  • Realizar solicitudes de lectura transaccionales de hasta 12 KB por segundo.

  • Escribir hasta 6 KB por segundo (1 KB × 6 unidades de capacidad de escritura).

  • Realizar solicitudes de escritura transaccionales de hasta 3 KB por segundo.

Para obtener más información, consulte Administración de la configuración de las tablas de capacidad aprovisionada de DynamoDB.

El rendimiento aprovisionado es la cantidad máxima de capacidad que una tabla o un índice de una aplicación pueden consumir. Si la aplicación supera la capacidad de rendimiento aprovisionada en una tabla o un índice, las solicitudes podrían ser objeto de una limitación controlada.

La limitación controlada impide que la aplicación consuma demasiadas unidades de capacidad. Cuando se aplica una limitación controlada a una solicitud, se produce un error en ella con el código HTTP 400 (Bad Request) y se genera una excepción ProvisionedThroughputExceededException. Los SDK de AWS incluyen compatibilidad integrada para reintentar las solicitudes que han sido objeto de una limitación controlada (consulte Reintentos de error y retroceso exponencial), de modo que no tendrá que escribir personalmente esta lógica. Para obtener más información sobre cómo resolver los problemas de limitación, consulte ¿Por qué se limita mi tabla de Amazon DynamoDB?

Puede utilizar la AWS Management Console para monitorizar el rendimiento aprovisionado y real y modificar los ajustes de rendimiento si es preciso.

Para ver ejemplos detallados de precios y estimar los costos mediante la calculadora de precios, consulte Precios de Amazon DynamoDB.

Escalado automático de DynamoDB

El escalado automático de DynamoDB administra activamente la capacidad de rendimiento de las tablas y los índices secundarios globales. Con Auto Scaling, se define un rango (los límites superior e inferior) de unidades de capacidad de lectura y escritura. También se definir un porcentaje de objetivo de utilización comprendido en ese rango. La función Auto Scaling de DynamoDB intenta mantener el objetivo de utilización aunque la carga de trabajo de la aplicación aumente o disminuya.

Con el escalado automático de DynamoDB, una tabla o un índice secundario global pueden aumentar su capacidad de lectura y escritura aprovisionada para hacer frente a los aumentos repentinos de tráfico, sin que se aplique la limitación controlada a las solicitudes. Cuando la carga de trabajo disminuye, el escalado automático de DynamoDB puede reducir el rendimiento para evitar que tenga que pagar por una capacidad aprovisionada que no se utiliza.

nota

Si usa la AWS Management Console para crear una tabla o un índice secundario global, la función Auto Scaling de DynamoDB se habilita de forma predeterminada.

Puede administrar la configuración de escalado automático en cualquier momento mediante la consola, la AWS CLI o uno de los AWS.

Para obtener más información, consulte Administración automática de la capacidad de rendimiento con la función Auto Scaling de DynamoDB.

Capacidad reservada

En calidad de cliente de DynamoDB, puede adquirir capacidad reservada por adelantado para las tablas que utilizan la clase de tabla DynamoDB Estándar, como se describe en Precios de Amazon DynamoDB. Con la capacidad reservada, se abona una tarifa inicial única y se adquiere el compromiso de utilizar un nivel mínimo aprovisionado durante un periodo concreto. La capacidad reservada se factura según la tarifa de capacidad reservada por hora. Al reservar las unidades de capacidad de lectura y escritura por adelantado, logrará un ahorro importante en los costos de capacidad aprovisionada. Cualquier capacidad que aprovisione que supere la capacidad reservada se cobrará de acuerdo con la tarifa de capacidad aprovisionada estándar.

Los descuentos por capacidad reservada se aplican primero a la cuenta que compró la capacidad reservada. Cualquier descuento por capacidad reservada no utilizado se aplica a otras cuentas de la misma organización de AWS que la cuenta de compra. Puede desactivar el descuento compartido en instancias reservadas en la página Preferences (Preferencias) de la consola de Billing and Cost Management. Para obtener más información, consulte Desactivar descuentos compartidos de instancias reservadas y Savings Plans.

nota

La capacidad reservada no está disponible para unidades de capacidad de escritura replicadas. La capacidad reservada solo se aplica a la región en la que se compró. La capacidad reservada tampoco está disponible para tablas que utilizan la clase de tabla DynamoDB Standard - IA o el modo de capacidad bajo demanda.

Para administrar la capacidad reservada, vaya a la consola de DynamoDB y elija Reserved Capacity (Capacidad reservada).

nota

Puede impedir que los usuarios vean o adquieran capacidad reservada pero que sí puedan obtener acceso al resto de la consola. Para obtener más información, consulte cómo conceder permisos para evitar la adquisición de ofertas de capacidad reservada en Identity and Access Management en Amazon DynamoDB.

Para obtener más información sobre los precios específicos, consulte Precios de Amazon DynamoDB.