influxdb Measurements

时间:2023-03-08 23:03:16
influxdb Measurements

第一次看influxdb的代码实例时不明白influxdb Measurements是什么意思。经过研究总结一下。

1)measurement,相当于关系数据库中的table,包含tag,field,time,例如:select * from cpu_usage

influxdb Measurements

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)
}