influxdb Measurements
第一次看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) }