Amazon dynamodb 基于时间戳的DynamoDB查询/排序

Amazon dynamodb 基于时间戳的DynamoDB查询/排序,amazon-dynamodb,Amazon Dynamodb,在DynamoDB中,我有一个表,其中每个记录都有两个日期属性,create\u date和last\u modified\u date。这些日期采用ISO-8601格式,例如2016-01-22T16:19:52.464Z 我需要有一种基于create\u date和last\u modified\u date的查询方法,例如 在create\u date>[某些日期] 获取上次修改日期所在的所有记录 通常,我需要在[date\u attr][comparison\u op][some\u

在DynamoDB中,我有一个表,其中每个记录都有两个日期属性,
create\u date
last\u modified\u date
。这些日期采用ISO-8601格式,例如
2016-01-22T16:19:52.464Z

我需要有一种基于
create\u date
last\u modified\u date
的查询方法,例如

  • create\u date>[某些日期]
  • 获取上次修改日期所在的所有记录
通常,我需要在
[date\u attr][comparison\u op][some\u date]
中获取所有记录

一种方法是在每条记录中插入一个虚拟固定属性,并创建一个索引,其中虚拟属性作为分区键,
create\u date
作为排序键(同样对于
last\u modified\u date

然后,通过提供固定的虚拟属性作为分区键,日期属性作为排序键,并使用任何比较运算符
=
,等等,我就可以这样查询它了


但这看起来不太好,看起来像是一个黑客,而不是一个合适的解决方案/设计。有更好的解决方案吗?

NoSQL DBs在某些方面并不擅长,但您可以使用以下解决方案来解决这一问题:

  • 将此表数据移动到SQL数据库以进行搜索:这可能很有效,因为您可以根据需要进行查询,有时可能会很繁琐,因为您需要在两个不同的数据库之间同步数据

  • 与Amazon集成:您可以将此表与CloudSearch集成,然后您可以查询CloudSearch,而不是查询DynamoDB表

  • 与集成:Elasticsearch与CloudSearch类似,虽然各有优缺点,但最终结果是相同的-而不是查询DynamoDB,而是查询Elasticsearch

  • 正如您在问题中提到的,添加GSI索引

  • 这是相关的: