DynamoDB 表/索引建模 + 查询



基本要求:

我有一个包含一堆属性(20-30)的表,但查询中只使用了 3 个:用户、类别和日期,结构如下......

User | Category | Date | ...
1    | Red      | 5/15
1    | Green    | 5/15
1    | Red      | 5/16
1    | Green    | 5/16
2    | Red      | 5/18
2    | Green    | 5/18

我希望能够通过以下两种方式查询此表:

  1. 用户最近的行(基于日期)。 例如,User=1 返回 5/16 中的 2 行(第 3 行和第 4 行)
  2. 按用户和类别划分的最新行(基于日期),例如,User=1,Category=Red 仅返回 5/16 行(第 3 行)。

使用用户哈希、日期范围和 GSI 在用户+类别和日期范围进行建模的最佳方法是什么?还有什么可能更有效的吗?如果这是阻力最小的路径,我仍然需要知道要返回多少行,这需要对不同的类别或其他东西进行计数?

> 我已经决定改变我存储文档的方式会更容易。我将类别和其他属性移动到子文档中,以便我可以轻松地针对 User+Date 进行查询,并且我将使用一些客户端代码对 User+Date 结果集执行任何 User+Category+Date 查询。

最新更新