【问题标题】:Dynamo DB: global secondary index, sparse indexDynamodb:全局二级索引,稀疏索引
【发布时间】:2016-05-11 15:14:30
【问题描述】:

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

...在 GameScores 表中,某些玩家可能获得了某款游戏的特定成就 - 例如“冠军” - 但大多数玩家没有。您可以创建一个分区键为 Champ 且排序键为 UserId 的全局二级索引,而不是扫描整个 GameScores 表以查找 Champs。

我的问题是:当英雄的数量变得非常多时会发生什么?我想“Champ”分区会变得非常大,你会开始遇到负载分布不均匀的情况。为了获得均匀的负载分布,我是否需要通过(有效)在n 分片上分片来随机化“Champ”值,例如Champ.0, Champ.1 ... Champ.99?

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

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2018-11-01
      相关资源
      最近更新 更多