influxDB

更新、更全的《Go从入门到放弃》的更新网站,更有python、go、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11517502.html

本文介绍了influxDB时序数据库及Go语言操作influxDB

InfluxDB是一个开源分布式时序、事件和指标数据库。使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

一、安装

1.1 下载

https://portal.influxdata.com/downloads/

这里需要注意因为这个网站引用了google的api所以国内点页面的按钮是没反应的,怎么办呢?

按照下图所示,按F12打开浏览器的控制台,然后点击Elements,按下Ctrl/Command+F搜索releases/influxdb,按回车查找自己所需版本的下载地址。 influxdb_01.png

Mac和Linux用户可以点击https://v2.docs.influxdata.com/v2.0/get-started/下载。

1.2 安装

将上一步的压缩包,解压到本地。

二、influxDB介绍

2.1 名词介绍

influxDB名词传统数据库概念
database数据库
measurement数据表
point数据行

2.2 point

influxDB中的point相当于传统数据库里的一行数据,由时间戳(time)、数据(field)、标签(tag)组成。

Point属性传统数据库概念
time每个数据记录时间,是数据库中的主索引
field各种记录值(没有索引的属性),例如温度、湿度
tags各种有索引的属性,例如地区、海拔

2.3 Series

Series相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

想要了解更多

三、Go操作influxDB

3.1 安装

3.1.1 influxDB 1.x版本

go get github.com/influxdata/influxdb1-client/v2

3.1.2 influxDB 2.x版本

go get github.com/influxdata/influxdb-client-go

3.2 基本使用

package main

import (
    "fmt"
    "log"
    "time"

    client "github.com/influxdata/influxdb1-client/v2"
)

// influxdb demo

func connInflux() client.Client {
    cli, err := client.NewHTTPClient(client.HTTPConfig{
        Addr:     "http://127.0.0.1:8086",
        Username: "admin",
        Password: "",
    })
    if err != nil {
        log.Fatal(err)
    }
    return cli
}

// query
func queryDB(cli client.Client, cmd string) (res []client.Result, err error) {
    q := client.Query{
        Command:  cmd,
        Database: "test",
    }
    if response, err := cli.Query(q); err == nil {
        if response.Error() != nil {
            return res, response.Error()
        }
        res = response.Results
    } else {
        return res, err
    }
    return res, nil
}

// insert
func writesPoints(cli client.Client) {
    bp, err := client.NewBatchPoints(client.BatchPointsConfig{
        Database:  "test",
        Precision: "s", //精度,默认ns
    })
    if err != nil {
        log.Fatal(err)
    }
    tags := map[string]string{"cpu": "ih-cpu"}
    fields := map[string]interface{}{
        "idle":   201.1,
        "system": 43.3,
        "user":   86.6,
    }

    pt, err := client.NewPoint("cpu_usage", tags, fields, time.Now())
    if err != nil {
        log.Fatal(err)
    }
    bp.AddPoint(pt)
    err = cli.Write(bp)
    if err != nil {
        log.Fatal(err)
    }
    log.Println("insert success")
}

func main() {
    conn := connInflux()
    fmt.Println(conn)

    // insert
    writesPoints(conn)

    // 获取10条数据并展示
    qs := fmt.Sprintf("SELECT * FROM %s LIMIT %d", "cpu_usage", 10)
    res, err := queryDB(conn, qs)
    if err != nil {
        log.Fatal(err)
    }

    for _, row := range res[0].Series[0].Values {
        for j, value := range row {
            log.Printf("j:%d value:%v\n", j, value)
        }
    }
}

转载于:https://www.cnblogs.com/nickchen121/p/11517435.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值