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

 


免責聲明!

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



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