2017-11-22 3 views
0

Dynamodb tableDynamob 테이블 만들기, 파티션 키와 3 개의 검색 열이 가능합니까?

안녕하세요, DynamoDB의 테이블을 만든하지만 난이 잘못 설계되어 테이블을 찾을에만 사용자 이름 (이미지 첨부)

와 table.GetItem을 수행 할 때이 그래서를 다시 생각, 오류가 새 테이블, 내 질문에 속성, 로컬 보조 인덱스 및 기본 보조 키 및 3 검색 열이있는 테이블에 대한 글로벌 보조 인덱스를 설정하는 방법입니다. 또는 dynamodb의 파티션 키 열 (user_ID)과 별도로 3 개의 검색 열 (User_email, Username, Usertype)을 추가 할 수 있습니까?

답변

1

GetItem API에는 파티션 키와 정렬 키가 모두 필요합니다. 그러나 파티션 키 속성 값과 함께 Query API을 사용할 수 있습니다. 쿼리 API에는 정렬 키가 필수 항목이 아닙니다.

가져 오기 항목 규칙 : - 기본 키에 대한

, 당신은 모든 속성을 제공해야합니다. 예제의 경우 간단한 기본 키를 사용하면 파티션 키에 값 만 입력하면됩니다. 복합 기본 키의 경우 파티션 키와 정렬 키 모두에 대해 값을 제공해야합니다.

당신은 5 로컬 보조 인덱스 및 테이블 당 5 글로벌 보조 인덱스의 최대를 정의 할 수 있습니다

.

LSI는 특정 파티션 키 값에 연결되지만 GSI는 모든 파티션 키 값에 걸쳐 있습니다. 동일한 파티션 키 값을 가진 항목은 DynamoDB에서 동일한 파티션을 공유하므로 "로컬"보조 색인은 같은 파티션에 함께 저장된 항목 만 포함합니다. 따라서 LSI의 목적은 파티션 키 값은 같지만 정렬 키 값이 다른 항목을 쿼리하는 것입니다. 예를 들어 Customers의 Orders를 추적하는 DynamoDB 테이블을 고려해보십시오. 여기서 CustomerId는 파티션 키입니다.

로컬 보조 인덱스와

, 아이템 수집 크기에 한계가있다 : 모든 별개의 파티션 키 값의 경우, 모든 테이블과 인덱스 항목의 전체 크기는 10GB를 초과 할 수 없습니다. 이 경우 파티션 키 값 당 개의 정렬 키 수가 제한 될 수 있습니다.

+0

감사합니다. // nnotionquest, // LSI가 특정 파티션 키 값에 연결되었습니다. // 이는 테이블에 동일한 파티션과 다른 정렬 키 값이있는 경우에만 LSI가 유용하다는 것을 의미합니다. 내가 독특한 파티션을 가지고 있다면, LSI는 필요 없지, 맞습니까? –

+1

파티션 키만있는 경우 LSI는 필요하지 않습니다. 고유 한 파티션의 의미를 이해하지 못합니까? LSI를 대체 정렬 키로 생각할 수 있습니다. – notionquest