【愚公系列】2022年11月 influxDB数据库-.Net Core中的使用

2022-11-16 15:36:07 浏览数 (1)

文章目录

前言

一、.Net Core中的使用

1.下载InfluxDB,并配置

2.执行InfluxDB

2 .Net Core中的使用InfluxDB

2.1 写入数据

2.1 查询数据

总结

前言

InfluxDB是一个开源的时间序列数据库。它在单个二进制文件中拥有时间序列平台所需的一切 - 多租户时间序列数据库、UI 和仪表板工具、后台处理和监视代理。所有这些都使部署和设置变得轻而易举且更易于保护。

InfluxDB平台还包括API,工具和生态系统,其中包括10个客户端和服务器库,Telegraf插件,与Grafana,Google Data Studio的可视化集成以及与Google Bigtable,BigQuery等的数据源集成。

influxDB的官网下载地址:https://portal.influxdata.com/downloads/

gitehub地址:https://github.com/influxdata/influxdb-client-csharp/tree/master/Client

一、.Net Core中的使用

1.下载InfluxDB,并配置

因为官网下载需要注册下面直接给出下载地址:https://dl.influxdata.com/influxdb/releases/influxdb2-2.5.1-windows-amd64.zip

2.执行InfluxDB

解压下载的文件夹在cmd中执行exe文件

在浏览器输入:http://127.0.0.1:8086/onboarding/

点击GET STARTED按钮来创建用户

选择快速开始

进入主页,可以看到它支持的客户端,包括C#,以及其他很多别的支持。说明还是比较强大了,支持的方案有很多,以及也可以支持从消息队列、系统日志、其他数据库等地方进行导入或写入数据。

找到API TOKENS选项,这里会生成用户的一个唯一token信息,用来写代码时候会用到。

我的Token如下:

代码语言:javascript复制
5viT60tSrJuCQAWJ8HV1MRFuMnSgLPmZXNSUIT45zoMO3Htnr2SPgAXtK1x8MBhjkBlSHYjp66DvbWonUoQcpw==

2 .Net Core中的使用InfluxDB

引入nuget包 InfluxDB.Client

2.1 写入数据

代码语言:javascript复制
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Writes;

Console.WriteLine("Hello, World!"); 
const string token = "5viT60tSrJuCQAWJ8HV1MRFuMnSgLPmZXNSUIT45zoMO3Htnr2SPgAXtK1x8MBhjkBlSHYjp66DvbWonUoQcpw==";  // influxdb生成的token
const string org = "manager";//用户组
const string bucket = "test";//数据实例
// 生产环境下使用,可以使用单例来注册使用同一个客户端,减少创建次数
using (var client = InfluxDBClientFactory.Create("http://localhost:8086", token))  
{    
    using (var writeApi = client.GetWriteApi())
    {
        for (int i = 0; i <= 1000; i  )
        {
            var point = PointData.Measurement("mem")
                .Tag("host", "local")
                .Field("Field1", new Random().Next(0, 100))
                .Timestamp(DateTime.UtcNow, WritePrecision.Ns);

            writeApi.WritePoint(point, bucket, org);
            Thread.Sleep(10);
        }
    }
}

Console.WriteLine("Hello, World 2 !");

Console.ReadLine();

可视化面板里面,可以进行数据查询,以及数据可视化。Bucket就是咱们创建的数据库实例,mem就是对应上面的代码里面写的mem,可以当作是一个表,然后是一些标签、字段等。Field是字段,可以自己拓展其他字段等等。

2.1 查询数据

代码语言:javascript复制
using InfluxDB.Client;

Console.WriteLine("Hello, World!");
const string Url = "http://localhost:8086";
const string Token = "5viT60tSrJuCQAWJ8HV1MRFuMnSgLPmZXNSUIT45zoMO3Htnr2SPgAXtK1x8MBhjkBlSHYjp66DvbWonUoQcpw==";  // influxdb生成的token
const string Org = "manager";//用户组
const string Bucket = "test";//数据实例
// 生产环境下使用,可以使用单例来注册使用同一个客户端,减少创建次数
var options = InfluxDBClientOptions.Builder
                .CreateNew()
                .Url(Url)
                .AuthenticateToken(Token)
                .Bucket(Bucket)
                .Org(Org)
                .Build();

using var client = InfluxDBClientFactory.Create(options);

Console.WriteLine("*** Query Points ***");

var query = "from(bucket: "test") |> range(start: 0)";

var tables = await client.GetQueryApi()
    .QueryAsync(query, "manager");

tables.ForEach(table =>
{
    table.Records.ForEach(record =>
    {
        if (record.GetMeasurement() == "mem")
        {
            Console.WriteLine(
                    $"{record.GetTime()} {record.GetMeasurement()}: {record.GetField()} {record.GetValue()}");
        }
    });
});

总结

时序数据库可以用于工业物联网环境下,特别是对设备数值进行监控,可以很直观看出每个时间区间的状态图、或者步行图等等。

0 人点赞