步驟 5:建立 DynamoDB 資料模型 - AWS 規範指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 5:建立 DynamoDB 資料模型

定義基底資料表和全域次要索引 (GSI) 的分割區索引鍵:

  • 遵循關鍵設計最佳實務,在此範例中用ComponentId作基底資料表的分割索引鍵。因為它是獨一無二的,所ComponentId以可以提供粒度。DynamoDB 使用分割區索引鍵的雜湊值來決定實際儲存資料的分割區。唯一元件 ID 會產生不同的雜湊值,可加速分佈資料表內的資料。您可以使用ComponentId分區索引鍵來查詢基底資料表。

  • 若要尋找元件的直接子系,請建立 GSI,其中ParentId是分割索引鍵,並且ComponentId是排序索引鍵。您可以使用ParentId做為分割區索引鍵來查詢此 GSI。

  • 若要尋找元件的所有遞迴子項,請建立 GSI,其中 GraphId 是分割區索引鍵,Path 是排序索引鍵。您可以使用 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 作為排序索引鍵進行設定。使用 GraphI d 和 sort 鍵 (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