【问题标题】:Schema design in influxdbinfluxdb 中的模式设计
【发布时间】:2016-05-12 09:05:28
【问题描述】:

我的 influxDB 用例是用于存储和趋势来自不同 PLC 的过程数据。我使用 grafana 可视化这些数据。在第一个试验中,我使用了来自 influxDB 的模式设计指南,使用通用的度量名称并通过标签分隔不同的值源。

例如,当我在“酸”泵组中有 2 个泵,在“苛性”泵组中有 2 个泵时,我会重新计算压力:

- pump_pressure {pump: pump_1, group: acid} 
- pump_pressure {pump: pump_2, group: acid} 
- pump_pressure {pump: pump_1, group: caustic} 
- pump_pressure {pump: pump_2, group: caustic} 

在我的用例中,最终用户希望能够使用 Grafana 制作自己的趋势。虽然这种记录数据的方式符合 influxDB 的架构设计指南(我认为),但对于不习惯使用类似 SQL 的语言进行工作和思考的非技术人员来说,这非常令人困惑。

因此,我很想以他们习惯的方式存储数据,这是在类似产品中工作的一般方式(历史学家):

- ACID_pump_1_pressure
- ACID_pump_2_pressure
- CAUSTIC_pump_1_pressure
- CAUSTIC_pump_2_pressure

这将使最终用户更容易做出趋势,因为 1 次测量 = 一个数据源,他们不必担心 wheregroup by 子句。

谁能指出一些线索,后者会对 influxDB 性能和存储产生什么影响。数据会以这种方式占用更多空间吗?请注意,后一种方法可能会导致几千次测量,但它们的基数都是 1。

【问题讨论】:

    标签: influxdb grafana


    【解决方案1】:

    如果它更适合您的用例,您没有理由不能这样做。您开始使用的指南就在那里,因为它释放了 InfluxDB 标记功能的全部力量。

    不会影响性能或存储。在内部,InfluxDB 基于每个唯一的测量“键”创建一个新系列,其中键是测量名称和标签键/值对的组合。

    即,每一个都是一个单独的系列:

    pump_pressure,pump=pump_1,group=acid
    pump_pressure,pump=pump_2,group=acid
    pump_pressure,pump=pump_1,group=caustic
    pump_pressure,pump=pump_2,group=caustic
    

    另外,每一个都是一个单独的系列:

    ACID_pump_1_pressure
    ACID_pump_2_pressure
    CAUSTIC_pump_1_pressure
    CAUSTIC_pump_2_pressure
    

    编辑,来源:我在 InfluxData 工作

    EDIT 2,话虽这么说,我也完全同意@srikanta,我建议保留标签,但寻找另一种解决方案来与数据库用户交互(或教育)。

    【讨论】:

      【解决方案2】:

      确实,您可以采用这种方法。然而,这是不可扩展的。如果使用的泵数量增加怎么办?然后,这种方法也适用于泵数量等于时间序列数量的情况。但是,管理起来很痛苦。

      如果要避免非技术用户与 SQL 查询交互的问题,则应考虑不同的方法,而不是改变数据库的“模式”。

      更多见解 --> https://blog.zhaw.ch/icclab/influxdb-design-guidelines-to-avoid-performance-issues/

      【讨论】:

      • 您好,感谢您的回答。工厂通常需要的测量不像服务器 CPU 负载和跨数据中心的内存使用那样容易构建。当用户对泵流量感兴趣时,他想要该泵的流量而不是任何其他流量。我想知道如果我对每个值使用单独的测量值,我会有性能/存储损失吗?
      • @coussej AFAIK,如果您在每个时间序列基础上存储特定类型的值,例如“A”时间序列由所有泵的流量值和“ B"时间序列由所有泵的另一个参数组成。由于完成后的查询是特定于时间序列的,因此与在单个时间序列中存储多种类型的值相比,您不会看到任何差异。请记住,一个数据库可以有多个时间序列(就像 SQL 数据库中的一个表)
      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多