【问题标题】:Dynamodb: hot spot and data modelDynamodb:热点和数据模型
【发布时间】:2018-02-27 22:18:02
【问题描述】:

我需要一些关于我的表设计的建议,以便可以进行某些查询。我的主表有以下用户信息:

id | gender | location | fullDOB | yearDOB | name

我需要能够回答以下问题:提供 50 英里范围内 25-35 岁的男性/女性用户列表。最有可能的是,将来我会想要添加更多我将过滤的属性。我现在不担心弄清楚位置部分,我想从年龄和性别开始。我创建了字段 yearD0B,因此我可以根据用户年龄进行查询。为此,我想在 yearDOB 上创建 GSI 以及我将过滤的其他属性,因此 GSI 如下所示:

yearDOB(pk) | id (sort key) | gender | location

然后我可以发出查询并过滤其余属性。但是,如果我使用 yearDOB 那么例如10,000 个用户可能有相同的出生年份,这将创建一个热点。解决此问题的一种方法是附加一个随机数,但它必须在一个非常大的范围内以避免热点。如果这个数字很大,这会让人头疼,试图查询所有具有特定年龄的用户。

问题:

1) 就必须支持上述类型的查询而言,我在过滤器属性上创建 GSI 的方法是否良好?

2)如果它很好,我如何有效地解决热分区的问题?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb data-modeling


    【解决方案1】:

    经过大量研究,我意识到 DynamoDb 不适合执行这些类型的查询。即使我想以某种方式避免热点,那么如果用户想要更改他们的出生年份,这是不可能的,因为 GSI 中的主键无法更新。如果没有重要的 jigerry pokery,dynamo 中的简单查询是不可能的,它没有辜负所有的炒作。回到RDS,可惜了……

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2016-11-07
      • 2021-12-27
      • 2019-11-06
      • 2018-07-27
      • 2020-02-20
      相关资源
      最近更新 更多