【问题标题】:Modelling database for uptime within influxdb efficiently有效地为 influxdb 中的正常运行时间建模数据库
【发布时间】:2016-07-26 17:19:23
【问题描述】:

在使用了 collectd 和 InfluxDB 一段时间后,我意识到正常运行时间每次都存储为单个数据点,例如导致测量结果如下所示:

1469552552940296000 localhost   uptime  426568
1469552931893217000 localhost   uptime  426947
1469552991889480000 localhost   uptime  427007
1469553051889521000 localhost   uptime  427067
1469553111890071000 localhost   uptime  427127
1469553171889512000 localhost   uptime  427187
1469553231889512000 localhost   uptime  427247

这对我来说似乎效率低下,因为它有点多余。给定最后一个测量值,我可以计算所有其他测量值,那么为什么要首先存储它们呢?我现在正在研究保留政策,但我不太确定如何在此处应用它们。对于此类数据,什么是好的策略?

我绝对希望系统关闭时的信息可用,所以基本上我想将“开始”点与最新的 uptime_value 一起存储。中间的一切都是多余的。

【问题讨论】:

    标签: database model influxdb uptime


    【解决方案1】:

    正确的做法是使用连续查询和保留策略。我不知道你只能存储第一个和最后一个点,但你绝对可以。

    连续查询将用于将所有数据下采样到一个点。保留政策将用于删除旧数据。

    看起来像这样

    CREATE RETENTION POLICY myrp on mydb DURATION 1d REPLICATION 1
    

    然后有类似下面的连续查询

    CREATE CONTINUOUS QUERY mycq on mydb BEGIN
      SELECT max(uptime) FROM mymeasurement GROUP BY time(10m), *
    END
    

    话虽如此,压缩后,这些点中的每一个都将占用不到 2.5 字节的磁盘空间。我可能不会太担心效率很高。

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多