Operações de leitura e de gravação - Amazon DynamoDB

Operações de leitura e de gravação

As operações de leitura do DynamoDB permitem que você recupere um ou mais itens de uma tabela especificando o valor da chave de partição e, opcionalmente, o valor da chave de classificação. Usando operações de gravação do DynamoDB, é possível inserir, atualizar ou excluir itens em uma tabela. Este tópico explica o consumo unitário de capacidade para essas duas operações.

Consumo unitário de capacidade para operações de leitura

As solicitações de leitura do DynamoDB podem ser altamente consistentes, consistentes ao final ou transacionais.

  • Uma solicitação de leitura altamente consistente de um item de até 4 KB exige uma unidade de leitura.

  • Uma solicitação de leitura final consistente de um item de até 4 KB exige meia unidade de leitura.

  • Uma solicitação de leitura transacional de um item de até 4 KB exige duas unidades de leitura.

Para saber mais sobre os modelos de consistência de leitura do DynamoDB, consulte Consistência de leituras.

Os tamanhos de item para leituras são arredondados para o próximo múltiplo de 4 KB. Por exemplo, ler um item com 3.500 bytes consome a mesmo throughput que a leitura de um item de 4 KB.

Se você precisar ler um item com mais de 4 KB, o DynamoDB necessitará de unidades de leitura adicionais. O número total de unidades de leitura depende do tamanho do item e do tipo de leitura desejada (isto é, final consistente ou altamente consistente). Por exemplo, se o tamanho do item for 8 KB, serão necessárias duas unidades de leitura para comportar uma leitura altamente consistente. Você precisará de uma unidade se escolher leituras finais consistentes ou quatro unidades para uma solicitação de leitura transacional.

A lista a seguir descreve como as operações de leitura do DynamoDB consomem unidades de leitura:

  • GetItem: lê um único item de uma tabela. Para determinar o número de unidades de leitura que GetItem consumirá, arredonde o tamanho do item para o próximo limite de 4 KB. Esse será o número de unidades de capacidade necessárias se você tiver especificado uma leitura altamente consistente. Em relação a uma leitura final consistente, que é o padrão, divida esse número por dois.

    Por exemplo, se você ler um item que tem 3,5 KB, o DynamoDB arredondará o tamanho do item para 4 KB. Se você ler um item de 10 KB, o DynamoDB arredondará o tamanho do item para 12 KB.

  • BatchGetItem: lê até cem itens de uma ou mais tabelas. O DynamoDB processa cada item no lote como uma solicitação GetItem individual. O DynamoDB primeiro arredonda o tamanho de cada item para o próximo limite de 4 KB e, depois, calcula o tamanho total. O resultado não é necessariamente o mesmo que o tamanho total de todos os itens. Por exemplo, se BatchGetItem ler dois itens com os tamanhos 1,5 KB e 6,5 KB, o DynamoDB calculará o tamanho como 12 KB (4 KB + 8 KB). O DynamoDB não calcula o tamanho como 8 KB (1,5 KB + 6,5 KB).

  • Query: lê vários itens que têm o mesmo valor de chave de partição. Todos os itens exibidos são tratados como uma única operação de leitura, em que o DynamoDB calcula o tamanho total de todos os itens. Em seguida, o DynamoDB arredonda o tamanho para o próximo limite de 4 KB. Por exemplo, suponha que a consulta retorne 10 itens cujo tamanho combinado é 40,8 KB. O DynamoDB arredonda o tamanho do item da operação para 44 KB. Se uma consulta retornar 1.500 itens de 64 bytes cada, o tamanho cumulativo será 96 KB.

  • Scan: lê todos os itens em uma tabela. O DynamoDB considera o tamanho dos itens que são avaliados, não o tamanho dos itens retornados pela verificação. Para ter mais informações sobre as operações Scan, consulte Trabalhar com verificações no DynamoDB.

Importante

