2012-02-09 4 views
5

키 속성에 대해 IN 쿼리를 실행해야합니다. 쿼리는 IN 조건을 제공하지 않으므로 Scan을 사용할 계획입니다. 키 속성에서 SCAN이 전체 테이블을 스캔합니까?DynamoDB의 키 특성에 대한 검색

+0

2014 년 4 월 기준으로 검색어 IN에 IN을 사용할 수 있습니다. https://aws.amazon.com/blogs/aws/improved-queries-and-updates-for-dynamodb/ – emilyk

답변

5

키 특성의 SCAN이 전체 테이블을 검색합니까?

참조 Query and Scan in Amazon DynamoDB :

스캔

스캔 작업은 전체 테이블을 스캔합니다. 필터를 지정하여 검색을 완료 한 후 결과에 적용하여 반환 된 값을 구체화 할 수 있습니다. Amazon DynamoDB는 스캔에 1MB 제한을 설정합니다 (결과가 필터링되기 전에 한계 인 이 적용됩니다). 스캔을 수행하면 테이블 데이터가 필터 기준을 충족하지 못할 수 있습니다.

특히, 핵심과 비 핵심 사이에 차이가 멀리 Scan API에 관한 한이 속성 없습니다 당신은 단순히 상관없이 그들뿐만 아니라 구성하는 속성이 Primary Key로 사용되는, 이름하여 원하는 특성을 제공, 즉 나 하지 : 속성 이름의

AttributesToGet

배열입니다. 속성 이름이 지정되지 않으면 모든 속성이 리턴됩니다. 일부 속성을 찾을 수없는 경우 결과에 나타나지 않습니다.

+1

너무 나쁨. 수백만 레코드 세트에서 100 개의 일치하는 레코드에 대한 검색과 쿼리의 비용 차이는 무엇입니까? –

+0

@Mani : 대단히 가능성이 높습니다 : _SCAN_은 이러한 방식으로 사용하도록 설계되지 않았으며 거대한 레코드 세트의 비용/성능에 중요한 영향을 미칩니다.이를 특별히 고려하지 않고 사용하는 경우에는 다소 복잡합니다. Chris Moyer의 첫 번째 블로그 게시물 인 [Amazon DynamoDB] (http://blog.coredumped.org/2012/01/amazon-dynamodb.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ChrisMoyer+%28Chris+Moyer%29) 분석을 위해, 백만 건의 레코드 세트에 대한 견본과 차례로이 문제를 설명하는 방법에 대한 생각. –

1

batchGetItem은 적합합니까?

+0

사실 엔티티에는 키와 범위 속성이 있습니다. 따라서 그것은 키 속성에 대한 IN과 between 조건입니다. BTW, 어떻게 pojo 클래스와 함께 batchgetitem을 사용합니까? –

+0

@ ManiDoraisamy 향상된 요구 사항을 감안할 때 IN 목록의 해시 키 값당 쿼리를 실행하는 것이 좋습니다. 이러한 쿼리 결과를 조인하고 아마존의 EC2에서 실행되는 작은 앱을 작성하면 대기 시간의 증가를 완화해야합니다. _Amazon DynamoDB가 Amazon Elastic MapReduce_와 통합되기 때문에 amazon의 EMR에이 후자의 작업을 제공 할 수도 있습니다. – Mikha

+0

@ManiDoraisamy 두 번째 질문에 대한 답변은 그렇지 않습니다. 'BatchGetItemRequest'는 최대 100 개의 'Key'목록으로 내려갑니다. 'Key'는 테이블의 레코드를 정확하게 식별하기 위해 해시 키와 범위 키 모두를위한'AttributeValue'를 포함합니다. btw, 레코드는 본질적으로'Map'이며, 당신의 pojos를 그것들 안팎으로 변환하는 것은 당신의 책임입니다. – Mikha

관련 문제