Otros aspectos del trabajo con la operación Query - Amazon DynamoDB

Otros aspectos del trabajo con la operación Query

Limitación del número de elementos del conjunto de resultados

Con la operación Query, puede limitar el número de elementos que lee. Para ello, establezca el parámetro Limit en el número máximo de elementos que desee.

Por ejemplo, suponga que utiliza Query en una tabla con un valor de Limit de 6 y sin expresión de filtro. El resultado de Query contendrá los seis primeros elementos de la tabla que coincidan con la expresión de condición de clave de la solicitud.

Ahora, suponga que agrega una expresión de filtro a Query. En este caso, DynamoDB lee hasta seis elementos y, a continuación, devuelve solo aquellos que coinciden con la expresión de filtro. El resultado final de Query contiene seis elementos o menos, aunque más elementos hubieran coincidido con la expresión de filtro si DynamoDB hubiera seguido leyendo más elementos.

Recuento de los elementos en los resultados

Además de los elementos que coinciden con los criterios, la respuesta de Query contiene las entradas siguientes:

  • ScannedCount: número de elementos que coinciden con la expresión de condición de clave antes de aplicar una expresión de filtro (si la hay).

  • Count: número de elementos restantes después de aplicar una expresión de filtro (si la hay).

nota

Si no se utiliza una expresión de filtro, ScannedCount y Count tendrán el mismo valor.

Si el tamaño del conjunto de resultados de Query es mayor que 1 MB, entonces ScannedCount y Count representarán únicamente un recuento parcial de los elementos totales. Deberá llevar a cabo varias operaciones Query para recuperar todos los resultados (consulte Paginación de los resultados de la consulta de la tabla).

Cada respuesta de Query contendrá los valores de ScannedCount y Count de los elementos que se han procesado en esa solicitud Query concreta. Para obtener totales globales para todas las solicitudes Query, puede llevar un recuento total de ScannedCount y Count.

Unidades de capacidad consumidas por la consulta

Puede utilizar cualquier tabla o índice secundario Query, siempre que proporcione el nombre del atributo de clave de partición y un valor único para ese atributo. Query devuelve todos los elementos que contienen ese valor de clave de partición. Opcionalmente, puede proporcionar un atributo de clave de clasificación y utilizar un operador de comparación para limitar los resultados de la búsqueda. Query Las operaciones de la API consumen unidades de capacidad de lectura, como se indica a continuación.

Si Query se aplica a... DynamoDB consume unidades de capacidad de lectura de...
Tabla La capacidad de lectura aprovisionada de la tabla.
Índice secundario global La capacidad de lectura aprovisionada del índice.
Índice secundario local La capacidad de lectura aprovisionada de la tabla base.

De forma predeterminada, una operación Query no devuelve datos sobre la cantidad de capacidad de lectura que consume. Sin embargo, puede especificar el parámetro ReturnConsumedCapacity en una solicitud Query para obtener esta información. A continuación se muestran los ajustes válidos de ReturnConsumedCapacity:

  • NONE: no se devuelven datos de capacidad consumida. (Esta es la opción predeterminada.)

  • TOTAL: la respuesta incluye el número total de unidades de capacidad de lectura consumidas.

  • INDEXES: la respuesta muestra el número total de unidades de capacidad de lectura consumidas, así como la capacidad consumida de cada tabla e índice a los que se ha obtenido acceso.

DynamoDB calcula el número de unidades de capacidad de lectura consumidas según el número de elementos y el tamaño de dichos elementos, no según la cantidad de datos que se devuelven a una aplicación. Por este motivo, el número de unidades de capacidad consumidas es el mismo si se solicitan todos los atributos (el comportamiento predeterminado) o solo algunos de ellos (mediante una expresión de proyección). El número también es el mismo tanto si se utiliza una expresión de filtro como si no. Queryconsume una unidad de capacidad de lectura mínima para realizar una lectura altamente coherente por segundo o dos lecturas coherentes posteriores por segundo para un elemento de hasta 4 KB. Para leer un elemento mayor que 4 KB, DynamoDB necesita unidades de solicitud de lectura adicionales. Con las tablas vacías y las tablas muy grandes con una cantidad escasa de claves de partición, es posible que se cobren algunas RCU adicionales además de la cantidad de datos consultados. Esto cubre el costo de atender la solicitud Query, incluso si no hay datos.

Coherencia de lectura para la consulta

De forma predeterminada, una operación Query lleva a cabo lecturas consistentes finales. Esto significa que los resultados de Query podrían no reflejar los cambios provocados por operaciones PutItem o UpdateItem realizadas recientemente. Para obtener más información, consulte Coherencia de lectura.

Si requiere lecturas de consistencia alta, establezca el parámetro ConsistentRead en true en la solicitud Query.