Se você executar uma operação de leitura em um item inexistente, o DynamoDB ainda assim consumirá o throughput de leitura, conforme descrito acima. Para as operações Query/Scan, você ainda pagará por um throughput de leitura adicional com base na consistência da leitura e no número de partições pesquisadas para atender à solicitação, mesmo que não existam dados.

Para qualquer operação que retorna itens, você pode solicitar um subconjunto de atributos a serem recuperados. No entanto, isso não tem nenhum impacto sobre os cálculos de tamanho dos itens. Além disso, Query e Scan podem retornar as contagens de itens, em vez de valores de atributo. A contagem de itens exige a mesma quantidade de unidades de leitura e está sujeita aos mesmos cálculos de tamanho de item. Isso ocorre porque o DynamoDB precisa ler cada item para aumentar a contagem.

Consumo unitário de capacidade para operações de gravação

Uma unidade de gravação representa uma gravação para um item com até 1 KB. Se você precisar gravar um item maior que 1 KB, o DynamoDB precisará consumir unidades de gravação adicionais. As solicitações de gravação transacional exigem duas unidades de gravação para executar uma gravação para itens de até 1 KB. O número total de unidades de solicitação de gravação necessárias varia de acordo com o tamanho do item. Por exemplo, se o tamanho do item for 2 KB, serão necessárias duas unidades de gravação para comportar uma solicitação de gravação ou quatro unidades de gravação para uma solicitação de gravação transacional.

Os tamanhos de item para gravações são arredondados até o próximo múltiplo de 1 KB. Por exemplo, gravar um item de 500 bytes consome a mesmo throughput que gravar um item de 1 KB.

A lista a seguir descreve como as operações de gravação do DynamoDB consomem unidades de gravação:

  • PutItem: grava um único item em uma tabela. Se um item com a mesma chave primária existe na tabela, a operação substitui o item. Para calcular o consumo de throughput provisionado, o tamanho do item que importa é o maior dos dois.

  • UpdateItem: modifica um único item na tabela. O DynamoDB considera o tamanho do item como ele aparece antes e depois da atualização. O throughput provisionado consumido reflete o maior desses tamanhos de item. Mesmo se você atualizar um subconjunto dos atributos do item, UpdateItem ainda consumirá a quantidade total do throughput provisionado (o maior tamanho de item de “antes” e “depois”).

  • DeleteItem: remove um único item de uma tabela. O consumo de throughput provisionado é baseado no tamanho do item excluído.

  • BatchWriteItem: grava até 25 itens em uma ou mais tabelas. O DynamoDB processa cada item no lote como uma solicitação PutItem ou DeleteItem individual (atualizações não são compatíveis). O DynamoDB primeiro arredonda o tamanho de cada item para o próximo limite de 1 KB e, depois, calcula o tamanho total. O resultado não é necessariamente o mesmo que o tamanho total de todos os itens. Por exemplo, se BatchWriteItem ler dois itens com os tamanhos 500 bytes e 3,5 KB, o DynamoDB calculará o tamanho como 5 KB (1 KB + 4 KB). O DynamoDB não calcula o tamanho como 4 KB (500 KB + 3,5 KB).

Para operações PutItem, UpdateItem e DeleteItem, o DynamoDB arredonda o tamanho do item até o próximo 1 KB. Por exemplo, se você inserir ou excluir um item de 1,6 KB, o DynamoDB arredondará o tamanho do item até 2 KB.

As operações PutItem, UpdateItem e DeleteItem permitem gravações condicionais, em que você especifica uma expressão que deve ser verdadeira para a operação ter êxito. Se a expressão for falsa, o DynamoDB ainda consumirá unidades de capacidade de gravação da tabela. A quantidade de unidades de capacidade de gravação consumida depende do tamanho do item. Esse item já pode existir na tabela ou ser um novo que você esteja tentando criar ou atualizar. Por exemplo, vamos supor que um item que já existe tenha 300 KB. O novo item que você está tentando criar ou atualizar tem 310 KB. As unidades de capacidade de gravação consumidas terão 310 KB para o novo item.