ASP.NET Core2读写InfluxDB时序数据库

在我们很多应用中会遇到有一种基于一系列时间的数据需要处理,通过时间的顺序可以将这些数据点连成线,再通过数据统计后可以做成多纬度的报表,也可通过机器学习来实现数据的预测告警。而时序数据库就是用于存放管理这种有着时间顺序数据的,时序数据库一般都支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。

 

InfluxDB简介

InfluxDB是一个基于时间序列数据而开发的高性能数据存储平台,它可以对时序数据进行高吞吐量的摄取、压缩和实时查询。InfluxDB是用Go语言编写的,它会编译成一个没有外部依赖的二进制文件来运行,支持Java、JavaScript、c#等语言。InfluxDB支持类似SQL的查询语言,同时还支持正则表达式、算术表达式和时间序列特定函数以加速数据的处理效率。如下是跟InfluxDB相关的网址:

InfluxDB官网:https://www.influxdata.com/

InfluxDB官方文档:https://docs.influxdata.com/influxdb/

InfluxDB官方下载:https://portal.influxdata.com/downloads

InfluxDB客户端工具下载:https://docs.influxdata.com/influxdb/v1.6/tools/api_client_libraries/

 

InfluxDB操作

这里将会简单的介绍下如何操作InfluxDB,通过这些操作基本也能满足工作上的需要了。操作InfluxDB可以通过命令行工具,也可借助开源的客户端工具,我这里使用的是一款名叫“InfluxDBStudio”基于C#编写的开源工具。常用操作的代码如下:

#显示用户

show users


#创建用户

create user "username" with password 'password'


#创建管理员权限用户

create user "username" with password 'password' with all privileges


#删除用户

drop user "username"


#创建数据库

create database "db_name"


#显示所有的数据库

show databases


#删除数据库

drop database "db_name"


#使用数据库

use db_name


#显示该数据库中所有的表

show measurements


#创建表,直接在插入数据的时候指定表名,其中test为表名

insert test,host=127.0.0.1,monitor_name=test count=1


#删除表

drop measurement "measurement_name"


#查询数据

select * from test order by time desc


#查看当前数据库的数据保存策略(Retention Policies)

show retention policies on "db_name"


#创建新的数据保存策略

#rp_name:策略名

#db_name:具体的数据库名;

#3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期)

#replication 1:副本个数,一般为1就可以了

#default:设置为默认策略

create retention policy "rp_name" on "db_name" duration 3w replication 1 default


#修改数据保存策略

alter retention policy "rp_name" on "db_name" duration 30d default


#删除数据保存策略

drop retention policy "rp_name"


#查看数据库的连续查询(Continous Queries)

show continuous queries


#创建新的连续查询(Continous Queries)

#cq_name:连续查询名字

#db_name:数据库名字

#sum(count):计算总和

#table_name:当前表名

#new_table_name:存新的数据的表名

#30m:时间间隔为30分钟

create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end


#删除连续查询

drop continous query cp_name on db_name


实现

通过上述的介绍与操作我们已基本熟悉了InfluxDB数据库,那么接下来咱们就一起来看看在ASP.NET Core2程序中如何来读写操作InfluxDB数据库吧。而这里我们借助一个名为“InfluxData.Net”的第三方库来与InfluxDB交互通讯,基于“InfluxData.Net”库可以使得我们很简单的完成数据库的读写操作。在ASP.NET Core2项目中通过Nuget管理器引用“InfluxData.Net”类库后,敲入实现代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using InfluxData.Net.Common.Enums;

using InfluxData.Net.InfluxDb;

using InfluxData.Net.InfluxDb.Models;

using Microsoft.AspNetCore.Mvc;


namespace WebApplication1.Controllers

{

    public class InfoController : Controller

    {

        //声明InfluxDbClient

        private InfluxDbClient clientDb;


        public InfoController()

        {

            //连接InfluxDb的API地址、账号、密码

            var infuxUrl = "http://localhost:8086/";

            var infuxUser = "admin";

            var infuxPwd = "admin";


            //创建InfluxDbClient实例

            clientDb = new InfluxDbClient(infuxUrl, infuxUser, infuxPwd, InfluxDbVersion.Latest);

        }



        /// <summary>

        /// 从InfluxDB中读取数据

        /// </summary>

        public async void GetData()

        {

            //传入查询命令,支持多条

            var queries = new[]

            {

                " SELECT * FROM Reading WHERE time> now() -  24h "

            };

            var dbName = "code-hub";


            //从指定库中查询数据

            var response = await clientDb.Client.QueryAsync(queries, dbName);

            //得到Serie集合对象(返回执行多个查询的结果)

            var series = response.ToList();

            //取出第一条命令的查询结果,是一个集合

            var list = series[0].Values;

            //从集合中取出第一条数据

            var info_model = list.FirstOrDefault();

        }




