쿼리 작업에 대한 키 조건 표현식 - Amazon DynamoDB

쿼리 작업에 대한 키 조건 표현식

검색 기준을 지정하려면 테이블 또는 인덱스에서 읽을 항목을 결정하는 문자열인 키 조건 표현식을 사용합니다.

파티션 키 이름 및 값은 등식 조건으로 지정해야 합니다. 키 조건 표현식에는 키가 아닌 속성을 사용할 수 없습니다.

정렬 키의 두 번째 조건(있는 경우)은 옵션으로 입력할 수 있습니다. 단, 정렬 키 조건은 다음 중 한 가지 비교 연산자를 사용해야 합니다.

  • a = b - 속성 a가 값 b와 같은 경우 true

  • a < b - ab보다 작은 경우 true

  • a <= b - ab보다 작거나 같은 경우 true

  • a > b - ab보다 큰 경우 true

  • a >= b - ab보다 크거나 같은 경우 true

  • a BETWEEN b AND c - ab보다 크거나 같고 c보다 작거나 같은 경우 true

다음 함수도 지원됩니다.

  • begins_with (a, substr) - a 속성 값이 특정 하위 문자열로 시작하는 경우 true

다음 AWS Command Line Interface(AWS CLI) 예제는 키 조건 표현식의 사용을 보여 줍니다. 이 표현식들은 실제 값이 아닌 자리 표시자(:name:sub)를 사용합니다. 자세한 내용은 DynamoDB의 표현식 속성 이름표현식 속성 값 단원을 참조하세요.

Thread 테이블에 대한 쿼리를 실행하여 특정 ForumName(파티션 키)을 찾습니다. 쿼리 결과에 따라 ForumName 값을 갖는 항목을 모두 읽어옵니다. 정렬 키(Subject)가 KeyConditionExpression에 추가되지 않았기 때문입니다.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'

Thread 테이블에 대한 쿼리를 실행하여 특정 ForumName(파티션 키)을 찾습니다. 하지만 이번에는 Subject(정렬 키)를 갖는 항목만 반환됩니다.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json

--expression-attribute-values의 인수는 values.json 파일에 저장됩니다.

{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }

Reply 테이블에 대해 쿼리를 실행하여 특정 Id(파티션 키)를 찾습니다. 하지만 ReplyDateTime(정렬 키)이 몇 가지 문자로 시작되는 항목만 반환됩니다.

aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json

--expression-attribute-values의 인수는 values.json 파일에 저장됩니다.

{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }

키 조건 표현식에서는 첫 번째 문자가 a-z 또는 A-Z이고 나머지 문자(두 번째 문자부터 시작, 있는 경우)가 a-z, A-Z 또는 0-9인 경우에 한해 속성 이름은 아무거나 사용할 수 있습니다. 또한 속성 이름이 DynamoDB 예약어가 되어서는 안 됩니다. (예약어 전체 목록은 DynamoDB의 예약어 단원을 참조하세요.) 속성 이름이 이러한 요건을 만족하지 않으면 표현식 속성 이름을 자리 표시자로 정의해야 합니다. 자세한 내용은 DynamoDB의 표현식 속성 이름 단원을 참조하십시오.

일정한 파티션 키 값을 갖는 항목들에 대해서는 DynamoDB가 정렬 키 값을 기준으로 순서를 정렬하여 모두 함께 저장합니다. Query 작업을 할 때는 DynamoDB는 정렬된 순서대로 항목을 가져온 다음 FilterExpression과 모든 KeyConditionExpression(있는 경우)을 사용해 항목을 처리합니다. 그러면 클라이언트에게는 Query 결과만 다시 보내집니다.

Query 작업은 항상 결과 집합을 반환합니다. 일치하는 항목이 없다면 결과 집합은 비어 있습니다.

Query 결과는 항상 정렬 키 값을 기준으로 정렬됩니다. 정렬 키의 데이터 형식이 Number이면 결과가 숫자 순서대로 반환됩니다. 그렇지 않으면 결과가 UTF-8 바이트 순서로 반환됩니다. 기본적으로 정렬 순서는 오름차순입니다. 오름차순을 역순으로 바꾸려면 ScanIndexForward 파라미터를 false로 설정하면 됩니다.

단일 Query 작업은 최대 1MB의 데이터를 가져올 수 있습니다. 이러한 크기 제한은 FilterExpression 또는 ProjectionExpression이 결과에 반영되기 전에 적용됩니다. 응답에 LastEvaluatedKey가 존재하고 null이 아니라면 결과 집합을 페이지 매김해야 합니다(테이블 쿼리 결과 페이지 매김 참조).