第一次看influxdb的代碼實例時不明白influxdb Measurements是什么意思。經過研究總結一下。
1)measurement,相當於關系數據庫中的table,包含tag,field,time,例如:select * from cpu_usage
2)field是必須的,並且不能根據field來排序
3)tag是可選的,tag可以用來做索引,tag是以字符串的形式存放的
4)InfluxDb可以隨意添加measurements, tags, fields, time
5)points相當於表中的一條數據
6)InfluxDb的概念,Point由時間戳(time)、數據(field)、標簽(tags)組成
time 每個數據記錄時間,是數據庫中的主索引(會自動生成)
fields 各種記錄值(沒有索引的屬性)也就是記錄的值:溫度, 濕度,每條記錄可以不同
tags 各種有索引的屬性:地區,海拔
7)go操作Measurements代碼
package main import ( "log" "time" "github.com/influxdata/influxdb/client/v2" ) const ( MyDB = "nfdump" //數據庫名 username = "zhja" //用戶名 password = "zhjazhja" //密碼 ) func main(){ //鏈接數據庫 c, err := client.NewHTTPClient(client.HTTPConfig{ Addr: "http://192.168.210.130:8086", Username: username, Password: password, }) if err != nil { log.Fatalln("Error: ", err) } // Create a new point batch bp, err := client.NewBatchPoints(client.BatchPointsConfig{ Database: MyDB, Precision: "s", }) if err != nil { log.Fatalln("Error: ", err) } // Create a point and add to batch tags := map[string]string{"cpu1": "cpu-total1"} fields := map[string]interface{}{ "idle1": 10.1, "system1": 53.3, "user1": 46.6, } pt, err := client.NewPoint("cpu_usage", tags, fields, time.Now()) if err != nil { log.Fatalln("Error: ", err) } bp.AddPoint(pt) // Write the batch c.Write(bp) }