InfluxDB 的UTC時間問題與簡單的持續查詢語句


原文:https://blog.csdn.net/Vblegend_2013/article/details/80904275 

最近項目中使用了時序數據庫InfluxDB 各方性能也是蠻強大的。但是唯一不足的地方時間格式,默認是使用的UTC時間也是固定的不能修改的,研究了下找到解決方案。

        public static void Write()
        {
            String[] Tags = new string[] { "Element_1", "Element_2", "Element_3", "Element_4", "Element_5" };
            List<Point> Points = new List<Point>();
            foreach (var item in Tags)
            {
                Point point = CreatePoint(item);
                Points.Add(point);
            }
            var r = InfluxDB.WriteAsync(DBName, Points.ToArray()).Result;
 
        }
        public static Random r = new Random();
 
 
        public static Point CreatePoint(String name)
        {
            Dictionary<string, object> fields = new Dictionary<string, object>();
            Dictionary<string, object> tags = new Dictionary<string, object>();
 
            tags.Add("Name", name);
            fields.Add("Value", r.Next(100, 200));
            Point point = new Point()
            {
                Fields = fields,
                Measurement = "base",
                Tags = tags,
                Timestamp = DateTime.UtcNow.AddHours(8),
            };
            return point;
        }

 


很簡單 寫入數據時 UTC時間加上8小時就OK

 

看下 持續查詢代碼

 

按小時查詢

CREATE CONTINUOUS QUERY Group_Hour_Query ON TestDB RESAMPLE EVERY 1h FOR 1h BEGIN SELECT mean(Value) AS Avg, max(Value) AS Max, min(Value) AS Min, spread(Value) AS Spread, sum(Value) AS Sum, count(Value) AS Count, difference(max(Value)) AS Difference, stddev(Value) AS Stddev INTO TestDB.autogen.Group_Hour FROM TestDB.autogen.base GROUP BY "Name", time(1h) fill(0) END

 


按天查詢

CREATE CONTINUOUS QUERY Group_Day_Query ON TestDB RESAMPLE EVERY 1d FOR 1d BEGIN SELECT mean(Value) AS Avg, max(Value) AS Max, min(Value) AS Min, spread(Value) AS Spread, sum(Value) AS Sum, count(Value) AS Count, difference(max(Value)) AS Difference, stddev(Value) AS Stddev INTO TestDB.autogen.Group_Day FROM TestDB.autogen.base GROUP BY "Name", time(1d) fill(0) END

 


以上兩個持續查詢腳本會將base表中數據按每小時、每天 以Name聚合 寫入到新的表中去

 

每天聚合的表  我們看下 2018-07-01 00:00:00 這一天的 Element_1 的數據

 

 

每小時聚合的表  我們看下 2018-07-01 13:00:00 這一小時的 Element_1 的數據

 

 

然后我們自己寫查詢語句 查詢這一小時的平均值 跟持續查詢的結果是相同的

 

 

然后我們寫查詢07-01一天的平均值 跟持續查詢的結果也是相同的

 

 

因為之前寫入時我們是UTC+8小時的 ,最后我們確認下 數據庫中的數據是否是最新的。

 

 

 

查詢下最后一條語句,  因為是每隔10分鍾寫入一次。。 所以貌似沒毛病。

經過我的簡單測試 數據庫在寫入2000W條數據后並沒有明顯的降速(寫入),且查詢速度依然很理想化。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM