기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
5단계: DynamoDB 데이터 모델 생성
기본 테이블과 글로벌 보조 인덱스 (GSI) 의 파티션 키를 정의합니다.
-
주요 설계 모범 사례에 따라 이 예제에서는 를 기본 테이블의 파티션
ComponentId
키로 사용합니다. 고유하기 때문에 세분성을 제공할ComponentId
수 있습니다. DynamoDB는 파티션 키의 해시 값을 사용하여 데이터가 물리적으로 저장되는 파티션을 결정합니다. 고유한 구성 요소 ID는 다른 해시 값을 생성하여 테이블 내부의 데이터 배포를 용이하게 할 수 있습니다.ComponentId
파티션 키를 사용하여 기본 테이블을 쿼리할 수 있습니다. -
구성 요소의 직계 하위 구성요소를 찾으려면 GSI를 생성하십시오. 여기서
ParentId
는 파티션 키이고 는 정렬ComponentId
키입니다. 파티션ParentId
키로 사용하여 이 GSI를 쿼리할 수 있습니다. -
구성 요소의 모든 재귀 하위 항목을 찾으려면
GraphId
가 파티션 키이고Path
가 정렬 키인 GSI를 생성합니다.GraphId
를 파티션 키로 사용하고 정렬 키에BEGINS_WITH(Path, "$path")
연산자를 사용하여 이 GSI를 쿼리할 수 있습니다.
파티션 키 |
정렬 키 |
매핑 속성 |
|
기본 테이블 |
|
|
|
GSI1 |
|
|
|
GSI2 |
|
|
|
테이블에 구성 요소 저장
다음 단계는 각 구성 요소를 DynamoDB 기본 테이블에 저장하는 것입니다. 예제 트리에서 모든 구성 요소를 삽입하면 다음과 같은 기본 테이블이 표시됩니다.
ComponentId |
ParentId |
GraphId |
경로 |
CM1 |
CM1#1 |
CM1 |
|
CM2 |
CM1 |
CM1#1 |
CM1|CM2 |
CM3 |
CM1 |
CM1#1 |
CM1|CM3 |
CM4 |
CM2 |
CM1#1 |
CM1|CM2|CM4 |
CM5 |
CM2 |
CM1#1 |
CM1|CM2|CM5 |
CM6 |
CM3 |
CM1#1 |
CM1|CM3|CM6 |
CM7 |
CM3 |
CM1#1 |
CM1|CM3|CM7 |
CM8 |
CM4 |
CM1#1 |
CM1|CM2|CM4|CM8 |
CM9 |
CM4 |
CM1#1 |
CM1|CM2|CM4|CM9 |
CM10 |
CM5 |
CM1#1 |
CM1|CM2|CM5|CM10 |
GSI1 인덱스
구성 요소의 직계 하위 구성요소를 모두 검사하려면 파티션 키와 ComponentId
정렬 ParentId
키로 사용하는 인덱스를 만듭니다. 다음 피벗 테이블은 GSI1 인덱스를 나타냅니다. 이 인덱스를 사용하면 상위 구성 요소 ID로 모든 직계 하위 구성 요소를 검색할 수 있습니다. 예를 들어, 자동차에서 사용할 수 있는 배터리 수(CM1) 또는 모듈에서 사용할 수 있는 셀(CM4)을 확인할 수 있습니다.
ParentId |
ComponentId |
CM1 |
CM2 CM3 |
CM2 |
CM4 CM5 |
CM3 |
CM6 CM7 |
CM4 |
CM8 CM9 |
CM5 |
CM10 |
GSI2 인덱스
다음 피벗 테이블은 GSI2 인덱스를 나타냅니다. GraphId
를 파티션 키로 사용하고, Path
를 정렬 키로 사용하여 구성됩니다. GraphI
d와 정렬 키 (Path
) begins_with
연산을 사용하면 트리에서 구성 요소의 전체 계보를 찾을 수 있습니다.
GraphId |
경로 |
ComponentId |
CM1#1 |
CM1 CM1|CM2 CM1|CM3 CM1|CM2|CM4 CM1|CM2|CM5 CM1|CM2|CM4|CM8 CM1|CM2|CM4|CM9 CM1|CM2|CM5|CM10 CM1|CM3|CM6 CM1|CM3|CM7 |
CM1 CM2 CM3 CM4 CM5 CM8 CM9 CM10 CM6 CM7 |