DAX: como ele funciona - Amazon DynamoDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

DAX: como ele funciona

O Amazon DynamoDB Accelerator (DAX) foi projetado para ser executado dentro de um ambiente da Amazon Virtual Private Cloud (Amazon VPC). O serviço Amazon VPC define uma rede virtual que lembra muito um datacenter tradicional. Com uma VPC, você tem controle sobre o intervalo de endereços IP, as sub-redes, as tabelas de roteamento, os gateways de rede e as configurações de segurança. Você pode iniciar um cluster do DAX em sua rede virtual e controlar o acesso ao cluster usando grupos de segurança da Amazon VPC.

nota

Se sua conta da AWS foi criada após 4 de dezembro de 2013, você já tem uma VPC padrão em cada região da AWS. A VPC está pronta para ser usada imediatamente, sem precisar executar quaisquer etapas de configuração adicionais.

Para obter mais informações, consulte VPC padrão e sub-redes padrão no Guia do usuário da Amazon VPC.

O diagrama a seguir mostra uma visão geral de alto nível do DAX:


            Diagrama de fluxo de trabalho que mostra a interação do aplicativo, do cliente do DAX e do cluster do DAX em uma VPC.

Para criar um cluster do DAX, você deve usar o AWS Management Console. A não ser que você especifique o contrário, o cluster do DAX será executado em sua VPC padrão. Para executar sua aplicação, você deve executar uma instância do Amazon EC2 na Amazon VPC. Em seguida, você implanta a aplicação (com o cliente do DAX) na instância do EC2.

Em tempo de execução, o cliente do DAX direciona todas as solicitações da API do DynamoDB da sua aplicação para o cluster do DAX. Se o DAX puder, ele processará uma dessas solicitações da API diretamente. Caso contrário, ele passará a solicitação para o DynamoDB.

Por fim, o cluster do DAX retorna os resultados para sua aplicação.

Como o DAX processa solicitações

Um cluster do DAX consiste em um ou mais nós. Cada nó executa sua própria instância do software de armazenamento em cache do DAX. Um dos nós serve como o nó primário do cluster. Os nós adicionais (se houver) servem como réplicas de leitura. Para mais informações, consulte Nós.

Sua aplicação pode acessar o DAX especificando o endpoint do cluster do DAX. O software cliente do DAX funciona com o endpoint do cluster para executar balanceamento de carga e roteamento inteligentes.

Operações de leitura

O DAX pode responder às seguintes chamadas de API:

  • GetItem

  • BatchGetItem

  • Query

  • Scan

Se a solicitação especificar leituras finais consistentes (o comportamento padrão), ela tentará ler o item do DAX:

  • Se o DAX tiver o item disponível (um acerto de cache), o DAX retornará o item para a aplicação sem acessar o DynamoDB.

  • Se o DAX não tiver o item disponível (um erro de cache), o DAX passará a solicitação para o DynamoDB. Ao receber a resposta do DynamoDB, o DAX retorna os resultados para a aplicação. Mas também grava os resultados no cache do nó primário.

nota

Se houver réplicas de leitura no cluster, o DAX manterá automaticamente as réplicas sincronizadas com o nó principal. Para mais informações, consulte Clusters.

Se a solicitação especificar leituras fortemente consistentes, o DAX passa a solicitação para o DynamoDB. Os resultados do DynamoDB não são armazenados em cache no DAX. Em vez disso, eles são simplesmente retornados ao aplicativo.

Operações de gravação

As seguintes operações da API do DAX são consideradas "write-through":

  • BatchWriteItem

  • UpdateItem

  • DeleteItem

  • PutItem

Com essas operações, os dados são gravados primeiro na tabela do DynamoDB e no cluster do DAX. A operação é bem-sucedida somente se os dados são gravados com êxito na tabela e no DAX.

Outras operações

O DAX não reconhece as operações do DynamoDB para gerenciar tabelas (tais como CreateTable, UpdateTable e assim por diante). Se a sua aplicação precisar executar essas operações, ela precisará acessar o DynamoDB diretamente em vez de usar o DAX.

Para obter informações detalhadas sobre a consistência do DAX e do DynamoDB, consulte Modelos de consistência do DAX e do DynamoDB.

Para obter informações sobre como as transações funcionam no DAX, consulte Usar APIs transacionais no DynamoDB Accelerator (DAX).

Limitação de taxa de solicitações

