假设我们有许多数据表,其结构为时间戳(哈希) - 值对,其中值可以是温度或其他类型的各种测量数据。为了得到某些值的时间戳,我们可以用值(散列) - 时间戳(范围)建立一个二级索引,但是如果我们想用像GT,LT,BETWEEN这样的比较操作来查询该值来获得一个时间戳值的范围?DynamoDB:通过比较查询非键值
显然,我想避免使用扫描。我唯一想到的是使用一个虚拟散列键并将值+时间戳放入范围属性中,但我猜测这有它自己的问题(与扫描相比,更好或更差)。
有没有更好的解决方案,或者可以使用DynamoDB来完成吗?
反规范化就是我所说的“建立二级索引”。但是,这不允许我查询值,只能得到。就像上面所说的,我曾经想过在范围键中使用一个常用的散列键(一个'虚拟'),用于查询的范围键中的值+时间戳,但我不确定它的性能或其它可能存在的问题(分区)我正在寻找替代品。非规范化不是问题(至少现在)。 – user1597701
如果他们都是完全随机的,那么我认为你运气不好。建议:不要将你的HASH设置为虚拟值,而应该使用每月的时间戳,这样你应该总是能够务实地制定哈希应该是什么。您也可以查看将范围设置为用连字符(即timestamp-value)分隔的两个值,然后在非规格化表中value-timestamp,这样您就可以使用GT,LT和BETWEEN运算符而无需执行性能击中。 – greg
虽然不太喜欢不得不细分数据,但我想这是我必须做出的权衡来实现这一点。 – user1597701