2017-12-19 9 views
0

두 번째 정렬 키를 원하는 인덱스 (정수 타임 스탬프)로 설정했습니다. API는 KeyConditionExpression을 제공하지 않는다고 불평을 계속합니다. 그런 다음 하나만 주면 ID를 지정해야합니다. 난 그냥 ID를 사용하여 모든 것을주고 강제로 시도했다 <> null 및 여전히 그것을 수행하지 않습니다. 이것은 심지어 가능합니까 ?? 어쩌면이 완전히 간단한 작업을 할 수 없다면 발전기를 제거 할 시간.Dynamo DB, 모든 것을 쿼리하고 정렬 키를 활용하는 방법

하나님을 사랑하기 때문에 나는 전체 테이블을 쿼리하고 내 정렬 키를 사용하려고합니다. 나는이 작업을 SQL 시간 전으로 진행했을 것이다.

답변

-2

밝혀지면 IndexName을 스캔에 추가 할 수도있다. 도움이됩니다. 또한 정렬 키를 사용하여 색인을 작성하는 경우 정렬이 발생하려면 모든 기본 색인이 동일해야합니다 (MUST).

+0

모든 IndexName은 테이블이 아닌 인덱스에서 항목을 반환합니다. – Stu

3

우선 DynamoDB는 NOSQL 데이터베이스이므로 의도적으로 SQL이 아닙니다. 아마 당신은 익숙한 쿼리와 같이 SQL을 수행 할 수있을 것으로 기대해서는 안되며, 두 가지 완전히 다른 유형의 데이터베이스인데 강점과 약점이 있다는 사실에 좌절감을 느껴야합니다.

DynamoDB의 레코드는 해시 키를 사용하여 분할되며 선택적으로 각 파티션 내에서 정렬 될 수 있습니다. 가능한 한 항목이 파티션에 고르게 분산되도록 해시 키를 선택해야합니다. 파티션을 사용하면 DynamoDB를 매우 확장 가능하고 빠르게 만들 수 있습니다. 그러나 필요한 모든 항목에 대해 을 검색하고 정렬 된 순서로 가져 오는 경우 작업에 잘못된 도구를 사용하거나 클라이언트 측에서 항목을 정렬해야합니다.

검색 작업은 모든 파티션을 통과하여 각 파티션의 모든 항목을 반환합니다. 이 시점에서 항목은 해당 파티션 내에서만 정렬 할 수 있습니다.

는 예를 들어, 데이터 세트는 3 개의 파티션으로 분할되고 고려 : 당신이 볼 수 있듯이

Partition A    Partition B    Partition B 

Sort key     Sort key     Sort key 
A       D       C 
C       E       K 
P       G       L 

, 당신은 쉽게 각 파티션을 조회하고 정렬 된 순서에있는 항목을 얻을 수 있습니다. 하지만 스캔하면 정렬 순서가 모두 결정적 일 때 [A, C, P, D, E, G, C, K, L]로 정렬 된 항목을 가져올 수 있습니다. 이 시점에서 직접 항목을 정렬해야합니다.

가끔 "트릭"이라고 표시되는 것은 사용자 자신의 대답에서 언급 한 것처럼 모든 항목에 대해 동일한 값을 가진 "더미"해시 키를 사용하는 것입니다. 이렇게하면 "dummy = 1"을 쿼리하고 정렬 키에 따라 정렬 된 항목을 가져올 수 있습니다. 그러나 이것은 모든 항목이 동일한 파티션에 배치되므로 테이블 크기를 전혀 만들지 않으므로 해시 키의 목적을 완전히 상실합니다. 그러나 실제로 작은 데이터 세트를 보유하고 있어도 DynamoDB를 사용하고 있다면 실용적인 방법으로 사용할 수 있습니다. 그러나 다시 작은 데이터 세트와 이와 같은 사용 사례를 사용하면 처음에는 RDS와 같은 다른 도구를 사용해야합니다.