多人游戏数据模型设计

问题描述 投票:0回答:1

这里是正在申请中有两名球员的状态我dynamodb表设计的游戏。游戏状态可以改变形式待定 - >生活 - >过

PK      SK      State    Name
gid1    state   pending 
gid1    pid1             alex
gid1    pid2             john

现在我想查询什么悬而未决的游戏特定用户的一部分。为了做到这一点我不得不重复游戏状态每位玩家项目,这样创建GSI。

GSIPK   GSISK   PK
alex    pending gid1
john    pending gid1

直到我想更新游戏状态,这种重复工作正常。这意味着我必须更新所有游戏的用户状态以及如果游戏中有很多球员可能是缓慢和昂贵。

有没有更好的设计到父/子关系,这里的孩子取决于父母的属性值模型?

database-design amazon-dynamodb data-modeling
1个回答
0
投票

似乎没有明显的理由复制的游戏状态。您可以继续使用当前的模型。查找游戏玩家参与使用GSI,然后取结果集并重复它们。对于每一个游戏玩家参与,得到了基表的游戏状态的项目。每场比赛加入一组,其中一组关键的是状态。

它的一个额外的步骤,所以多一点的代码,但它的成本在数据库吞吐量方面很少。

另一种选择,这似乎更明显对我来说,是有两个独立的表;一个游戏玩家,一个用于游戏状态。

© www.soinside.com 2019 - 2024. All rights reserved.