这里是正在申请中有两名球员的状态我dynamodb表设计的游戏。游戏状态可以改变形式待定 - >生活 - >过
PK SK State Name
gid1 state pending
gid1 pid1 alex
gid1 pid2 john
现在我想查询什么悬而未决的游戏特定用户的一部分。为了做到这一点我不得不重复游戏状态每位玩家项目,这样创建GSI。
GSIPK GSISK PK
alex pending gid1
john pending gid1
直到我想更新游戏状态,这种重复工作正常。这意味着我必须更新所有游戏的用户状态以及如果游戏中有很多球员可能是缓慢和昂贵。
有没有更好的设计到父/子关系,这里的孩子取决于父母的属性值模型?
似乎没有明显的理由复制的游戏状态。您可以继续使用当前的模型。查找游戏玩家参与使用GSI,然后取结果集并重复它们。对于每一个游戏玩家参与,得到了基表的游戏状态的项目。每场比赛加入一组,其中一组关键的是状态。
它的一个额外的步骤,所以多一点的代码,但它的成本在数据库吞吐量方面很少。
另一种选择,这似乎更明显对我来说,是有两个独立的表;一个游戏玩家,一个用于游戏状态。