2016-09-06 10 views
1

DynamoDB의 작동 방식을 잘 알고있는 분께 감사드립니다. 큰 DynamoDB 테이블에서 스캔을 수행해야합니다. DynamoDBClient 스캔 작업은 반환 된 데이터 크기가 1MB로 제한된다는 것을 알고 있습니다. Table.scan 작업에도 동일한 제한이 적용됩니까? 문제는 Table.scan 작업이 "ItemCollection<ScanOutcome>"유형의 출력을 반환하는 반면 DynamoDBClient 스캔은 ScanResult 출력을 반환하지만 이러한 작업이 비슷한 방식으로 작동하는지 여부는 분명하지 않습니다.Java에서 Table.scan api를 사용하는 Dynamodb 병렬 검사

이 예제를 확인했습니다 : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ScanJavaDocumentAPI.html,하지만 마지막으로 반환 된 키를 사용하는 것에 대한 힌트가 없습니다.

내 질문은 : Table.scan을 사용하는 경우 lastreturnedkey가 null이 될 때까지 주기적으로 스캔 호출을해야합니까? 그렇다면 마지막 키는 어떻게 얻습니까? 그렇지 않은 경우 페이지 매김을 적용하려면 어떻게해야합니까? 코드 예제에 대한 링크가 있으면 알려 주시면 감사하겠습니다. 몇 시간 동안 예제를 검색해 보았지만 대부분 테이블과 인덱스 객체를 사용해야하는 반면 DynamoDBClient 또는 DynamoDBMapper를 사용합니다.

감사합니다.

+0

당신은 매우 큰 테이블을 가지고 있다고 말했지만, 특별히 (또는 세트) 무언가를 찾고 있기 때문에 결과를 필터링 할 수 있습니다 (이것은 분명합니다). 같은 것이 충분하지 않은 경우 : 예, 다음 배치에서 계속 검색해야합니다. –

+0

귀하의 의견을 이해할 수 있는지 잘 모르겠습니다. 필자는 스캔 결과를 걸러내는 filterexpression을 가지고 있지만 결과가 1Mb를 결코 초과하지 않는다고 보장하지 않습니다 –

+0

그래서 다음 배치를 스캔해야합니다. 당신은'Segments' 및/또는'TotalSegments'로 "재생"함으로써 병렬 적으로 할 수 있습니다; 이 경우, 요청으로부터 리턴 된'LastEvaluatedKey'의 값은 후속 스캔 동작에서 동일한 세그먼트 ID를 갖는 'ExclusiveStartKey'로서 사용되어야한다. 그것은 SQL과 거의 비슷하지만 빠릅니다! –

답변

0

Table.scan()의 출력을 반복하는 경우 SDK가 페이지 매김을 수행합니다.

관련 문제