        /// <summary>

        /// 往InfluxDB中写入数据

        /// </summary>

        public async void AddData()

        {

            //基于InfluxData.Net.InfluxDb.Models.Point实体准备数据

            var point_model = new Point()

            {

                Name = "Reading",//表名

                Tags = new Dictionary<string, object>()

                {

                    { "Id", "5810953" }

                },

                Fields = new Dictionary<string, object>()

                {

                    { "Val",102 }

                },

                Timestamp = DateTime.UtcNow

            };

            var dbName = "code-hub";


            //从指定库中写入数据,支持传入多个对象的集合

            var response = await clientDb.Client.WriteAsync(point_model, dbName);

        }

    }

}


总结

1、InfluxDB是个专业的时序数据库,通过时序库可帮助我们更高效的处理应用中的时序数据。

2、使用InfluxDB库时需先了解该库的一些特色功能,如数据保存策略、连续查询等。

3、通过“InfluxData.Net”类库可快速简便的帮助我们在ASP.NET Core2程序中实现对InfluxDB的读写操作。

相关文章:

  • AspNet Core下利用 app-metrics+Grafana + InfluxDB实现高大上的性能监控界面

  • .NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控

  • Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警

  • .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控

原文地址: https://www.cnblogs.com/Andre/p/9884051.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nature 新研究发布,GPT 驱动的机器人化学家能够自行设计和进行实验,这对科研意味着什么?

文章目录 前言揭秘Coscientist不到四分钟&#xff0c;设计并改进了程序能力越大&#xff0c;责任越大 前言 有消息称&#xff0c;AI 大模型 “化学家” 登 Nature 能够自制阿司匹林、对乙酰氨基酚、布洛芬&#xff0c;甚至连复杂的钯催化交叉偶联反应&#xff0c;也能完成。 …

SmartCode 常见问题

SmartCode 能干什么&#xff1f;SmartCode IDataSource -> IBuildTask -> IOutput > Build EverythingSmartCode的执行流是 数据源->构建任务->输出&#xff0c;也就是说应用场景非常广泛。从DB读取数据结构&#xff0c;最终生成整个解决方案代码生成器&#x…

全面支持开源,微软加速 Visual Studio 和 Azure DevOps 云升级

在 2018 微软技术暨生态大会&#xff08;Microsoft Tech Summit&#xff09;上&#xff0c;微软宣布围绕 Visual Studio 和 Visual Studio Code 开发平台提供一系列新功能与服务&#xff0c;并对 Azure DevOps 研发云进行整合升级&#xff0c;通过 Visual Studio 开发平台与微软…

HttpClient参观记:.net core 2.2 对HttpClient到底做了什么?

.net core 于 10月17日发布了 ASP.NET Core 2.2.0 -preview3&#xff0c;在这个版本中&#xff0c;我看到了一个很让我惊喜的新特性&#xff1a;HTTP Client Performance Improvements &#xff0c;而且在Linux上性能提升了60% !之前就一直苦于 HttpClient 的糟糕特性&#xff…

后缀数组(讲解)

子串&#xff1a;从原串中选取连续的一段&#xff0c;即子串 空串也是子串 后缀&#xff1a;suf(k)为s(k…n)构成的子串 任何子串都是某个后缀的前缀 最长公共前缀 lcp(suf(i),suf(j)) 问题&#xff1a; 将所有后缀suf(1),suf(2),suf(N)按照字典序从小到大排序 暴力sort N2 …

2018 上海.NET职位围观报告

我一直说我是夏眠动物&#xff0c;如今已经11月份了&#xff0c;差不多也该活过来了&#xff0c;所以我决定写篇文章给各位.NET的支持者们和公司打打气&#xff0c;也算是为社区做点贡献吧。我最近主要干了两件事&#xff1a;让NPOI支持.NET Core&#xff0c;现已发布2.4版本。…

老张 .NetCore与Vue 框架学习

缘起作为一个.Net攻城狮已经4年有余了&#xff0c;一直不温不火&#xff0c;正好近来项目不是很忙&#xff0c;闲得无聊&#xff0c;搞一搞新技术&#xff0c;一方面是打发无聊的时间&#xff0c;一方面也是督促自己该学习辣&#xff01;身边的大神都转行的转行&#xff0c;加薪…

2018年10月28日宁波dotnet社区活动回顾及下次活动预告

离上次活动&#xff0c;有半年了&#xff0c;汗。之后尽量保证每月一次&#xff0c;以组织为主&#xff0c;多邀请嘉宾来分享。本次活动不足之处人手不足&#xff1a;由于活动组织事项受限于人手&#xff08;目前就我一个&#xff0c;这次活动前后我又应邀给大红鹰学院应届生介…

[JSOI2007]字符加密

题目描述 喜欢钻研问题的JS 同学&#xff0c;最近又迷上了对加密方法的思考。一天&#xff0c;他突然想出了一种他认为是终极的加密办法&#xff1a;把需要加密的信息排成一圈&#xff0c;显然&#xff0c;它们有很多种不同的读法。 例如‘JSOI07’&#xff0c;可以读作&…

BotSharp v0.2 发布, 支持微信智能回复

BotSharp v0.2 主要是针对微信的消息平台做整合&#xff0c;让.NET开发者可以轻松的搭建基于NLU自然语言理解的智能回复功能&#xff0c;BotSharp.Channel.Weixin模块负责和微信的公众号平台对接&#xff0c;接收消息通知&#xff0c;并能消息产生智能回复&#xff0c;回复的内…

P2852 [USACO06DEC]Milk Patterns G

题目描述 Farmer John has noticed that the quality of milk given by his cows varies from day to day. On further investigation, he discovered that although he can’t predict the quality of milk from one day to the next, there are some regular patterns in th…

c# 弹性和瞬态故障处理库Polly 学习

关于PollyPolly是一个基于.NET的弹性及瞬态故障处理库,允许开发人员以顺畅及线程安全的方式执行重试(Retry)、断路(Circuit Breaker)、超时(Timeout)、隔离(Bulkhead Isolation)和回退策略(Fallback ).Polly适用于 .NET 4.0, .NET 4.5 和.NET Standard 1.1。以上是官方文档对po…

TechEmpower最新一轮的性能测试出炉,ASP.NET Core依旧表现不俗

TechEmpower在10月30发布最新一轮&#xff08;Round 17&#xff09;针对“Web Framework Benchmarks”的性能测试报告&#xff0c;ASP.NET Core依旧表现不俗&#xff0c;在一些指标上甚至是碾压其他主流Web框架。为此我们做了一个简单的统计&#xff0c;看看ASP.NET Core和其他…

国内开源社区巨作AspectCore-Framework入门

前些天和张队(善友),lemon(浩洋),斌哥(项斌)等MVP大咖一块儿吃饭,大家聊到了lemon名下的AOP这个项目,我这小白听得一脸懵逼,后面回来做了一下功课,查了下资料,在lemon的Github上把这个项目学习了一下,收获颇丰,让我这个没有接触过AOP的Coder叹为观止,陷入了对lemon的深深崇拜,在…

HarmonyOs4.0基础(一)

目录 一、HarmonyOs系统定义 1.1系统的技术特性(三大特征) 1.1.1、硬件互助、资源共享 1.1.2、一次开发、多端部署(面向开发者) 1.1.3、统一OS&#xff0c;弹性部署(支持多种API&#xff1a;ArkTs、JS、C/C、Java) 1.2、系统的技术架构 二、Harmony OS项目搭建 2.1、(D…

swagger文档转换为WebApiClient声明式代码

1 swagger简介Swagger是一个规范且完整的框架&#xff0c;提供描述、生产、消费和可视化RESTful Web Service。其核心是使用json来规范描述RESTful接口&#xff0c;另外有提供UI来查看接口说明&#xff0c;并有一套生成不同语言的客户端调用代码生成器。1.1 对Api提供者自顶向下…

Musical Theme pku1743 (后缀数组)

Musical Theme(后缀数组) 题意&#xff1a; n个数&#xff0c;选取一段子序列&#xff0c;满足以下条件&#xff1a; 1.长度至少为5 2.在数列中其他位置出现过(允许转置) 3.与其他位置出现的不重叠 转置&#xff1a;将恒定的正或负值添加到子序列上 例如&#xff1a; n个数为…

KubeCon+CloudNativeCon首秀中国!

2018年11月13-15日&#xff0c;全球顶级的Kubernetes官方技术论坛KubeConCloudNativeCon将首次登陆中国&#xff0c;此次活动由云原生计算基金会&#xff08;CNCF&#xff09;主办&#xff0c;在上海跨国采购会展中心隆重举行。KubeCon CloudNativeConKubeConCloudNativeCon 是…

可持久化(一)

参考博客 可持久化数据结构&#xff1a;可以保留每一个历史版本&#xff0c;若所有版本都既可以访问又可以修改&#xff0c;成为完全可持久化&#xff08;可以回滚到某个历史版本&#xff09; 时间线&#xff1a; 可持久化线段树 可持久化下标线段树 题目&#xff1a; 模板…

ASP.NET Core中使用GraphQL - 第一章 Hello World

前言你是否已经厌倦了REST风格的API? 让我们来聊一下GraphQL。 GraphQL提供了一种声明式的方式从服务器拉取数据。你可以从GraphQL官网中了解到GraphQL的所有优点。在这一系列博客中&#xff0c;我将展示如何在ASP.NET Core中集成GraphQL, 并使用GraphQL作为你的API查询语言。…