DAX: cómo funciona - Amazon DynamoDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

DAX: cómo funciona

Amazon DynamoDB Accelerator (DAX) se ha diseñado para ejecutarse dentro de un entorno de Amazon Virtual Private Cloud (Amazon VPC). El servicio Amazon VPC define una red virtual que se parece mucho a un centro de datos tradicional. Con una VPC, puede controlar el rango de direcciones IP, las subredes, las tablas de ruteo, las gateways de red y los ajustes de seguridad. Puede lanzar un clúster de DAX en la red virtual y controlar el acceso al clúster mediante grupos de seguridad de Amazon VPC.

nota

Si creó la cuenta de AWS después del 4 de diciembre de 2013, ya dispone de una VPC predeterminada en cada región de AWS. La VPC está lista para su uso inmediato —sin tener que realizar ningún paso de configuración adicional.

Para obtener más información, consulte VPC predeterminada y subredes predeterminadas en la Guía del usuario de Amazon VPC.

En el siguiente diagrama se muestra información general sobre DAX.


            Diagrama de flujo de trabajo que muestra la interacción de la aplicación, el cliente de DAX y el clúster de DAX en una VPC.

Para crear un clúster de DAX, se usa la Consola de administración de AWS. A menos que especifique otra cosa, el clúster de DAX se ejecuta dentro de la VPC predeterminada. Para ejecutar su aplicación, inicie una instancia Amazon EC2 en su Amazon VPC. A continuación, implemente su aplicación (con el cliente de DAX) en la instancia EC2.

En tiempo de ejecución, el cliente de DAX dirige todas las solicitudes de API de DynamoDB de la aplicación al clúster de DAX. Si DAX puede procesar una de estas solicitudes de API directamente, lo hace. En caso contrario, transmite la solicitud a DynamoDB.

Por último, el clúster de DAX devuelve los resultados a la aplicación.

Procesamiento de solicitudes en DAX

Un clúster de DAX consta de uno o varios nodos. Cada nodo ejecuta su propia instancia del software de almacenamiento en caché de DAX. Uno de los nodos sirve como nodo principal del clúster. Los nodos adicionales (en caso de incluirse) actúan como réplicas de lectura. Para obtener más información, consulte Nodes.

La aplicación puede obtener acceso a DAX especificando el punto de enlace del clúster de DAX. El software del cliente de DAX utiliza el punto de enlace del clúster para realizar el ruteo y el balanceo de carga inteligente.

Operaciones de lectura

DAX puede responder a las siguientes llamadas a la API:

  • GetItem

  • BatchGetItem

  • Query

  • Scan

Si la solicitud especifica lecturas coherentes finales (el comportamiento predeterminado), intenta leer el elemento en DAX:

  • Si el elemento está disponible en DAX (un acierto de caché), DAX devuelve el elemento a la aplicación sin obtener acceso a DynamoDB.

  • Si el elemento no está disponible en DAX (un error de caché), DAX transmite la solicitud a DynamoDB. Cuando recibe la respuesta de DynamoDB, DAX devuelve los resultados a la aplicación. También escribe los resultados en la caché en el nodo principal.

nota

Si el clúster contiene réplicas de lectura, DAX las mantiene automáticamente sincronizadas con el nodo principal. Para obtener más información, consulte Clusters.

Si la solicitud especifica lecturas de consistencia alta, DAX transmite la solicitud a DynamoDB. Los resultados de DynamoDB no se almacenan en caché en DAX. Sencillamente, se devuelven a la aplicación.

Operaciones de escritura

Las siguientes operaciones de la API de DAX se consideran de "escritura indirecta" (write-through):

  • BatchWriteItem

  • UpdateItem

  • DeleteItem

  • PutItem

Con estas operaciones, los datos se escriben primero en la tabla de DynamoDB y, a continuación, en el clúster de DAX. La operación solo se lleva a cabo correctamente si los datos se escriben correctamente en ambos casos: en la tabla y en DAX.

Otras operaciones de

DAX no reconoce ninguna operación de DynamoDB de administración de tablas (tales como CreateTable, UpdateTable, etc.). Si la aplicación tiene que realizar estas operaciones, debe obtener acceso a DynamoDB directamente, sin usar DAX.

Para obtener información detallada acerca de la coherencia de DAX y DynamoDB, consulte Modelos de consistencia de DAX y DynamoDB.

Para obtener información sobre el funcionamiento de las transacciones DAX, consulte Uso de las API transaccionales en DynamoDB Accelerator (DAX).