Se o número de solicitações enviadas ao DAX exceder a capacidade de um nó, o DAX limitará a taxa na qual aceita solicitações adicionais retornando uma ThrottlingException. O DAX avalia continuamente a utilização da CPU para determinar o volume de solicitações que ela pode processar enquanto mantém um estado de cluster íntegro.

Você pode monitorar a métrica ThrottledRequestCount publicada pelo DAX no Amazon CloudWatch. Se você vir essas exceções regularmente, considere aumentar o cluster.

Cache de itens

O DAX mantém um cache de itens para armazenar os resultados das operações GetItem e BatchGetItem. Os itens no cache representam dados finais consistentes do DynamoDB e são armazenados por seus valores de chave primária.

Quando uma aplicação envia uma solicitação de GetItem ou BatchGetItem, o DAX tenta ler os itens diretamente do cache de itens usando os valores de chave especificados. Se os itens forem encontrados (acerto de cache), o DAX os retornará imediatamente para a aplicação. Se os itens não forem encontrados (erro de cache), o DAX envia a solicitação para o DynamoDB. O DynamoDB processa as solicitações usando leituras eventualmente consistentes e retorna os resultados para o DAX. O DAX armazena-os no cache de itens e, em seguida, retorna-os para a aplicação.

O cache de itens tem uma configuração de vida útil (TTL) que é 5 minutos por padrão. O DAX atribui uma marca de data e hora para cada item que ele grava no cache de itens. Um item expira se ele permaneceu no cache por mais tempo que a configuração de TTL. Se você emitir uma solicitação de GetItem em um item expirado, isso será considerado um erro de cache, e o DAX enviará a solicitação de GetItem ao DynamoDB.

nota

Você pode especificar a configuração de TTL para o cache de itens ao criar um novo cluster do DAX. Para mais informações, consulte Gerenciar clusters do DAX .

O DAX também mantém uma lista Last Recently Used (LRU – Menos usados recentemente) para o cache de itens. A lista de LRU rastreia quando um item foi gravado pela primeira vez no cache, e quando o item foi lido pela última vez no cache. Se o cache de itens encher, o DAX removerá os itens mais antigos (mesmo que ainda não tenham expirado) para abrir espaço para novos itens. O algoritmo de LRU está sempre habilitado para o cache de itens, e não pode ser configurado pelo usuário.

Se você especificar zero como a configuração de TTL do cache de itens, os itens no cache de itens só serão atualizados devido a uma remoção por LRU ou a uma operação "write-through".

Para obter informações detalhadas sobre a consistência do cache de itens no DAX, consulte Comportamento do cache de itens do DAX.

Cache de consultas

O DAX também mantém um cache de consultas para armazenar os resultados das operações Query e Scan. Os itens nesse cache representam conjuntos de resultados de consultas e verificações nas tabelas do DynamoDB. Esses conjuntos de resultados são armazenados por seus valores de parâmetro.

Quando uma aplicação envia uma solicitação de Query ou Scan, o DAX tenta ler um conjunto de resultados correspondente no cache de consultas usando os valores dos parâmetros especificados. Se o conjunto de resultados for encontrado (acerto de cache), o DAX o retornará para a aplicação imediatamente. Se o conjunto de resultados não for encontrado (erro de cache), o DAX enviará a solicitação para o DynamoDB. O DynamoDB processa as solicitações usando leituras finais consistentes e retorna o conjunto de resultados para o DAX. O DAX o armazena no cache de itens e, em seguida, retorna-o para a aplicação.

nota

Você pode especificar a configuração de TTL para o cache de consultas ao criar um novo cluster do DAX. Para mais informações, consulte Gerenciar clusters do DAX .

O DAX também mantém uma lista de LRU para o cache de consultas. A lista rastreia quando um conjunto de resultados foi gravado pela primeira vez no cache, e quando o resultado foi lido pela última vez no cache. Se o cache de consultas encher, o DAX removerá os conjuntos de resultados mais antigos (mesmo que eles ainda não tenham expirado) para abrit espaço para novos conjuntos de resultados. O algoritmo LRU está sempre ativado para o cache de consultas, e não pode ser configurado pelo usuário.

Se você especificar zero como configuração de TTL do cache de consultas, a resposta da consulta não será armazenada em cache.

Para obter informações detalhadas sobre a consistência do cache de consultas no DAX, consulte Comportamento do cache de consultas DAX.