2016-01-22 107 views
3

在DynamoDB中,我有一个表,其中每个记录都有两个日期属性,create_datelast_modified_date。这些日期采用ISO-8601格式,即2016-01-22T16:19:52.464ZDynamoDB查询/根据时间戳排序

我需要有基于这样create_date > [some_date]

  • 得到的所有记录,其中last_modified_date < [some_date]
  • 一般
  • 得到的所有记录,其中[date_attr] [comparison_op] [some_date]等的create_datelast_modified_date

    • 得到的所有记录查询他们的一种方式...

    这样做的一种方法是插入虚拟固定属性wi TH每个记录并与虚设属性作为分区键和create_date作为排序键创建索引(对于last_modified_date同样。)

    然后,我将能够查询它是这样通过设置固定虚设属性作为分区键,日期属性作为排序键,并使用任何比较运算符<,>,<=,>=,等等。

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

  • +1

    这是相关的:http://stackoverflow.com/a/38790120/491553 –

    回答

    4

    有一些事情的NoSQL数据库是不是良好,但您可以通过以下方案解决这个问题:

    解决方法1)移动搜索的目的本表数据到SQL数据库:这可能是有效的,因为你将能查询按您的要求,因为你需要不同的DB的

    解决方案2之间的数据同步,这可能是乏味的,有时)与亚马逊CloudSearch集成:您可以将这个表Cloudsearch整合,然后比较然后查询您的DynamoDB表查询Cloudsearch

    溶液3)集成与Elasticsearch:ElasticSearch类似于云虽然每个具有一定的优点和缺点,最终的结果将是相同的,而不是查询DynamoDB查询Elasticsearch

    解决方案4)正如你在你的问题中提到的添加索引