【发布时间】:2019-01-29 17:12:04
【问题描述】:
我有大约 100,000 个用户。对于每个用户,我不断(每分钟)更改一组存储在 HBase 中的值(列)。行键看起来像userId-timestamp,其中timestamp 四舍五入到分钟。数据集不断增长,因为每分钟我都会获得另外 100,000 行。
我需要低延迟查询((userId, fromTimestamp, toTimestamp, step),其中from-to 可以包含不超过 1000 个项目。所以我使用的是 HBase 的范围查询。
棘手的部分是step 参数的值可能在 [1,5,15,60,360,1440] 中。如果step=5,查询应返回第 5、10、15、...分钟值。所以step=1440 是非常昂贵的查询。
您能否解释一下 OpenTSDB 或 KDB 在这个用例中哪个更快?为什么?
【问题讨论】:
-
有很多问题可以问,也有很多未知数,但是是的,kdb 是为时间序列设计的,并且会针对类似时间序列的查询进行高度优化(特别是当数据经过预处理时)带有“属性” - 请参阅code.kx.com/q4m3/8_Tables/#88-attributes)。问题: 1 你是说小于 500 毫还是小于 500 微? 2. 您是否可以选择修饰传入的数据(例如,将数据预存储为 5、15、60 等步长) - 这将大大加快以后按存储桶/步进行的查询。
-
问题 3。当您说“第 60 分钟”时,您是指从当前的 fromTime 分钟开始每隔 60 分钟,还是正好在整点(下午 1 点、下午 2 点、下午 3 点等)?
标签: time-series hbase kdb opentsdb