【问题标题】:AWS DynamoDB sorting without partition key没有分区键的 AWS DynamoDB 排序
【发布时间】:2021-05-07 09:56:11
【问题描述】:

我有一个带有分区键 (UUID) 的 DynamoDB 表,其中包含一些属性(如姓名、电子邮件、创建日期等)。创建日期是项目中的属性之一,其格式为 YYYY-MM-DD。但是现在有一个需求变化 - 我必须根据创建日期对其进行排序并带来整个数据(也就是说,我不能只将数据带到特定分区上,而是将来自所有分区的整个数据以排序方式。我知道这可能需要时间,因为 DynamoDB 从所有分区中获取数据并对其进行排序。我的问题是:

  1. 当前设计是否可以查询?我可以看到查询中需要分区键,这就是为什么我很困惑,因为我不能在这里给出分区键。
  2. 有没有更好的方法为这种用例重新设计表格?

提前致谢。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

    由于您的表存在,因此您现在无法更改结构,即使您愿意,也将依赖 UUID 作为分区键。

    不过,可以为您的 DynamoDB 表创建 global secondary index

    通过使用 GSI,您可以重新排列数据表示,以将创建日期包含为表的分区键。

    分区键之所以重要,是因为 DynamoDB 数据中的数据分布在多个节点上,每个分区共享同一个节点。通过执行查询,只与一个分区进行通信效率更高,因为无需等待其他分区返回结果。

    【讨论】:

    • 谢谢克里斯。顺便说一句,我可以更改结构,因为它尚未投入生产。让我看看 GSI,我的情况似乎还可以。
    • 没问题@SRaj,希望这能解决你的问题:)
    • @ChrisWilliams 很有趣,因此对于查询,我们实际上不希望数据分布在分区中,实际上最好将其存储为单个分区以更快地获得结果。我看到人们为稀疏索引创建 GSI 并将稀疏 PK 值存储为常量。担心热分区,但现在更有意义了。
    猜你喜欢
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多