5단계: DynamoDB 데이터 모델 생성 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

5단계: DynamoDB 데이터 모델 생성

기본 테이블과 글로벌 보조 인덱스 (GSI) 의 파티션 키를 정의합니다.

  • 주요 설계 모범 사례에 따라 이 예제에서는 를 기본 테이블의 파티션 ComponentId 키로 사용합니다. 고유하기 때문에 세분성을 제공할 ComponentId 수 있습니다. DynamoDB는 파티션 키의 해시 값을 사용하여 데이터가 물리적으로 저장되는 파티션을 결정합니다. 고유한 구성 요소 ID는 다른 해시 값을 생성하여 테이블 내부의 데이터 배포를 용이하게 할 수 있습니다. ComponentId파티션 키를 사용하여 기본 테이블을 쿼리할 수 있습니다.

  • 구성 요소의 직계 하위 구성요소를 찾으려면 GSI를 생성하십시오. 여기서 ParentId 는 파티션 키이고 는 정렬 ComponentId 키입니다. 파티션 ParentId 키로 사용하여 이 GSI를 쿼리할 수 있습니다.

  • 구성 요소의 모든 재귀 하위 항목을 찾으려면 GraphId가 파티션 키이고 Path가 정렬 키인 GSI를 생성합니다. GraphId를 파티션 키로 사용하고 정렬 키에 BEGINS_WITH(Path, "$path") 연산자를 사용하여 이 GSI를 쿼리할 수 있습니다.

파티션 키

정렬 키

매핑 속성

기본 테이블

ComponentId

ParentId, GraphId, Path

GSI1

ParentId

ComponentId

GSI2

GraphId

Path

ComponentId

테이블에 구성 요소 저장

다음 단계는 각 구성 요소를 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를 정렬 키로 사용하여 구성됩니다. GraphId와 정렬 키 (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