假设我们有许多数据表,结构为时间戳(哈希) - 值对,其中值可以是例如温度或其他各种不同的测量数据。
要获取某些值的时间戳,我们可以使用值(哈希) - 时间戳(范围)构建二级索引,但是如果我们想通过比较操作(如GT,LT,BETWEEN)查询该值以获取范围的时间戳,该怎么办?价值观?
显然,我想避免使用扫描。我唯一想到的是使用虚拟哈希键并将值+时间戳放入范围属性,但我猜这有其自身的问题(与扫描相比更好还是更差?)。
是否有更好的解决方案,或者根据DynamoDB可以做到这一点?
答案 0 :(得分:0)
您需要知道HASH,然后才能在RANGE上执行查询。要解决此问题,您需要对表进行非规范化,即在反转键的情况下创建副本。虽然这似乎是一个痛苦的屁股,但这是一个权衡之一,有时需要一个关键价值商店的所有性能优势。
此案例示例: 两个键完全随机,那你就不走运了。您可以尝试使用月度时间戳,而不是将HASH设置为虚拟值,这样您应始终能够务实地计算出哈希应该是什么。然后,您还可以将范围设置为由连字符(即时间戳值)分隔的两个值的组合,然后在非规范化表格中设置值 - 时间戳,这样您应该能够使用没有性能命中的比较运算符