스캔 - Amazon DynamoDB

스캔

중요

이 단원에서 언급되는 API 버전 2011-12-05는 사용 중단되었으며 새 애플리케이션에 사용해서는 안 됩니다.

현재 하위 수준 API에 대한 설명서는 Amazon DynamoDB API 참조 섹션을 참조하세요.

설명

Scan 작업은 테이블에 대한 전체 스캔을 수행하여 하나 이상의 항목 및 해당 속성을 반환합니다. ScanFilter를 제공하여 더 많은 특정 결과를 가져옵니다.

참고

스캔한 총 항목의 수가 1MB 제한을 초과하면 스캔이 중지되고 LastEvaluatedKey과 함께 사용자에게 결과가 반환되며 후속 작업에서 스캔을 계속합니다. 또한 결과에는 제한을 초과하는 항목 수가 포함되어 있습니다. 스캔에는 필터 조건을 충족하는 테이블 데이터가 없을 수 있습니다.

결과 세트는 최종적으로 일관적입니다.

요청

구문

// This header is abbreviated. // For a sample of a complete header, see DynamoDB 하위 수준 API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.Scan content-type: application/x-amz-json-1.0 {"TableName":"Table1", "Limit": 2, "ScanFilter":{ "AttributeName1":{"AttributeValueList":[{"S":"AttributeValue"}],"ComparisonOperator":"EQ"} }, "ExclusiveStartKey":{ "HashKeyElement":{"S":"AttributeName1"}, "RangeKeyElement":{"N":"AttributeName2"} }, "AttributesToGet":["AttributeName1", "AttributeName2", "AttributeName3"]}, }
명칭 설명 필수
TableName

요청된 항목을 포함하는 테이블의 이름입니다.

타입: 문자열

AttributesToGet

속성 이름의 배열입니다. 속성 이름을 지정하지 않으면 모든 속성이 반환됩니다. 일부 속성을 찾을 수 없는 경우 결과에 표시되지 않습니다.

형식: 배열

아니요
Limit

평가할 최대 항목 수입니다(반드시 일치하는 항목 수는 아님). DynamoDB가 결과를 처리하는 중에 한도까지 항목 수를 처리하면, 이를 중지하고 해당 지점까지 일치하는 값을 반환하며, 후속 작업에 LastEvaluatedKey를 적용하여 항목 가져오기를 계속합니다. 또한 DynamoDB가 1MB에 도달하기 전에 스캔한 데이터 설정 크기가 이 한도를 초과하면, 스캔을 중지하고 이 한도까지 일치하는 값을 반환하며, 후속 작업에 LastEvaluatedKey를 적용하여 스캔을 계속합니다.

형식: 숫자

아니요
Count

true로 설정한 경우, DynamoDB는 스캔 작업의 총 항목 수를 반환합니다. 작업에 할당된 필터에 대해 일치하는 항목이 없는 경우도 마찬가지입니다. 수 계산 전용 스캔에 Limit 파라미터를 적용할 수 있습니다.

AttributesToGet 목록을 제공하는 동안 Counttrue로 설정하지 마세요. 그렇지 않으면 DynamoDB가 유효성 검사 오류를 반환합니다. 자세한 내용은 결과 내 항목 수 계산 단원을 참조하십시오.

타입: 부울

아니요
ScanFilter

스캔 결과를 평가하고 원하는 값만 반환합니다. 여러 조건이 "AND" 작업으로 처리됩니다. 모든 조건이 결과에 포함되어야 합니다.

형식: 비교 연산자가 포함된 값에 대한 속성 이름의 맵.

아니요
ScanFilter:AttributeValueList

필터의 스캔 결과를 평가하는 값과 조건입니다.

형식: AttributeValue에 대한 Condition의 맵.

아니요
ScanFilter:​ ComparisonOperator

같다, 크다 등 제공한 속성을 평가하는 기준입니다. 다음은 스캔 작업에 대해 유효한 비교 연산자입니다.

참고

크다, 같음 또는 작다 등의 문자열 값 비교는 ASCII 문자 코드 값을 기준으로 합니다. 예를 들어 aA보다 크고 aaB보다 큽니다. 코드 값 목록은 http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters를 참조하세요.

이진수의 경우에는, 예를 들어 쿼리 표현식을 평가할 때처럼 DynamoDB가 이진수 값을 비교하면서 이진수 데이터의 각 바이트를 부호가 없는 것으로 처리합니다.

형식: 문자열 또는 이진수

아니요
 

EQ : 같음.

EQ의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 같지 않습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 같지 않습니다.

 
 

NE : 같지 않음.

NE의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 같지 않습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 같지 않습니다.

 
 

LE : 작거나 같음.

LE의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 같지 않습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 비교할 수 없습니다.

 
 

LT : 작음.

LT의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 같지 않습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 비교할 수 없습니다.

 
 

GE : 크거나 같음.

GE의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 같지 않습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 비교할 수 없습니다.

 
 

GT : 큼.

GT의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 같지 않습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 비교할 수 없습니다.

 
 

NOT_NULL : 속성 있음.

 
 

NULL : 속성 없음.

 
 

CONTAINS : 세트의 하위 시퀀스 또는 값 확인.

CONTAINS의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 비교의 대상 속성이 문자열이면 작업은 하위 문자열 일치를 확인합니다. 비교의 대상 속성이 이진수이면 작업은 입력과 일치하는 대상의 하위 시퀀스를 찾습니다. 비교의 대상 속성이 세트("SS", "NS" 또는 "BS")이면 작업은 해당 세트의 구성 요소(하위 문자열 아님)를 확인합니다.

 
 

NOT_CONTAINS : 세트의 하위 시퀀스 부재 또는 값의 부재 확인.

NOT_CONTAINS의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 하나의 AttributeValue만 포함할 수 있습니다(집합 아님). 비교의 대상 속성이 문자열이면 작업은 하위 문자열이 일치하지 않는지 확인합니다. 비교의 대상 속성이 이진수이면 입력과 일치하는 대상의 하위 시퀀스가 없는지 확인합니다. 비교의 대상 속성이 세트("SS", "NS" 또는 "BS")이면 작업은 해당 세트의 구성 요소(하위 문자열 아님)의 부재를 확인합니다.

 
 

BEGINS_WITH : 접두사 여부 확인.

BEGINS_WITH의 경우, AttributeValueList에 문자열 또는 이진수(숫자 또는 집합 제외) 중 한 가지 형식의 AttributeValue만 저장됩니다. 비교 대상의 속성은 문자열 또는 이진수가 되어야 합니다(숫자 또는 집합 제외).

 
 

IN : 정확한 일치 확인.

IN의 경우, AttributeValueList는 문자열, 숫자 또는 이진수 유형 중 두 개 이상의 AttributeValue를 포함할 수 있습니다(집합 아님). 비교 대상 속성이 일치하려면 형식이 동일하고 값도 정확해야 합니다. 문자열은 문자열 세트와 일치하지 않습니다.

 
 

BETWEEN : 첫 번째 값보다 크거나 같음 및 두 번째 값보다 작거나 같음.

BETWEEN의 경우, 문자열, 숫자 또는 이진수(집합 제외) 중에서 동일한 형식으로 2개의 AttributeValueList 요소가 AttributeValue에 저장되어야 합니다. 대상 값이 첫 번째 요소보다 크거나 같을 때, 그리고 두 번째 요소보다 작거나 같을 때 대상 속성이 일치합니다. 요청에서 지정한 형식과 다른 형식의 AttributeValue 값이 항목에 저장되면 값은 일치하지 않습니다. 예를 들어 {"S":"6"}{"N":"6"}과 비교할 수 없습니다. 또한 {"N":"6"}{"NS":["6", "2", "1"]}과 비교할 수 없습니다.

 
ExclusiveStartKey

이전 스캔을 계속할 항목의 기본 키입니다. 결과 세트 크기 또는 Limit 파라미터 중 하나로 인해 이전 스캔 작업이 전체 테이블을 스캔하기 전에 중단된 경우 해당 스캔은 이 값을 제공할 수 있습니다. LastEvaluatedKey는 새 스캔 요청으로 다시 전달되어 해당 지점에서 작업을 계속할 수 있습니다.

형식: 복합 기본 키의 HashKeyElement, 또는 HashKeyElementRangeKeyElement.

아니요

응답

구문

HTTP/1.1 200 x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 229 {"Count":2,"Items":[{ "AttributeName1":{"S":"AttributeValue1"}, "AttributeName2":{"S":"AttributeValue2"}, "AttributeName3":{"S":"AttributeValue3"} },{ "AttributeName1":{"S":"AttributeValue4"}, "AttributeName2":{"S":"AttributeValue5"}, "AttributeName3":{"S":"AttributeValue6"}, "AttributeName5":{"B":"dmFsdWU="} }], "LastEvaluatedKey": {"HashKeyElement":{"S":"AttributeName1"}, "RangeKeyElement":{"N":"AttributeName2"}, "ConsumedCapacityUnits":1, "ScannedCount":2} }
명칭 설명
Items

작업 파라미터를 충족하는 속성의 컨테이너입니다.

형식: 속성 이름 맵과 속성의 데이터 형식 및 값.

Count

응답의 항목 수. 자세한 내용은 결과 내 항목 수 계산 단원을 참조하십시오.

