2017-11-14 13 views
0

나는 다음과 같은 구조를해야합니다 AWS DynamoDB의에 새 테이블을 만들어야합니다DynamoDB의 빠른 검색이

{ 
    "email" : String (key), 
    ... : ..., 
    "someStuff" : SomeType, 
    ... : ..., 

    "listOfIDs" : Array<String>  
} 
이 테이블은 사용자의 데이터와 내가 문자열 목록 '을 포함

종종 쿼리합니다 (listOfIDs 참조).
느린 속도로 인해 특정 ID에 연결된 사용자를 얻으 려 할 때마다 매번 scan 테이블을 원하지 않기 때문에 "단순한"유형이 아니기 때문에 인덱스를 작성할 수 없습니다. 어떻게 할 수 있습니까? 내 테이블의 구조가 개선 되었습니까? 모든 ID와 사용자가 "평면"구조로 연결된 다른 테이블을 사용해야합니까? 다른 방법이 있습니까?

감사합니다.

답변

1

아마도 다른 테이블. 다른 쿼리를 수행하지 않아도되도록이 테이블에 다른 속성을 포함 할 수 있습니다.

1

모든 ID와 사용자가 "평면"구조로 연결된 다른 테이블을 사용해야합니까?

쿼리 성능에 DynamoDB의 병렬 처리 기능을 활용하려는 경우 이것이 최선의 방법이라고 생각합니다. 세트로 listOfIDs가 저장되어있는 경우

또 다른 옵션은 queryCONTAINS 표현을 사용할 수도 있지만 테이블이 성장함에 따라 그 성능이 많다는 확장 할 수 상상할 수 없다.

ID string/hash key, 
Email string/range key, 
Any other attributes you may want to access 

IDemail의 고유 한 조합을 사용하면 "ID의 목록"를 검색 할 수 있습니다 :처럼 보이는