用于日期范围查询的 Dynamodb

Dynamodb for date range queries

我正在创建一个应用程序来存储所有订阅了一段时间的人的信息。我存储在 dynamodb table 中的数据是:

  1. personId
  2. beginDate
  3. EndDate

现在,我想写这样的查询

  1. get all the persons who are active during some period(between date1 and date2)
  2. get all the persons who are active on a particular date.

因为我使用的是 dynamodb table,我在想最好的方法是在开始和结束日期上使用全局哈希键并存储开始和结束日期的时间戳。

这有意义吗?或者在 Dynamodb 中有更好的方法吗?

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

  1. Hash_key 开始,Range_key 结束。
  2. hash_key 结束,range_key 开始

对于 查询 1,您需要使用

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

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