首頁  >  文章  >  後端開發  >  在Go語言中使用InfluxDB:完整指南

在Go語言中使用InfluxDB:完整指南

王林
王林原創
2023-06-17 11:55:003139瀏覽

我相信很多程式開發人員都聽說過InfluxDB,它是一個開源的,分散式的時序資料存儲,主要用於儲存營運度量指標(OMI)和事件資料。 InfluxDB 的核心特性包括高效能,可擴展性和強大的查詢語言。此外,InfluxDB 還提供了多種語言的客戶端 SDK,其中包括 Go 語言。

Go 語言是一種非常強大的程式語言。它具有高效性和並發性,也很適合用於編寫微服務。在本文中,我們將介紹如何在 Go 語言中使用 InfluxDB 操作時序資料。我們將覆寫以下內容:

  • 如何安裝InfluxDB 以及啟動InfluxDB
  • 如何在Go 語言中安裝InfluxDB 用戶端SDK
  • 如何建立InfluxDB 資料庫
  • 如何執行基本的InfluxDB 查詢操作
  • 如何透過Go 語言寫入和讀取InfluxDB 資料庫

安裝InfluxDB

在開始使用InfluxDB 之前,我們需要先安裝並啟動InfluxDB。 InfluxDB 的官方網站提供了詳細的安裝指南,包括各種作業系統。請根據您目前的作業系統版本選擇適當的安裝指南。

安裝完成後,您可以透過以下命令啟動 InfluxDB:

$ influxd

安裝 InfluxDB Go SDK

Go 語言有一個官方 InfluxDB 用戶端 SDK 可以供我們使用。在應用程式中使用 InfluxDB 用戶端 SDK 可以方便地連接到 InfluxDB 資料庫,以寫入和讀取資料到資料庫。我們可以使用以下命令在 Go 語言專案中安裝 InfluxDB SDK:

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

建立 InfluxDB 資料庫

在開始寫入資料之前,我們需要建立一個 InfluxDB 資料庫。可以使用InfluxDB 的Web 介面,也可以使用CLI 工具influx:

$ influx
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0

> create database mydb

完成後,我們可以使用下列指令列出所有資料庫:

> show databases
name: databases
-----------
name
_internal
mydb

執行InfluxDB 查詢

#除了在Go 語言中連接InfluxDB,我們也可以使用influx 來手動執行InfluxDB 查詢。以下是一個簡單的範例:

$ influx
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0

> use mydb
Using database mydb

> insert temperature value=25.5
> insert temperature value=28.0

> select * from temperature
name: temperature
time                value
----                -----
1623102590352798368 25.5
1623102590981854175 28

在這個範例中,我們在名為 mydb 的資料庫中插入了兩個溫度值。隨後,我們執行了一個簡單的查詢,以獲得所有 temperature 資料。

在Go 語言中使用InfluxDB

下面是InfluxDB Go SDK 的一些基本用法範例:

package main

import (
    "fmt"
    "time"
    "github.com/influxdata/influxdb1-client/v2"
)

func main() {
    // 初始化 InfluxDB 客户端
    c, err := client.NewHTTPClient(client.HTTPConfig{
        Addr: "http://localhost:8086",
    })
    if err != nil {
        fmt.Println("Error creating InfluxDB Client: ", err.Error())
    }
    defer c.Close()

    // 创建新的 InfluxDB 数据点
    tags := map[string]string{"test": "test123"}
    fields := map[string]interface{}{
        "value": 35.6,
    }
    pt, err := client.NewPoint("temperature", tags, fields, time.Now())
    if err != nil {
        fmt.Println("Error: ", err.Error())
    }

    // 写入数据点到 InfluxDB
    bp, err := client.NewBatchPoints(client.BatchPointsConfig{
        Database:  "mydb",
        Precision: "s",
    })
    if err != nil {
        fmt.Println("Error: ", err.Error())
    }
    bp.AddPoint(pt)
    err = c.Write(bp)
    if err != nil {
        fmt.Println("Error: ", err.Error())
    }

    // 查询 InfluxDB 数据点
    q := client.Query{
        Command:  `SELECT "value" FROM "temperature"`,
        Database: "mydb",
    }
    res, err := c.Query(q)
    if err != nil {
        fmt.Println("Error: ", err.Error())
    }

    var value float64
    for _, row := range res.Results[0].Series[0].Values {
        value = row[1].(float64)
    }
    fmt.Printf("%+v
", value)
}

在這個範例中,我們首先使用InfluxDB Go SDK 初始化了一個客戶端。接下來,我們手動建立了一個新的 InfluxDB 資料點,並將其新增至批次資料。最後,我們使用 InfluxDB Go SDK 查詢資料點,並在控制台列印其傳回值。

結論

在本文中,我們介紹如何在 Go 語言中使用 InfluxDB 操作時序數據,並示範如何使用 InfluxDB Go SDK。我們學習如何安裝並啟動 InfluxDB,並建立了一個 InfluxDB 資料庫。我們也學習如何執行基本的 InfluxDB 查詢,並示範如何透過 Go 語言寫入和讀取 InfluxDB 資料庫。我們希望這篇文章對於想要使用 InfluxDB 的 Go 語言開發人員有所幫助。

以上是在Go語言中使用InfluxDB:完整指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn