Dynamodb用于日期范围查询

时间:2019-07-06 22:26:37

标签: amazon-dynamodb dynamodb-queries

我正在创建一个应用程序,用于存储一段时间内已订阅的所有人员信息。我存储在dynamodb表中的数据是:

  
      
  1. personId
  2.   
  3. beginDate
  4.   
  5. EndDate
  6.   

现在,我想编写类似的查询

  
      
  1. 获取某个时期(介于date1和date2之间)所有活跃的人
  2.   
  3. 获取在特定日期活动的所有人员。
  4.   

因为我正在使用dynamodb表,所以我正在考虑做到这一点的最佳方法是在开始和结束日期上使用全局哈希键并存储开始和结束日期的时间戳。

这有意义吗?还是在Dynamodb中有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

您的设计似乎正确。
您将需要2个GSI:

  1. Hash_key在开始,Range_key在结束。
  2. hash_key位于结尾,range_key位于开始

对于查询1 ,您需要使用

在GS1上进行查询
  1. 在date1和date2之间开始(使用GSI1)
  2. 在date1和date2之间结束(使用GSI2)
  3. 在date1(GSI1)之前开始,在date2(GSI2)之后结束,并采用列表的交集

查询2 与查询1相同,只是开始日期是日期的第一秒,结束日期是日期的最后秒。