2016-07-26 66 views
0

在玩了一段時間的collectd和InfluxDB之後,我已經意識到正常運行時間是作爲一個單獨的數據點存儲的。導致測量看起來像這樣:有效建模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。之間的一切都是多餘的。

回答

0

這裏要做的正確事情就是使用持續查詢和保留策略。我不知道你只能存儲第一個和最後一個點,但你絕對可以。

連續查詢將用於將所有數據下采樣到單個點。保留策略將用於刪除舊數據。

這將是這個樣子

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個字節在磁盤上。我可能不會太擔心非常高效。