据我了解,OpenTSDB 处理测量值是单个值的时间序列。许多测量设备在一次测量中提供一组值。例如,这可能是对一个设备的一次测量:2012-12-16 01:00:00, temp=12, current=2, waterheight=3, nacl-level0.5, ....
OpenTSDB 是否允许我将这些存储在一起,或者我是否被迫将它们存储为单独的时间序列?
据我了解,OpenTSDB 处理测量值是单个值的时间序列。许多测量设备在一次测量中提供一组值。例如,这可能是对一个设备的一次测量:2012-12-16 01:00:00, temp=12, current=2, waterheight=3, nacl-level0.5, ....
OpenTSDB 是否允许我将这些存储在一起,或者我是否被迫将它们存储为单独的时间序列?
最好将它们存储为单独的时间序列,因此您将有一个用于温度,一个用于当前,一个用于水位高度,一个用于 NaCl 水平等。您可以随时将它们一起查询。
标签应主要用于对相同性质的数据点进行分类,例如,如果您有多个测量点,那么您将有一个标签来指示哪个设备收集了测量值。这将允许您获取每个设备的时间序列,或获取所有内容的聚合视图(通过求和或平均等)。
除此之外,我认为 tsuna 是绝对正确的,这在 OpenTSDB 上是不可能的。保存数据的行有一个唯一的行键和多个值 - 都是相同的类型。
每个时间戳(最小时间间隔:1 秒)和每个行键(指标名称 + 小时时间戳 + 标记名)只能放置一个值。因此,您根本无法将具有相同时间戳或不同标签的值放在一个时间序列行中。或者您希望如何在不使用标签的情况下区分不同的测量点(温度、电流、水高等)?
大卫,
数据的处理描述在: http: //opentsdb.net/docs/build/html/user_guide/writing.html
可以强制 OpenTSDB 以这种方式存储数据(需要一些调整和重新编译),你基本上是正确的:这不是你想要的方式。
从要存储的测量值来看,我想我以前实际上曾在该领域工作过。将序列存储为单独的时间序列有两个原因:
如果你像这样构造它:
1d.height t=timedate 高度 rivername=name
您可以立即检索整条河流的平均高度。
想象一下你可以用二维水体做什么:
2d.height t=timedate 高度类型=湖名=IJsselmeer xcoord=xx ycoord=yy
可能的标签值的数量有限制(16M)。根据您要存储的内容的分辨率,您可能希望将数据划分为扇区和网格点。(如果您想以 1M 分辨率存储大西洋)