2022年11月 influxDB数据库-.Net Core中的使用

Posted 微软MVP Eleven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022年11月 influxDB数据库-.Net Core中的使用相关的知识,希望对你有一定的参考价值。

前言

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如下:

5viT60tSrJuCQAWJ8HV1MRFuMnSgLPmZXNSUIT45zoMO3Htnr2SPgAXtK1x8MBhjkBlSHYjp66DvbWonUoQcpw==

2 .Net Core中的使用InfluxDB

引入nuget包 InfluxDB.Client

2.1 写入数据

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 查询数据

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()");
        
    );
);

总结

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

以上是关于2022年11月 influxDB数据库-.Net Core中的使用的主要内容,如果未能解决你的问题,请参考以下文章

2022年11月 .NET CORE工具案例-.NET Core执行JavaScript

2022年11月 .NET CORE工具案例-.NET Core执行JavaScript

2022年11月 .NET CORE工具案例-.NET 7中的Quic通信

2022年11月 .NET CORE工具案例-StackExchange.Redis代码变量方式实现商品秒杀

2022年11月 .NET CORE工具案例-StackExchange.Redis代码变量方式实现商品秒杀

2021年12月9号 docker安装influxdb1.8或者2.2