Aceleración en memoria con DynamoDB Accelerator (DAX) - Amazon DynamoDB

Aceleración en memoria con DynamoDB Accelerator (DAX)

Amazon DynamoDB está diseñado para facilitar el escalado y mejorar el rendimiento. En la mayoría de los casos, los tiempos de respuesta de DynamoDB pueden medirse en milisegundos con cifras de un solo dígito. No obstante, existen determinados casos de uso que requieren tiempos de respuesta en microsegundos. Para estos casos de uso, DynamoDB Accelerator (DAX) proporciona tiempos de respuesta más breves al acceder a datos de consistencia final.

DAX es un servicio de almacenamiento en caché compatible con DynamoDB que le permite beneficiarse de un rápido rendimiento en memoria para las aplicaciones más exigentes. DAX aborda tres escenarios principales:

  1. Como caché en memoria, DAX reduce los tiempos de respuesta de las cargas de trabajo de lectura eventualmente consistente en un orden de magnitud, de cifras en milisegundos de un solo dígito a microsegundos.

  2. DAX reduce la complejidad operativa y de las aplicaciones al ofrecer un servicios administrado que es compatible mediante API con DynamoDB. Por consiguiente, solo requiere unos mínimos cambios funcionales para poder usarlo con una aplicación existente.

  3. Para las cargas de trabajo intensas o en ráfagas, DAX ofrece mayor rendimiento y posibles ahorros en el coste, porque disminuye la necesidad de aprovisionar unidades de capacidad de lectura de más. Esto resulta especialmente beneficioso para las aplicaciones que requieren lecturas reiteradas de claves individuales.

DAX es compatible con el cifrado en el lado del servidor. Con el cifrado en reposo, los datos conservados por DAX en el disco serán cifrados. DAX escribe datos en disco como parte de la propagación de cambios desde el nodo principal a las réplicas de lectura. Para obtener más información, consulte Cifrado en reposo de DAX.

DAX también admite el cifrado en tránsito, lo que garantiza que todas las solicitudes y respuestas entre la aplicación y el clúster estén cifradas por seguridad de nivel de transporte (TLS), y las conexiones al clúster se pueden autenticar mediante la verificación de un certificado x509 del clúster. Para obtener más información, consulte Cifrado en tránsito de DAX.

Casos de uso de DAX

DAX proporciona acceso a datos de consistencia final de tablas de DynamoDB con una latencia de microsegundos. Un clúster Multi-AZ de DAX puede atender millones de solicitudes por segundo.

DAX es ideal para los siguientes tipos de aplicaciones:

  • Las aplicaciones que requieren realizar lecturas con la máxima rapidez de respuesta posible. Algunos ejemplos de ello son las aplicaciones de subastas en tiempo real, juegos sociales o de transacciones comerciales. DAX proporciona un rápido rendimiento de lectura en memoria para estos casos de uso.

  • Las aplicaciones que leen una pequeña cantidad de elementos con más frecuencia que otros. Por ejemplo, tomemos un sistema de comercio electrónico (e-commerce) que durante un día promociona un producto popular a menos precio. Durante la promoción, la demanda de ese producto (y de sus datos en DynamoDB) experimentaría un aumento drástico en comparación con todos los demás productos. Para mitigar los efectos de una clave "caliente" y de una distribución desigual del tráfico, podría delegar la actividad de lectura en una caché de DAX hasta que finalice el día de promoción.

  • Las aplicaciones con gran intensidad de lectura sujetas a requisitos de costos. Con DynamoDB, usted aprovisiona la cantidad de lecturas por segundo que la aplicación requiere. Si la actividad de lectura aumenta, puede incrementar el desempeño de lectura provisionado de la tabla (lo que supone un costo adicional). Si lo prefiere, puede delegar la actividad de la aplicación a un clúster de DAX y reducir la cantidad de unidades de capacidad de lectura que, de no hacerlo, tendría que adquirir.

  • Las aplicaciones que requieren realizar lecturas reiteradas de un conjunto de datos voluminoso. Una aplicación de este tipo podría desviar recursos de base de datos de otras aplicaciones. Por ejemplo, un análisis prolongado de los datos meteorológicos regionales podría consumir temporalmente toda la capacidad de lectura de una tabla de DynamoDB. Esto tendría un efecto negativo en otras aplicaciones que necesitasen obtener acceso a los mismos datos. En cambio, con DAX, el análisis de los datos meteorológicos podría llevarse a cabo usando datos almacenados en caché.

DAX no es ideal para los siguientes tipos de aplicaciones:

  • Las aplicaciones que requieran lecturas de consistencia alta (o que no toleran las lecturas consistentes finales).

  • Las aplicaciones que no requieran tiempos de respuesta en microsegundos para lecturas o que no necesiten delegar la actividad de lectura reiterada de tablas subyacentes.

  • Las aplicaciones con gran intensidad de escrituras o sin gran actividad de lectura.

  • Las aplicaciones que ya utilizan otra solución de almacenamiento en caché distinta con DynamoDB y que utilizan su propia lógica del lado del cliente para trabajar con dicha solución.

Notas de uso de DAX

  • Para obtener una lista de regiones de AWS en las que DAX está disponible, consulte Precios de Amazon DynamoDB.

  • DAX admite aplicaciones escritas en Go, Java, Node.js, Python y .NET utilizando los clientes proporcionados por AWS para dichos lenguajes de programación.

  • DAX solo está disponible para la plataforma EC2-VPC.

  • La política de la función del servicio de clúster de DAX debe permitir la acción dynamodb:DescribeTable para mantener los metadatos sobre la tabla de DynamoDB.

  • Los clústeres de DAX conservan metadatos sobre los nombres de atributo de los elementos que almacenan. Dichos metadatos se conservan indefinidamente (incluso después de que el elemento haya vencido o se haya desalojado de la caché). Las aplicaciones que utilizan un número ilimitado de nombres de atributo pueden, con el tiempo, agotar la memoria en el clúster de DAX. Esta limitación se aplica solo a los nombres de atributo de nivel superior, no a los nombres de atributo anidados. Ejemplos de nombres de atributo de nivel superior problemáticos son las marcas temporales, los UUID y los ID de sesión.

    Esta limitación solo se aplica a los nombres de atributo, no a sus valores. Los elementos como el siguiente no son un problema.

    { "Id": 123, "Title": "Bicycle 123", "CreationDate": "2017-10-24T01:02:03+00:00" }

    Pero los elementos como el siguiente sí lo son, si hay suficientes y tienen cada uno de ellos una marca temporal diferente.

    { "Id": 123, "Title": "Bicycle 123", "2017-10-24T01:02:03+00:00": "created" }