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

举报
愚公搬代码 发表于 2022/11/29 20:38:32 2022/11/29
【摘要】 前言InfluxDB是一个开源的时间序列数据库。它在单个二进制文件中拥有时间序列平台所需的一切 - 多租户时间序列数据库、UI 和仪表板工具、后台处理和监视代理。所有这些都使部署和设置变得轻而易举且更易于保护。InfluxDB平台还包括API,工具和生态系统,其中包括10个客户端和服务器库,Telegraf插件,与Grafana,Google Data Studio的可视化集成以及与Goo...

前言

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

在这里插入图片描述

总结

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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。