Maison  >  Article  >  développement back-end  >  Utiliser InfluxDB dans Go : un guide complet

Utiliser InfluxDB dans Go : un guide complet

王林
王林original
2023-06-17 11:55:003142parcourir

Je pense que de nombreux développeurs de programmes ont entendu parler d'InfluxDB, qui est un stockage de données de séries chronologiques distribué et open source, principalement utilisé pour stocker des indicateurs de métriques opérationnelles (OMI) et des données d'événements. Les fonctionnalités principales d'InfluxDB incluent des performances élevées, une évolutivité et un langage de requête puissant. De plus, InfluxDB fournit également des SDK clients dans plusieurs langues, dont Go.

Le langage Go est un langage de programmation très puissant. Il est efficace et simultané, et convient également à l'écriture de microservices. Dans cet article, nous présenterons comment utiliser InfluxDB pour manipuler des données de séries chronologiques dans le langage Go. Nous aborderons les points suivants :

  • Comment installer InfluxDB et démarrer InfluxDB
  • Comment installer le SDK client InfluxDB en langage Go
  • Comment créer une base de données InfluxDB
  • Comment effectuer des opérations de requête de base InfluxDB
  • Comment écrire via le langage Go Et lisez la base de données InfluxDB

Installez InfluxDB

Avant de commencer à utiliser InfluxDB, nous devons installer et démarrer InfluxDB. Le site officiel d'InfluxDB fournit des guides d'installation détaillés pour différents systèmes d'exploitation. Veuillez sélectionner le guide d'installation approprié en fonction de la version actuelle de votre système d'exploitation.

Une fois l'installation terminée, vous pouvez démarrer InfluxDB avec la commande suivante :

$ influxd

Installer le SDK InfluxDB Go

Le langage Go dispose d'un SDK client InfluxDB officiel que nous pouvons utiliser. Utilisez le SDK client InfluxDB dans votre application pour vous connecter facilement à la base de données InfluxDB afin d'écrire et de lire des données à partir de la base de données. Nous pouvons installer le SDK InfluxDB dans un projet en langage Go à l'aide de la commande suivante :

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

Créer une base de données InfluxDB

Avant de commencer à écrire des données, nous devons créer une base de données InfluxDB. Vous pouvez utiliser l'interface Web d'InfluxDB, ou vous pouvez utiliser l'outil CLI influx :

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

> create database mydb

Une fois terminé, nous pouvons utiliser la commande suivante pour lister toutes les bases de données :

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

Exécuter la requête InfluxDB

En plus de se connecter à InfluxDB en langage Go , nous pouvons également utiliser influx pour exécuter manuellement des requêtes InfluxDB. Voici un exemple simple :

$ 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

Dans cet exemple, nous avons inséré deux valeurs de température dans une base de données appelée mydb. Nous avons ensuite exécuté une requête simple pour obtenir toutes les données de température.

Utilisation d'InfluxDB dans Go

Voici quelques exemples d'utilisation de base du SDK InfluxDB Go :

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

Dans cet exemple, nous initialisons d'abord un client à l'aide du SDK InfluxDB Go. Ensuite, nous avons créé manuellement un nouveau point de données InfluxDB et l'avons ajouté à un lot de données. Enfin, nous utilisons le SDK InfluxDB Go pour interroger les points de données et imprimer leurs valeurs de retour sur la console.

Conclusion

Dans cet article, nous avons présenté comment utiliser InfluxDB pour exploiter des données de séries chronologiques dans le langage Go et démontré comment utiliser le SDK InfluxDB Go. Nous avons appris comment installer et démarrer InfluxDB et créer une base de données InfluxDB. Nous avons également appris à effectuer des requêtes InfluxDB de base et démontré comment écrire et lire à partir d'une base de données InfluxDB via le langage Go. Nous espérons que cet article sera utile aux développeurs Go qui souhaitent utiliser InfluxDB.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn