我正在使用InfluxDb记录许多发电厂的测量结果。目前,我正在使用一个带有power_plant作为标记的度量,而不是用于度量的字段。对每个电厂进行不同的测量还是仅使用标签是更好的选择?我担心这种测量何时会有TB或更多数据的性能?
此刻,我具有这样的结构(所有电厂数据都可以进行一次测量,并使用标签powerplant和device来查询数据)
private static $invertersMeasurement = [
'value' => NULL,
'tags' => [
'power_plant' => NULL,
'device' => NULL,
'logger_ip' => NULL,
],
'fields' => [
'type' => NULL,
'e_total' => NULL,
'status' => NULL,
'error' => NULL,
'temp' => NULL,
'pac' => NULL,
'pdc1' => NULL,
'udc1' => NULL,
'idc1' => NULL,
'pdc2' => NULL,
'udc2' => NULL,
'idc2' => NULL,
'pdc3' => NULL,
'udc3' => NULL,
'idc3' => NULL,
'pdc4' => NULL,
'udc4' => NULL,
'idc4' => NULL
],
'time' => NULL
];
是否最好删除电厂标签并以不同的度量来存储每个电厂的数据?
答案 0 :(得分:0)
不,请保留标签,因为某些可视化工具(例如Grafana)对标签的支持要比测量更好,而且按标签进行过滤既快捷又便宜(如果您不具备高基数标签)。无论如何,您的架构对我来说看起来不错。
答案 1 :(得分:0)
问::使用更多测量更好吗?
A:将所有数据包含在一个度量中的优点是,当将所有点都放在一个位置内时,执行数据聚合要容易得多。
但是,这是在influxdb /*
DictionaryServices.h
DictionaryServices framework
*/
/*!
@typedef DCSDictionaryRef
@abstract Opaque CF object that represents a dictionary file
*/
public class DCSDictionary {
}
@available(OSX 10.5, *)
public func DCSGetTermRangeInString(_ dictionary: DCSDictionary?, _ textString: CFString, _ offset: CFIndex) -> CFRange
之前的一个问题,在该问题上根本无法进行交叉测量联接。这意味着您无法在来自不同度量的数据点之间进行数据聚合。
注意:到目前为止,只有v1.7.0
这种新的influx 2.0查询语言允许您进行交叉测量联接。
在大多数情况下,如果通过将正确类型的点数据存储到适当的度量中来正确设计方案,则不必进行交叉度量联接。
查看您的字段,我可以看到一些数据类型,例如温度。也许可以将它们放在不同的尺寸内?这样一来,开发人员(尤其是新雇用的开发人员)可以更轻松地发现数据吗?
这也使您的测量变得井井有条。如果每隔一分钟就有一次温度数据输入,并且某些字段的间隔为2分钟,则单个测量数据集可能看起来很混乱。这意味着在某些情况下,特定的数据行将始终仅具有温度场,而其他情况则不会。
您需要处理这种极端情况。您是否进行flux
插值?
不确定ucp idc 1,2,3和4字段是什么。如果它们以某种方式关联,则应单独进行测量。在某种意义上与某些字段的组合相关联,例如ucp1和ucp2,您可以计算出是否可以理解数据以告诉您一些信息。例如高温值+低ucp值意味着机器故障了?
我将按照正确的度量对您的数据进行分组,否则,实际上influxdb中不需要linear
。