DynamoDB에서의 쿼리 작업에 대한 기타 측면 - Amazon DynamoDB

DynamoDB에서의 쿼리 작업에 대한 기타 측면

이 섹션에서는 결과 크기 제한, 스캔된 항목과 반환된 항목 수 계산 비교, 읽기 용량 소비 모니터링, 읽기 일관성 제어 등 DynamoDB 쿼리 작업의 추가 측면을 다룹니다.

결과 세트의 항목 수 제한

Query 작업을 사용하여 읽는 항목 수를 제한할 수 있습니다. 이렇게 하려면 Limit 파라미터를 원하는 최대 항목 수로 설정합니다.

예를 들어 Limit 값이 6이고 필터 표현식이 없는 상태에서 테이블을 Query한다고 가정합니다. Query 결과에는 테이블에서 요청의 키 조건 표현식과 일치하는 처음 6개의 항목이 포함됩니다.

이제 필터 표현식을 Query에 추가한다고 가정합니다. 이 경우 DynamoDB는 최대 6개의 항목을 읽은 다음 필터 표현식과 일치하는 항목만 반환합니다. DynamoDB에서 더 많은 항목을 계속 읽은 경우 필터 표현식과 일치하는 항목이 더 많더라도 최종 Query 결과에는 여섯 개 이하의 항목이 포함됩니다.

결과 내 항목 수 계산

Query 응답에는 기준과 일치하는 항목 외에도 다음 요소가 포함됩니다.

  • ScannedCount - 필터 표현식(있는 경우)을 적용하기 에 키 조건 표현식과 일치한 항목 수입니다.

  • Count - 필터 표현식(있는 경우)을 적용한 에 남아 있는 항목 수입니다.

참고

필터 표현식을 사용하지 않으면 ScannedCountCount는 동일한 값을 갖습니다.

Query 결과 집합의 크기가 1MB보다 크면 ScannedCountCount는 총 항목 수의 일부만 표시합니다. 모든 결과를 검색하려면 여러 Query 작업을 수행해야 합니다(DynamoDB의 테이블 쿼리 결과 페이지 매김 참조).

Query 응답에는 해당하는 특정 Query 요청에 따라 처리된 항목의 ScannedCountCount가 포함됩니다. 모든 Query 요청의 총계를 얻으려면 ScannedCountCount의 누계를 계산할 수 있습니다.

쿼리에서 사용된 용량 단위

파티션 키 속성의 이름과 해당 속성의 단일 값을 제공하기만 하면 모든 테이블 또는 보조 인덱스를 Query할 수 있습니다. Query는 해당 파티션 키 값을 갖는 모든 항목을 반환합니다. 필요에 따라 정렬 키 속성을 제공하고 비교 연산자를 사용하여 검색 결과의 범위를 좁힐 수 있습니다. Query API 작업은 다음과 같은 읽기 용량 단위를 사용합니다.

다음을 Query하는 경우... DynamoDB는 다음에서 읽기 용량 단위를 사용합니다...
테이블의 할당된 읽기 용량.
글로벌 보조 인덱스 인덱스의 할당된 읽기 용량.
로컬 보조 인덱스 기본 테이블의 프로비저닝된 읽기 용량.

기본적으로, Query 작업은 얼마나 많은 읽기 용량을 사용하는지에 대한 데이터를 반환하지 않습니다. 하지만 Query 요청에서 ReturnConsumedCapacity 파라미터를 지정하여 이 정보를 얻을 수 있습니다. 다음은 ReturnConsumedCapacity에 대한 유효한 설정입니다.

  • NONE - 사용된 용량 데이터가 반환되지 않습니다. (이 값이 기본값입니다.)

  • TOTAL - 사용된 읽기 용량 단위의 집계 수가 응답에 포함됩니다.

  • INDEXES - 액세스한 각 테이블 및 인덱스에 사용된 용량과 함께 사용된 읽기 용량 단위의 집계 수가 응답에 표시됩니다.

DynamoDB는 애플리케이션에 반환되는 데이터 양이 아닌 항목 개수와 항목 크기를 기준으로 사용된 읽기 용량 단위의 수를 계산합니다. 이러한 이유로, 모든 속성을 요청하든(기본 동작) 또는 일부 속성만 요청하든(프로젝션 표현식 사용) 상관없이 사용된 용량 단위의 수는 동일합니다. 필터 표현식 사용 여부와 관계없이 숫자는 동일합니다. Query는 최대 4KB의 항목에 대해 초당 강력히 일관된 읽기 1회 또는 초당 최종적으로 일관된 읽기 2회를 수행하기 위해 최소한의 읽기 용량 단위를 사용합니다. 보다 큰 항목을 읽어야 하는 경우, DynamoDB에 추가 읽기 요청 단위가 필요합니다. 파티션 키의 양이 적은 빈 테이블과 매우 큰 테이블에서는 쿼리된 데이터 양을 초과하여 일부 추가 RCU에 요금이 부과될 수 있습니다. 여기에는 데이터가 없는 경우에도 Query 요청을 처리하는 데 드는 비용이 포함됩니다.

쿼리에 대한 읽기 정합성

기본적으로 Query 작업은 최종적 일관된 읽기를 수행합니다. 따라서 최근 완료된 PutItem 또는 UpdateItem 작업으로 인해 Query 결과에 변경 사항이 반영되지 않을 수 있습니다. 자세한 내용은 DynamoDB 읽기 일관성 단원을 참조하십시오.

강력한 일관된 읽기가 필요한 경우 Query 요청에서 ConsistentRead 매개 변수를 true로 설정합니다.