5단계: DynamoDB 데이터 모델 생성 - AWS 권장 가이드

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

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

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

  • 구성 요소의 직계 하위 항목을 찾으려면 ParentId가 파티션 키이고 ComponentId가 정렬 키인 GSI를 생성합니다. 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 인덱스

구성 요소의 직계 하위 항목을 모두 확인하려면 ParentId를 파티션 키로 사용하고 ComponentId를 정렬 키로 사용하여 인덱스를 생성합니다. 다음 피벗 테이블은 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