형식: 숫자

ScannedCount

필터를 적용하기 전 전체 스캔의 항목 수입니다. ScannedCount 값이 높지만 Count 결과가 거의 없거나 전혀 없는 경우 스캔 작업이 비효율적이라는 것을 나타냅니다. 자세한 내용은 결과 내 항목 수 계산 단원을 참조하십시오.

형식: 숫자

LastEvaluatedKey 스캔 작업이 중지된 항목의 기본 키입니다. 후속 스캔 작업에 이 값을 제공하여 해당 지점부터 작업을 계속합니다.

전체 스캔 결과 설정이 완료되면(예: 작업이 "마지막 페이지"를 처리)LastEvaluatedKeynull입니다.

ConsumedCapacityUnits

작업에 사용된 읽기 용량 단위의 수. 이 값은 할당 처리량에 적용되는 수를 나타냅니다. 자세한 정보는 프로비저닝된 용량 모드 섹션을 참조하세요.

형식: 숫자

특수 오류

Error 설명
ResourceNotFoundException 지정된 테이블을 찾을 수 없습니다.

예제

AWS SDK를 사용하는 예는 DynamoDB에서 스캔 작업 단원을 참조하세요.

샘플 요청

// This header is abbreviated. For a sample of a complete header, see DynamoDB 하위 수준 API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.Scan content-type: application/x-amz-json-1.0 {"TableName":"1-hash-rangetable","ScanFilter":{}}

샘플 응답

HTTP/1.1 200 x-amzn-RequestId: 4e8a5fa9-71e7-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 465 {"Count":4,"Items":[{ "date":{"S":"1980"}, "fans":{"SS":["Dave","Aaron"]}, "name":{"S":"Airplane"}, "rating":{"S":"***"} },{ "date":{"S":"1999"}, "fans":{"SS":["Ziggy","Laura","Dean"]}, "name":{"S":"Matrix"}, "rating":{"S":"*****"} },{ "date":{"S":"1976"}, "fans":{"SS":["Riley"]}," name":{"S":"The Shaggy D.A."}, "rating":{"S":"**"} },{ "date":{"S":"1985"}, "fans":{"SS":["Fox","Lloyd"]}, "name":{"S":"Back To The Future"}, "rating":{"S":"****"} }], "ConsumedCapacityUnits":0.5 "ScannedCount":4}

샘플 요청

// This header is abbreviated. For a sample of a complete header, see DynamoDB 하위 수준 API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.Scan content-type: application/x-amz-json-1.0 content-length: 125 {"TableName":"comp5", "ScanFilter": {"time": {"AttributeValueList":[{"N":"400"}], "ComparisonOperator":"GT"} } }

샘플 응답

HTTP/1.1 200 OK x-amzn-RequestId: PD1CQK9QCTERLTJP20VALJ60TRVV4KQNSO5AEMVJF66Q9ASUAAJG content-type: application/x-amz-json-1.0 content-length: 262 Date: Mon, 15 Aug 2011 16:52:02 GMT {"Count":2, "Items":[ {"friends":{"SS":["Dave","Ziggy","Barrie"]}, "status":{"S":"chatting"}, "time":{"N":"2000"}, "user":{"S":"Casey"}}, {"friends":{"SS":["Dave","Ziggy","Barrie"]}, "status":{"S":"chatting"}, "time":{"N":"2000"}, "user":{"S":"Fredy"} }], "ConsumedCapacityUnits":0.5 "ScannedCount":4 }

샘플 요청

// This header is abbreviated. For a sample of a complete header, see DynamoDB 하위 수준 API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.Scan content-type: application/x-amz-json-1.0 {"TableName":"comp5", "Limit":2, "ScanFilter": {"time": {"AttributeValueList":[{"N":"400"}], "ComparisonOperator":"GT"} }, "ExclusiveStartKey": {"HashKeyElement":{"S":"Fredy"},"RangeKeyElement":{"N":"2000"}} }

샘플 응답

HTTP/1.1 200 OK x-amzn-RequestId: PD1CQK9QCTERLTJP20VALJ60TRVV4KQNSO5AEMVJF66Q9ASUAAJG content-type: application/x-amz-json-1.0 content-length: 232 Date: Mon, 15 Aug 2011 16:52:02 GMT {"Count":1, "Items":[ {"friends":{"SS":["Jane","James","John"]}, "status":{"S":"exercising"}, "time":{"N":"2200"}, "user":{"S":"Roger"}} ], "LastEvaluatedKey":{"HashKeyElement":{"S":"Riley"},"RangeKeyElement":{"N":"250"}}, "ConsumedCapacityUnits":0.5 "ScannedCount":2 }