1

假设我们有许多结构化为时间戳(哈希)-值对的数据表,其中值可以是例如温度或其他类型的各种测量数据。

要获取某些值的时间戳,我们可以使用 value(hash) - timestamp(range) 构建二级索引,但是如果我们想通过 GT、LT、BETWEEN 等比较操作查询该值以获取一系列值的时间戳怎么办?

显然,我想避免使用扫描。我想出的唯一方法是使用虚拟哈希键并将值+时间戳放入范围属性,但我猜这有其自身的问题(与扫描相比更好或更差?)。

有没有更好的解决方案,或者完全可以使用 DynamoDB 来完成?

4

1 回答 1

0

您需要知道 HASH,然后才能对 RANGE 执行查询。要解决这个问题,您需要对表进行非规范化,即创建一个键颠倒的副本。尽管这看起来有点让人头疼,但它是关键价值存储的所有性能优势有时需要的权衡之一。

这种情况的示例:两个密钥完全随机,那么你就不走运了。与其将 HASH 设置为虚拟值,不如尝试使用每月时间戳,这样您应该始终能够务实地计算出哈希应该是什么。然后,您还可以将范围设置为由连字符分隔的两个值的组合,即时间戳值,然后在非规范化表中值时间戳,这样您应该能够使用比较运算符而不会影响性能.

于 2012-12-10T18:25:09.027 回答