我相信很多程式開發人員都聽說過InfluxDB,它是一個開源的,分散式的時序資料存儲,主要用於儲存營運度量指標(OMI)和事件資料。 InfluxDB 的核心特性包括高效能,可擴展性和強大的查詢語言。此外,InfluxDB 還提供了多種語言的客戶端 SDK,其中包括 Go 語言。
Go 語言是一種非常強大的程式語言。它具有高效性和並發性,也很適合用於編寫微服務。在本文中,我們將介紹如何在 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中文網其他相關文章!