【问题标题】:Can InfluxDB have Continuous Queries with same source & target measurements but with different/new tags?InfluxDB 是否可以进行具有相同源和目标测量但具有不同/新标签的连续查询?
【发布时间】:2020-01-29 05:16:51
【问题描述】:

下面是我提出这个问题的场景。

要求: 在 influxDb 中预先聚合时间序列数据,粒度为设备中每个传感器的秒、分钟、小时、天和周。

当前提案: 当设备载入时,为设备的每个传感器创建五个连续查询(每个粒度级别一个,即秒、分钟...),保留策略与原始时间序列数据的保留策略不同。

当前提案的限制: 随着设备/传感器(时间序列数据源)数量的增加,influx 会因过多的连续查询(不推荐)而变得臃肿,并且会对 influxDb 实例本身造成影响。

问题: 为了避免上述问题,是否有可能在同一源测量(即原始时间序列测量)上创建连续查询,但是可以使用引入的新标签在测量中区分聚合,以区分连续查询的结果与原始的结果测量中的时间序列数据。

示例:

CREATE CONTINUOUS QUERY "strain_seconds" ON "database"
RESAMPLE EVERY 5s FOR 1m
BEGIN
  SELECT MEAN("strain_top") AS "STRAIN_TOP_MEAN" INTO "database"."raw"."strain" FROM "database"."raw"."strain" GROUP BY time(1s),*
END

【问题讨论】:

    标签: iot influxdb kapacitor


    【解决方案1】:

    据我所知,并从文档中看到,不可能在连续查询中应用新标签。

    如果我正确理解了要求,这是您可以解决的一种方法。

    CREATE CONTINUOUS QUERY "strain_seconds" ON "database"
    RESAMPLE EVERY 5s FOR 1m
    BEGIN
      SELECT MEAN("strain_top") AS "STRAIN_TOP_MEAN" INTO "database"."raw"."strain" FROM "database"."strain_seconds_retention_policy"."strain" GROUP BY time(1s),*
    END
    

    这会将数据保存在相同的度量中,但保留策略不同 - strain_seconds_retention_policy。当您执行select 时,您指定了从中选择的相应保留策略。
    请注意,不能同时从多个保留策略执行select。如果您不指定一个,则使用默认的一个(而不是全部)。如果这是您需要的东西,那么可以使用另一种方法。

    我不太明白为什么您需要为每个设备和每个传感器定义一个连续查询。您只需要定义五个(每秒 1 个、分钟、小时、天、周)并执行您已经执行的 group by *(全部)。只要源数据点有一个带有相应设备和传感器 id 的标签,重新采样的数据点也会有它。任何新添加的设备(数据)只会由这 5 个查询自动处理并保存到相应的保留策略中。

    如果您确实想应用其他标签,您可以在自定义脚本中处理数据库外部的数据,并使用您需要的任何其他标签将其写回,而不是使用连续查询

    【讨论】:

    • 我定义 CQ 每个设备每个传感器的原因是由于设备建模以及架构师确认的存储模型。我同意,即使我会喜欢每个设备的存储模型。 W.r.t.新标签,我计划用聚合级别区分计算聚合,以便我可以使用一个度量来存储由这些附加标签在此度量上区分的所有聚合粒度。在这种用例中,您对 Kapacitor 的实施有何看法?这会是更好的方法吗?
    • 确实,使用 Kapacitor,您可能会做您需要的事情,或者您可以在外部服务的代码中实现它。我猜聚合级别是性能优化吗?您通常会在一段时间后自动删除数据的保留策略中执行此操作。随着时间的推移,高粒度数据变得不那么相关。如果你想保持快速,那么你应该尽可能多地丢弃数据(从短期存储中,显然你会在其他地方存档)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多