我不知道如何在 DynamoDB 中做到这一点。
我有一个数据表是这样的:
ID Updated other fields...
1200 2017-12-11 ...
1201 2018-02-05 ...
1205 2018-01-05 ...
1206 2018-01-11 ...
1210 2018-02-15 ...
1212 2018-02-10 ...
Run Code Online (Sandbox Code Playgroud)
分区键是“ID”,我有一个“已更新”的排序键。
例如,我想检索 Updated 大于“2018-02-01”的记录。
我不能单独查询“更新”,它抱怨Query condition missed key schema element: ID. 我明白这意味着什么,但我不确定如何正确执行此操作。
我尝试添加各种索引,然后查询索引,包括仅将“已更新”字段作为分区键,但随后我无法查询仅与分区键完全匹配的值范围。
那么,如何跨多个分区查询一个条件?
我可以使用扫描,但这可能很昂贵。我可以通过以某种方式索引它来做到这一点吗?或者有没有办法做一些类似于我不需要指定分区键的查询?
好问题,但不是很好的解决方案!:)
\n\n\xe2\x80\xa2 如果不以分区键为条件,则无法执行查询。
\n\xe2\x80\xa2 您需要该Updated列作为排序键,无论是在表“架构”中,还是在索引中。如果它不再是排序键,您将无法有效地查询Updated > VALUE.
所以你需要一个恒定的分区键并Updated作为排序键。这是您的全局二级索引:
\n\xe2\x80\xa2 PK:ConstantColumn
\n\xe2\x80\xa2 SK:Updated
当然,您将失去一些可扩展性,因为所有索引都将位于一个分区中,但是使用KEYS_ONLY投影应该可以为您提供足够的空间。
如果您确实需要更多的可扩展性,请考虑使用PK诸如C0, C1, ...,Cn,迭代每个分区键的查询,然后合并结果(divide et impera)。
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |