【愚公系列】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()}");
}
});
});
总结
时序数据库可以用于工业物联网环境下,特别是对设备数值进行监控,可以很直观看出每个时间区间的状态图、或者步行图等等。
- 点赞
- 收藏
- 关注作者
评论(0)