所以我必须对与此类似的信息进行建模,https://www.bundesliga.com/en/bundesliga/matchday。 选择俱乐部后,应显示该俱乐部所参加的比赛。
一场比赛基本上会有两支球队参加。
{ home_team: 'A', away_team: 'B' }
假设我在 dynamodb 中使用两个这样的键进行建模,
pk: home_team
sk: datetime
gpk1: away_team
如何查询某支球队的比赛列表? 我的团队查询可以在 pk 或 gpk1 中,我相信也不可能在 dynamodb 中跨两个键给出“OR”条件。
我不想使用过滤表达式,因为这只是在从数据库获取数据后发生在客户端。
我最好的选择是使用 pk 和 gpk1 同时执行两个查询并合并结果。 只是想知道,是否有更好的方法来建模以避免合并客户端。
您可以选择执行两个查询,就像您在那里建模一样,或者(在写入时)将游戏两次插入到基表中,每个参与团队一个作为 PK。因此,基本上,基表将存储同一游戏的两个观点,并保留一个副本以供每个团队快速查找。
有趣的是,两种设计都使用相同的存储量和写入容量。只是使用 GSI,您可以隐式获得第二次写入,但必须连接两个查询。您可以在读取或写入方面做一些额外的工作,以使其他工作变得简单。