私は DynamoDB を初めて使用し、テーブルがどのように見えるべきかという大きな混乱を抱えています。
ここで投稿を読みました: (まだ読んでいない人にはお勧めです) http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/BestPractices.html
そして今、DynamoDB の使用を開始するすべての人が直面すると思われるジレンマがいくつかあります。
まず、私のテーブル: STUDENTS、TEAMS、PROJECTS
STUDENTS : ID、年齢 ...
チーム: id、学生 1 の ID、学生 2 の ID、現在のプロジェクト、前のプロジェクト、最終更新日
プロジェクト: id、チーム ID、質問のリスト、student1answers のリスト、student2answers のリスト
いくつかのコメント:
- ご覧のとおり、範囲キーは使用しません。する必要がありますか?.
- 各回答は、(質問の数、テキスト、挿入日) の json です。
- すべての生徒が複数のチームに所属できます。
私のジレンマ:
- 特定の日付以降に更新された特定の学生のすべてのチームを取得したいと考えています。
今のところ、2 つのスキャン操作を使用しています。1 つは Student1 を検索し、もう 1 つは Student2 を検索します。
**Is there a better way ?**
新しいテーブルを追加することを考えました: user-Battles: student-id, team-id そのため、特定の学生のチームをクエリしてから、すべてのチームを batch_get_item できますが、last-update-on はどうですか? batch_get_item 内でこれを使用してクエリを実行するにはどうすればよいですか?
プロジェクトが終了したら、もう使用しません。古いアイテムをどうするか?消去 ?それらを別のテーブルに移動しますか?
プロジェクトテーブルで更新できる属性はアンサー属性なので、パフォーマンス用に別のテーブルに移動しようと思います。
更新が 2 回だけの場合、本当に移動する必要がありますか? (学生1が回答を送信したときと学生2が回答を送信したとき-そしてプロジェクトは古いです)
*回答用の新しいテーブルを作成する場合、JSON 形式で保存する必要はありません
どのようにテーブルを設計しますか? 私にお知らせください。