DynamoDB根据时间戳查询/排序

7 浏览
0 Comments

DynamoDB根据时间戳查询/排序

在DynamoDB中,我有一张表,每条记录都有两个日期属性,create_datelast_modified_date。这些日期是按照ISO-8601格式的,例如2016-01-22T16:19:52.464Z。\n我需要一种根据create_datelast_modified_date进行查询的方法,例如:\n

    \n

  • 获取所有create_date > [some_date]的记录
  • \n

  • 获取所有last_modified_date < [some_date]的记录
  • \n

\n总体上,我需要获取所有满足[date_attr] [comparison_op] [some_date]条件的记录。\n一种做法是在每条记录中插入一个固定的虚拟属性,并创建一个索引,将虚拟属性作为分区键,将create_date作为排序键(对于last_modified_date也是如此)。\n然后,我可以通过提供固定的虚拟属性作为分区键,将日期属性作为排序键,并使用任何比较运算符<><=>=等进行查询。\n但是这似乎不太好,看起来更像是一个妥协而不是一个恰当的解决方案/设计。是否有更好的解决方案?

0
0 Comments

问题的出现原因:DynamoDB在基于时间戳进行查询和排序方面存在一些局限性。

解决方法:

1. 将表数据移动到SQL数据库以便进行搜索。这可以解决问题,因为您可以根据需求进行查询,但有时可能会比较繁琐,因为需要在两个不同的数据库之间同步数据。

2. 与Amazon CloudSearch集成:可以将此表与CloudSearch集成,然后不再查询DynamoDB表,而是查询CloudSearch。

3. 与Elasticsearch集成:Elasticsearch类似于CloudSearch,尽管各有优缺点,但最终的结果都是相同的——不再查询DynamoDB,而是查询Elasticsearch。

4. 如您在问题中提到的,添加GSI索引。

0