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
.