在DynamoDB中,我有一个表,其中每个记录都有两个日期属性create_date
和last_modified_date
。这些日期采用ISO-8601格式,即2016-01-22T16:19:52.464Z
。
我需要根据create_date
和last_modified_date
来查询它们,即
create_date > [some_date]
last_modified_date < [some_date]
[date_attr] [comparison_op] [some_date]
等所有记录...... 这样做的一种方法是为每条记录插入一个伪固定属性,并创建一个索引,其中dummy属性作为分区键,create_date
作为排序键(同样适用于last_modified_date
。 )
然后我将能够通过提供固定的虚拟属性作为分区键,将日期属性作为排序键并使用任何比较运算符<
,>
,{{ 1}},<=
,等等。
但这看起来并不好看,而且看起来像是黑客而不是正确的解决方案/设计。有没有更好的解决方案?
答案 0 :(得分:7)
NoSQL DB有一些不好的东西,但你可以通过以下解决方案来解决这个问题:
解决方案1)将此表数据移动到SQL数据库以进行搜索:这可能很有效,因为您可以根据您的要求进行查询,这可能有时会因为您需要同步而变得乏味不同数据库之间的数据
解决方案2)与Amazon CloudSearch集成:您可以将此表与Cloudsearch集成,然后查询您可以查询Cloudsearch的DynamoDB表
解决方案3)与Elasticsearch集成:ElasticSearch与云类似,虽然每个都有一些优点和缺点,最终结果是相同的,而不是查询DynamoDB查询Elasticsearch
解决方案4)正如您在问题中提到的那样添加索引