Outros aspectos do trabalho com a operação de consulta no DynamoDB - Amazon DynamoDB

Outros aspectos do trabalho com a operação de consulta no DynamoDB

Esta seção aborda aspectos adicionais da operação de consulta do DynamoDB, incluindo a limitação do tamanho dos resultados, a contagem de itens varridos versus retornados, o monitoramento do consumo da capacidade de leitura e o controle da consistência de leitura.

Limitar o número de itens no conjunto de resultados

Com a operação Query, você pode limitar o número de itens lidos. Para fazer isso, defina o parâmetro Limit com o número máximo de itens que você deseja.

Por exemplo, suponha que você execute a operação Query em uma tabela, com um valor de Limit igual a 6 e sem uma expressão de filtro. O resultado de Query contém os primeiros seis itens da tabela que correspondem à expressão de condição da chave da solicitação.

Agora suponha que você adicione uma expressão de filtro à operação Query. Nesse caso, o DynamoDB lê até seis itens e retorna somente aqueles que correspondem à expressão do filtro. O resultado final de Query contém seis itens ou menos, mesmo que mais itens tivessem correspondido à expressão do filtro se o DynamoDB continuasse lendo mais itens.

Contar os itens nos resultados

Além dos itens que correspondem aos seus critérios, a resposta de Query contém os elementos a seguir:

  • ScannedCount: o número de itens que corresponderam à expressão de condição principal, antes que uma expressão de filtro (se alguma) fosse aplicada.

  • Count: o número de itens que permaneceram depois que uma expressão de filtro (se alguma) foi aplicada.

nota

Se você não usar uma expressão de filtro, ScannedCount e Count terão o mesmo valor.

Se o tamanho do conjunto de resultados de Query for maior que 1 MB, ScannedCount e Count representarão apenas uma contagem parcial do total de itens. Você precisa executar várias operações Query para recuperar todos os resultados (consulte Paginar os resultados de consultas à tabela no DynamoDB).

Cada resposta de Query contém os valores de ScannedCount e de Count dos itens que foram processados pela solicitação de Query específica. Para obter os totais gerais de todas as solicitações de Query, você pode manter um total em execução de ScannedCount e Count.

Unidades de capacidade consumidas por consulta

Você pode usar Query em qualquer tabela ou índice secundário, desde que forneça o nome do atributo da chave de partição e um valor único para esse atributo. Query retorna todos os itens com esse valor de chave de partição. Opcionalmente, você pode fornecer um atributo de chave de classificação e usar um operador de comparação para refinar os resultados da pesquisa. Query As operações de API consomem unidades de capacidade de leitura da seguinte forma:

Se você executar uma operação Query... O DynamoDB consumirá unidades de capacidade de leitura de...
Tabela A capacidade de leitura provisionada da tabela.
Índice secundário global A capacidade de leitura provisionada do índice.
Índice secundário local A capacidade de leitura provisionada da tabela-base.

Por padrão, uma operação Query não retorna quaisquer dados sobre quanta capacidade de leitura ela consome. Entretanto, você pode especificar o parâmetro ReturnConsumedCapacity em uma solicitação de Query para obter essas informações. A seguir estão as configurações válidas de ReturnConsumedCapacity:

  • NONE: nenhum dado de capacidade consumida é retornado. (Esse é o padrão.)

  • TOTAL: a resposta inclui o número agregado de unidades de capacidade de leitura consumidas.

  • INDEXES: a resposta mostra o número agregado de unidades de capacidade de leitura consumidas, junto com a capacidade consumida para cada tabela e índice acessados.

O DynamoDB calcula o número de unidades de capacidade de leitura consumidas com base na quantidade e no tamanho desses itens, não na quantidade de dados exibidos para uma aplicação. Por esse motivo, o número de unidades de capacidade consumidas será o mesmo, independentemente de você solicitar todos os atributos (o comportamento padrão) ou apenas alguns deles (usando uma expressão de projeção). O número também é o mesmo, independentemente de você usar ou não uma expressão de filtro. Query consome uma unidade de capacidade mínima de leitura para realizar uma leitura altamente consistente por segundo ou duas leituras finais consistentes por segundo para um item de até 4 KB. Se você precisar ler um item com mais de 4 KB, o DynamoDB precisará de unidades de solicitação de leitura adicionais. Tabelas vazias e tabelas muito grandes que têm uma quantidade esparsa de chaves de partição podem ter algumas RCUs adicionais cobradas além da quantidade de dados consultados. Isso cobre o custo de atender à solicitação Query, mesmo que não existam dados.

Consistência de leitura para consulta

Uma operação Query executa leituras finais consistentes, por padrão. Isso significa que os resultados de Query talvez não reflitam as alterações causadas pelas operações PutItem ou UpdateItem concluídas recentemente. Para ter mais informações, consulte Consistência de leitura do DynamoDB.

Se você precisar de leituras fortemente consistentes, defina o parâmetro ConsistentRead como true na solicitação de Query.