【问题标题】:Dynamo db sortingDynamodb 排序
【发布时间】:2020-09-04 05:45:10
【问题描述】:

我有一个场景,我必须根据创建时间和优先级(高、中、低)以及分页来列出用户的传入请求。有没有办法在 dynamoDb 中实现这一点?

现在我正在使用像 userId-createdAt-index 这样的二级索引,它根据创建时间对数据进行排序,并在前端单独根据优先级对请求进行排序。请有人为此提供正确的解决方案。

【问题讨论】:

  • 你能补充一些细节吗?比如样本数据什么的。
  • 主键:requestId,GSI:{分区键:userId,排序键:createdAt},其他属性有:优先级(可能的值:高,中,低),updatedAt。这里我需要根据创建时间排序,然后按优先级排序。
  • 我怀疑你想按日期/时间排序,然后按优先级排序。实际上,这只是按日期/时间排序,因为一般来说,没有两条记录具有相同的时间戳。

标签: amazon-web-services nosql amazon-dynamodb secondary-indexes


【解决方案1】:

使用带有排序键的索引是正确的。这也可以是您的主索引,从而减少您需要的索引数量,但这当然取决于您的主索引是否已经有一个排序键。

DDB 保证排序索引的顺序,因此分页会为您正确按日期分页,如果您想反转顺序,请将ScanIndexForward 添加到您的查询中并将其设置为false

您在数据库级别查询/按日期排序,然后在应用程序级别按其他字段排序的模型是正常且正确的。

在很大程度上取决于您的用例,要考虑的另一个选项是使用 KeyConditions 并添加条件 #priority EQ :priority 按优先级进行查询,但我怀疑这是您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多