【问题标题】:Sorting items by dates in DynamoDB在 DynamoDB 中按日期对项目进行排序
【发布时间】:2016-09-19 22:48:26
【问题描述】:

我来自严格的 SQL 背景。

现在迁移到 DynamoDB,我有一个表格,里面有我想按日期排序的项目。

这是我的做法:

  • 我设置了二级索引 Category-Date-Index。类别是哈希,日期是范围。我正在排序的所有项目都将具有相同的类别值。

  • 我现在遇到的问题是许多项目的日期相同。此二级索引会自动删除具有相同 Category-Date 的项目并仅保留一个。这不是我想要的行为。

这样做的正确方法是什么?

在考虑这些用例时,我还希望获得有关如何在 DynamoDB 中构建表和索引的良好阅读指南。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

    你有多少相同日期的物品?

    您可以随时为您的日期添加一个额外的后缀(如 0 - X 范围内的随机数 - 如果您的日期是 int - epoc 时间) - 这也将确保您的排序。 (仅当您的范围是字符串,并且您始终添加相同数量的数字时)

    例如:

    原始项目 = (hash, 1234567)

    转换后的项目 = (hash, '1234567010')

    原始 item2 = (hash, 1234567)

    转换后的 item2 = (hash, '1234567900')

    您可以在插入项目时使用“覆盖”参数(并将其设置为 false)。如果出现错误,您可以在范围键中添加一个额外的数字。

    您可以在这里找到很好的指南: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html

    【讨论】:

    • 这实际上是我认为的“解决方法”。我希望有一种“直接”的方法来处理这个问题。此外,将日期存储为 ISO-6801 字符串还是纪元编号以提供更大的灵活性是更好的做法吗?
    • 在这种情况下,我认为是纪元数转换为字符串
    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多