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.

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.

Puede cambiar entre los modos de capacidad de lectura/escritura una vez cada 24 horas. Para conocer los asuntos que es preciso tener en cuenta al cambiar a otro modo de capacidad de lectura/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.

  • Una unidad de solicitud de lectura equivale a una solicitud lectura de consistencia alta, o dos solicitudes de lectura eventualemente consistentes, para un elemento con un tamaño de hasta 4 KB. Dos unidades de solicitud de lectura representan una lectura transaccionales respecto a los elementos de hasta 4 KB. 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.

    nota

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

  • 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 obtener una lista de las regiones de AWS en las que DynamoDB en diferido está disponible consulte los 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:

  • Tabla recién creada con el modo de capacidad bajo demanda: el tráfico máximo anterior es de 2000 unidades de solicitud de escritura o 6000 unidades de solicitud de lectura. Puede aumentar el tráfico máximo anterior al doble de inmediato, lo que permite que las tablas creadas directamente con el modo bajo demanda atiendan hasta 4000 unidades de solicitud de escritura o 12 000 unidades de solicitud de lectura, o cualquier combinación de ambas.

  • Tabla cambiada al modo de capacidad bajo demanda: el tráfico máximo anterior equivale a la mitad de las unidades de capacidad de escritura y de lectura aprovisionadas desde que se creó la tabla, o a los valores de una tabla recién creada con el modo de capacidad bajo demanda, lo que sea mayor. En otras palabras, la tabla ofrecerá, como mínimo, el mismo rendimiento que tenía antes de cambiar al modo de capacidad bajo demanda.

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.

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 para las lecturas.

    nota

    Para obtener más información sobre los modelos de consistencia de lectura de DynamoDB, consulte Consistencia 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 las 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 en 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 retardo exponencial), de modo que no tendrá que escribir personalmente esta lógica.

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

Auto Scaling 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.

nota

La capacidad reservada no está disponible para unidades de capacidad de escritura replicadas. La capacidad reservada tampoco está disponible para tablas que utilizan la clase de tabla DynamoDB Estándar - Acceso poco frecuente 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 la concesión de permisos para evitar la compra de ofertas de capacidad reservada en Identity and Access Management en Amazon DynamoDB.