翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 5. DynamoDB のデータモデルを作成します
目的
-
DynamoDB のデータモデルを作成します。
プロセス
-
データベースエンジニアが、各ユースケースに必要なテーブルの数を特定します。DynamoDB アプリケーションでは、できるだけ少ないテーブルを維持することを推奨します。
-
最も一般的なアクセスパターンに基づいて、データを識別するパーティションキーを持つプライマリキー、またはパーティションキーとソートキーを持つプライマリキーの 2 つのタイプのいずれかになるプライマリキーを特定します。ソートキーは、データをグループ化して整理し、パーティション内で効率的にクエリを実行できるようにするためのセカンダリキーです。ソートキーを使ってデータの階層関係を定義し、どの階層レベルでもクエリーを実行できるようにすることができる (ブログ記事
を参照)。 -
パーティションキーの設計
-
パーティションキーを定義し、その配分を評価します。
-
ワークロードを均等に分散するための書き込みシャーディング の必要性を確認します。
-
-
ソートキーの設計
-
ソートキーを特定します。
-
複合ソートキーの必要性を特定します。
-
バージョン管理の必要性を特定します。
-
-
-
アクセスパターンに基づいて、クエリ要件を満たすセカンダリインデックスを特定します。
-
ローカル・セカンダリー・インデックス (LSI) の必要性を確認します。これらはベーステーブルと同じパーティションキーを持つが、異なるソートキーを持つインデックスです。
-
LSIs を持つテーブルの場合、パーティションキー値ごとに 10 GB のサイズ制限があります。LSIs を持つテーブルには、1 つのパーティションキー値の合計サイズが 10 GB を超えない限り、任意の数の項目を保存できます。
-
-
グローバル・セカンダリー・インデックス (GSI) の必要性を確認します。これらはパーティションキーとソートキーを持つインデックスで、ベーステーブルのものとは異なることがある (ブログ記事
を参照)。 -
指数予測を定義します。インデックスに書き込まれる項目のサイズが最小になるように、計画される属性が少なくなるようにします。このステップでは、以下を使用するかどうかを決定する必要があります。
-
-
データベースエンジニアは、データに大きな項目が含まれるかどうかを判断します。その場合は、圧縮を使用するか、Amazon Simple Storage Service (Amazon S3) にデータを格納します。
-
データベースエンジニアは、時系列データが必要かどうかを判断します。その場合は、時系列デザインパターン を使用してデータをモデル化します。
-
データベース・エンジニアは、ERモデルに多対多リレーションシップが含まれているかどうかを判断します。その場合は、隣接リストのデザインパターン を使用してデータをモデル化します。
ツールとリソース
-
Amazon DynamoDB 用 NoSQL Workbench — DynamoDB データベースの設計に役立つデータモデリング、データ可視化、クエリ開発およびテスト機能を提供します。
-
DynamoDB の NoSQL 設計 (DynamoDB ドキュメント)
-
正しい DynamoDB パーティションキーの選択
(AWS Database ブログ) -
DynamoDB でセカンダリインデックスを使用するためのベストプラクティス (DynamoDB ドキュメント)DynamoDB
-
Amazon DynamoDB のグローバルセカンダリインデックスを設計する方法
(AWS データベースブログ)
RACI
ビジネスユニット | ビジネスアナリスト | ソリューションアーキテクト | データベースエンジン | アプリケーション開発 | DevOps エンジニア |
---|---|---|---|---|---|
I |
I |
I |
R/A |
出力
-
アクセスパターンと要件を満たす DynamoDB テーブルスキーマ
例
次のスクリーンショットは、NoSQL Workbench を示しています。