Dynamo DB:全局二级索引,稀疏索引

pes*_*lla 5 amazon-web-services amazon-dynamodb

我正在考虑利用AWS指南中所述的稀疏索引。在所述示例中-

...在GameScores表中,某些玩家可能已经为游戏赢得了特定成就-例如“冠军”-但大多数玩家却没有。无需在整个GameScores表中扫描Champ,而是可以创建一个具有Champ分区键和UserId排序键的全局二级索引。

我的问题是:当冠军数量增加时会发生什么?我想“ Champ”分区将变得非常大,您将开始遇到负载分配不均的问题。为了得到均匀的负荷分布,我需要通过随机化(有效)的“冠军”价值超过分片n碎片,例如Champ.0Champ.1... Champ.99

或者,在获取具有随时间而增长的特定属性的实体时,是否可以使用不同的访问模式?

Eya*_* Ch 2

这正是您需要的解决方案(Champ.0、Champ.1 ... Champ.N)

N 应该是[该索引的预期分区 + 一些增长差距](如果您期望高负载或许多“冠军”,那么您可以选择 N=200)(为了在分区上实现良好的哈希分布)。我建议 N 对 userId 取模。(这可以帮助您通过 userId 进行一些操作。)

如果您的哈希键是布尔值(在 dynamodb 中您可以将布尔值表示为字符串),我们也会使用此解决方案,因此在这种情况下,哈希值将为“true.0”、“true.1” ....“true.N”对于“假”也是如此。