ステップ 5: DynamoDB データモデルを作成する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 5: DynamoDB データモデルを作成する

ベーステーブルとグローバルセカンダリインデックス (GSIsのパーティションキーを定義します。

  • キー設計のベストプラクティスに従って、この例のベーステーブルのパーティションキーComponentIdとして を使用します。一意であるため、 は詳細度を提供ComponentIdできます。DynamoDB は、パーティションキーのハッシュ値を使用して、データが物理的に保存されるパーティションを決定します。一意のコンポーネント ID を使用することで、異なるハッシュ値が生成されるため、テーブル内でデータの分散が容易になります。ComponentId パーティションキーを使用してベーステーブルにクエリを実行できます。

  • コンポーネントの直接の子を検索するには、 がパーティションキー、 ParentIdがソートキーである GSI ComponentId を作成します。パーティションキーParentIdとして を使用することで、この GSI にクエリを実行できます。

  • コンポーネントの再帰的な子をすべて検索するには、GraphId がパーティションキーで、Path がソートキーの GSI を作成します。この GSI に対してクエリを実行するには、パーティションキーの GraphId とソートキーの BEGINS_WITH(Path, "$path") 演算子を使用することで実行できます。

パーティションキー

ソートキー

マッピング属性

ベーステーブル

ComponentId

ParentId, GraphId, Path

GSI1

ParentId

ComponentId

GSI2

GraphId

Path

ComponentId

コンポーネントをテーブルに格納

次に、DynamoDB ベーステーブルに各コンポーネントを格納します。サンプルツリーからすべてのコンポーネントを挿入すると、次のベーステーブルが表示されます。

ComponentId

ParentId

GraphId

[Path] (パス)

 

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

[Path] (パス)

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