name: review-dynamodb description: DynamoDBテーブル設計のレビューを行う。アクセスパターン網羅性、PK/SKパターン、GSI設計を技術仕様書と照合する。 user-invocable: true argument-hint: "[file-or-directory]"
DynamoDB Design Review
DynamoDB シングルテーブル設計のレビューを実施する。
レビュー観点
1. 技術仕様書との整合性
- PK/SK パターンが
docs/architecture/technical-spec.mdセクション5 と一致しているか - GSI1, GSI2 の定義が仕様書通りか
- アクセスパターン #1〜#11 が全て実装されているか
2. アクセスパターンの網羅性
- 全ユースケースに対応するクエリが実装されているか:
- レシピ CRUD(#1, #2, #3)
- キーワード検索(#4 自分、#5 横断)
- 共有リクエスト管理(#6, #7, #8)
- 共有関係管理(#9, #10, #11)
- 新しいユースケースが追加された場合、既存のキー設計で対応可能か
- 不足しているアクセスパターンがないか
3. PK/SK パターンの妥当性
- パーティションキーの分散性(ホットパーティション回避)
- ソートキーの設計が範囲クエリに適しているか
begins_withのプレフィックス設計が正しいか- 複合ソートキー(
KW#{keyword}#RECIPE#{recipeId})の順序が適切か
4. GSI 設計
- GSI1(共有リクエスト受信、共有関係ゲスト視点)の使い方が正しいか
- GSI2(共有関係オーナー視点)の使い方が正しいか
- GSI の射影属性(ProjectionType)が適切か(KEYS_ONLY vs ALL vs INCLUDE)
- 不要な GSI がないか / 不足する GSI がないか
5. 書き込みパターン
- BatchWriteItem の使い方(レシピ + キーワードインデックスの同時書き込み)
- TransactWriteItems の使い方(共有リクエスト承認時の一貫性保証)
- 条件付き書き込み(ConditionalExpression)による競合制御
- 削除時の関連データクリーンアップ(レシピ削除時のキーワードインデックス削除)
6. パフォーマンスとコスト
- Read/Write キャパシティの見積もり
- 横断検索時のクエリ数の見積もり(共有ユーザー数 × 1 Query)
- アイテムサイズの見積もり(400KB 制限に対して余裕があるか)
- スパースインデックスの活用(GSI に投影するアイテムの選択性)
手順
- CDK のテーブル定義と Lambda のデータアクセスコードを読み込む
- 技術仕様書セクション5 と照合
- 上記の観点で分析
- 問題を報告し修正案を提示
報告フォーマット
## DynamoDB Review 結果
### 仕様との差異
- テーブル定義・アクセスパターンの仕様書との差分
### 設計上の問題
- [重大度: Critical/High/Medium/Low] 説明 → 修正案
### アクセスパターン網羅性
- 実装済み: #1, #2, ...
- 未実装: #X, #Y, ...
### パフォーマンス・コスト
- 懸念事項と最適化案