Limitación de velocidad de solicitudes

Si el número de solicitudes enviadas a DAX supera la capacidad de un nodo, DAX limita la velocidad a la que acepta solicitudes adicionales devolviendo una ThrottlingException. DAX evalúa continuamente la utilización de la CPU para determinar el volumen de solicitudes que puede procesar manteniendo el clúster en buen estado.

Puede monitorear la métrica ThrottledRequestCount que DAX publica en Amazon CloudWatch. Si ve estas excepciones periódicamente, debería plantearse escalar el clúster.

Caché de elementos

DAX mantiene una caché de elementos para almacenar los resultados de las operaciones GetItem y BatchGetItem. Los elementos de la caché representan datos con consistencia final de DynamoDB y se almacenan según sus valores de clave principal.

Cuando una aplicación envía una solicitud GetItem o BatchGetItem, DAX intenta leer los elementos directamente en la caché de elementos, para lo cual utiliza los valores de clave especificados. Si encuentra los elementos (aciertos de caché), DAX los devuelve a la aplicación de forma inmediata. Si los elementos no se encuentran (error de caché), DAX envía la solicitud a DynamoDB. DynamoDB procesa las solicitudes usando lecturas consistentes finales y devuelve los elementos a DAX. DAX los almacena en la caché de elementos y, a continuación, los devuelve a la aplicación.

La caché de elementos tiene un Tiempo de vida (TTL), cuyo valor predeterminado es de 5 minutos. DAX asigna una marca temporal a cada elemento que escribe en la caché de elementos. Un elemento vence cuando ha permanecido en la caché más tiempo del indicado en el ajuste de TTL. Si emite una solicitud GetItem para un elemento vencido, se considera un error de caché, en cuyo caso DAX envía la solicitud GetItem a DynamoDB.

nota

Puede especificar el ajuste de TTL de la caché de elementos al crear un clúster de DAX nuevo. Para obtener más información, consulte Administración de clústeres de DAX .

DAX también mantiene una lista de elementos menos usados recientemente (LRU) para la caché de elementos. La lista LRU rastrea cuándo se escribió un elemento por primera vez en la caché y cuándo se leyó por última vez en ella. Si la caché de elementos se llena, DAX expulsa los elementos más antiguos (aunque todavía no hayan caducado) para dejar espacio a los nuevos. El algoritmo LRU siempre está habilitado para la caché de elementos y no es configurable por el usuario.

Si especifica cero como la configuración de TTL de la caché de elementos, los elementos de la caché de elementos solo se actualizarán debido a una operación de evocación de LRU o de "escritura indirecta".

Para obtener información detallada sobre la coherencia de la caché de elementos en DAX, consulte Comportamiento de la caché de elementos de DAX.

Caché de consultas

DAX también mantiene una caché de consultas para almacenar los resultados de las operaciones Query y Scan. Los elementos de esta caché representan los conjuntos de resultados de las consultas y los exámenes de las tablas de DynamoDB. Estos conjuntos de resultados se almacenan por los valores de sus parámetros.

Cuando una aplicación envía una solicitud Query o Scan, DAX intenta leer un conjunto de resultados coincidente en la caché de consultas, para lo cual utiliza los valores de los parámetros especificados. Si encuentra el conjunto de resultados (acierto de caché), DAX lo devuelve a la aplicación de forma inmediata. Si no se encuentra el conjunto de resultados (error de caché), DAX envía la solicitud a DynamoDB. DynamoDB procesa las solicitudes usando lecturas consistentes finales y devuelve el conjunto de resultados a DAX. DAX almacena este conjunto de resultados en la caché de consultas y después lo devuelve a la aplicación.

nota

Puede especificar el ajuste de TTL de la caché de consultas al crear un clúster de DAX nuevo. Para obtener más información, consulte Administración de clústeres de DAX .

DAX también mantiene una lista LRU para la caché de consultas. La lista rastrea cuándo se escribió un conjunto de resultados por primera vez en la caché y cuándo se leyó por última vez en ella. Si la caché de consultas se llena, DAX expulsa los conjuntos de resultados más antiguos (aunque todavía no hayan vencido) para dejar espacio a los nuevos. El algoritmo LRU siempre está habilitado para la caché de consultas y no es configurable por el usuario.

Si especifica cero como la configuración de TTL de la caché de consultas, la respuesta de la consulta no se almacenará en caché.

Para obtener información detallada acerca de la coherencia de la caché de consultas en DAX, consulte Comportamiento de la caché de consultas de DAX.