Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden von InfluxDB in Go: Eine vollständige Anleitung

Verwenden von InfluxDB in Go: Eine vollständige Anleitung

王林
王林Original
2023-06-17 11:55:003142Durchsuche

Ich glaube, viele Programmentwickler haben von InfluxDB gehört, einem Open-Source-Speicher für verteilte Zeitreihendaten, der hauptsächlich zum Speichern von Betriebsmetrikindikatoren (OMI) und Ereignisdaten verwendet wird. Zu den Kernfunktionen von InfluxDB gehören hohe Leistung, Skalierbarkeit und eine leistungsstarke Abfragesprache. Darüber hinaus bietet InfluxDB auch Client-SDKs in mehreren Sprachen, einschließlich Go.

Go-Sprache ist eine sehr leistungsfähige Programmiersprache. Es ist effizient und parallel und eignet sich auch zum Schreiben von Microservices. In diesem Artikel stellen wir vor, wie man InfluxDB zum Bearbeiten von Zeitreihendaten in der Go-Sprache verwendet. Wir werden Folgendes behandeln:

  • Wie man InfluxDB installiert und InfluxDB startet
  • Wie man das InfluxDB-Client-SDK in der Go-Sprache installiert
  • Wie man eine InfluxDB-Datenbank erstellt
  • Wie man grundlegende InfluxDB-Abfrageoperationen durchführt
  • Wie man schreibt durch Go-Sprache Und lesen Sie die InfluxDB-Datenbank

Installieren Sie InfluxDB

Bevor wir mit der Verwendung von InfluxDB beginnen, müssen wir InfluxDB installieren und starten. Die offizielle Website von InfluxDB bietet detaillierte Installationsanleitungen für verschiedene Betriebssysteme. Bitte wählen Sie die entsprechende Installationsanleitung basierend auf Ihrer aktuellen Betriebssystemversion aus.

Nachdem die Installation abgeschlossen ist, können Sie InfluxDB mit dem folgenden Befehl starten:

$ influxd

Install InfluxDB Go SDK

Die Go-Sprache verfügt über ein offizielles InfluxDB-Client-SDK, das wir verwenden können. Verwenden Sie das InfluxDB Client SDK in Ihrer Anwendung, um einfach eine Verbindung zur InfluxDB-Datenbank herzustellen und Daten aus der Datenbank zu schreiben und zu lesen. Mit dem folgenden Befehl können wir das InfluxDB SDK in einem Go-Sprachprojekt installieren:

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

Erstelle eine InfluxDB-Datenbank

Bevor wir mit dem Schreiben von Daten beginnen, müssen wir eine InfluxDB-Datenbank erstellen. Sie können die Weboberfläche von InfluxDB oder das CLI-Tool Influx verwenden:

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

> create database mydb

Nach Abschluss können wir den folgenden Befehl verwenden, um alle Datenbanken aufzulisten:

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

InfluxDB-Abfrage ausführen

Zusätzlich zur Verbindung mit InfluxDB in der Go-Sprache , wir können Influx auch verwenden, um InfluxDB-Abfragen manuell auszuführen. Hier ist ein einfaches Beispiel:

$ 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

In diesem Beispiel haben wir zwei Temperaturwerte in eine Datenbank namens mydb eingefügt. Anschließend haben wir eine einfache Abfrage ausgeführt, um alle Temperaturdaten abzurufen.

InfluxDB in Go verwenden

Hier sind einige grundlegende Anwendungsbeispiele des 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)
}

In diesem Beispiel initialisieren wir zunächst einen Client mit dem InfluxDB Go SDK. Als Nächstes haben wir manuell einen neuen InfluxDB-Datenpunkt erstellt und ihn einem Datenstapel hinzugefügt. Schließlich verwenden wir das InfluxDB Go SDK, um die Datenpunkte abzufragen und ihre Rückgabewerte an die Konsole zu drucken.

Fazit

In diesem Artikel haben wir die Verwendung von InfluxDB zum Bearbeiten von Zeitreihendaten in der Go-Sprache vorgestellt und die Verwendung des InfluxDB Go SDK demonstriert. Wir haben gelernt, wie man InfluxDB installiert und startet und eine InfluxDB-Datenbank erstellt. Wir haben auch gelernt, wie man grundlegende InfluxDB-Abfragen durchführt, und gezeigt, wie man über die Go-Sprache aus einer InfluxDB-Datenbank schreibt und liest. Wir hoffen, dass dieser Artikel für Go-Entwickler hilfreich ist, die InfluxDB verwenden möchten.

Das obige ist der detaillierte Inhalt vonVerwenden von InfluxDB in Go: Eine vollständige Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn