除了最常用的关系型数据库和缓存,我们之前已经介绍了如何在SpringBoot中配置和使用MongoDB和LDAP存储。接下来我们继续介绍另一个特殊的数据库:时序数据库InfluxDB在SpringBoot中的使用。InfluxDB简介什么是时序数据库?全称是时序数据库。时序数据库主要用于处理带有时间标签的数据(时间顺序的变化,即时间序列化)。带有时间标签的数据也称为时间序列数据。时间序列数据主要由电力行业、化工行业等各类实时监测、检测、分析设备采集生成,这些行业数据的典型特征是:生成频率快(每个监测点可生成多个条数据),严重依赖于采集时间(每条数据需要唯一的时间),测点信息量大(传统实时监测系统有数万个监测点,监测点每秒产生数据,每天产生数十G数据)。关系型数据库虽然也可以按照时间序列存储数据,但是由于存储结构的劣势,这些数据无法高效存储和查询统计。因此,一种专门针对时间序列的存储和优化方法诞生了。数据库,以满足更高的效率要求。--参考:百度百科:时序数据库InfluxDB是目前流行的开源时序数据库(官网地址:https://www.influxdata.com/),我们比较常见的使用场景是一些与时间相关的高频数据记录和统计需求,如:监控数据的存储和查询。在进行下面的动手操作之前,先了解一下InfluxDB中的几个重要术语:database:数据库度量:类似于关系数据库中的table(表)points:类似于关系数据库中的row(一行数据).其中,一个Point由三部分组成:时间:时间戳字段:记录的值标签:索引属性自己试试看了解了什么是时序数据库和InfluxDB的一些基本概念后,我们用一个简单的例程来上报监控数据在定期Case,进一步了解InfluxDB的基本配置、数据组织和写操作!第一步:创建一个基础的SpringBoot工程(如果你还不会,可以参考这篇文章:快速入门一)第二步:在pom.xml中引入influx官方SDKorg。influxdbinfluxdb-java注意:这里因为SpringBoot2.x版本parent维护了InfluxDBSDK版本,所以不需要手动指定版本信息。如果使用的SpringBoot版本比较老,可能会缺少版本信息,需要手动编写。第三步:配置要连接的influxdb信息spring.influx.url=http://localhost:8086spring.influx.user=adminspring.influx.password=三个属性分别代表:连接地址、用户名、密码。至此,基本配置完成。注意:虽然不支持springdata,但是在springboot2.x版本中也实现了InfluxDB的自动配置,所以只需要写好配置信息就可以使用了。具体配置属性可以查看源码:org.springframework.boot.autoconfigure.influx.InfluxDbProperties。第四步:创建定时任务,模拟上报数据,写入InfluxDB@Service@AllArgsConstructor@Slf4jpublicclassMonitor{privateInfluxDBinfluxDB;@Scheduled(fixedRate=5000)publicvoidwriteQPS(){//模拟要上报的统计数据intcount=(int)(Math.random()*100);Pointpoint=Point.measurement("ApiQPS")//ApiQPStable.tag("url","/hello")//urlfield.addField("count",count)//统计数据.time(System.currentTimeMillis(),TimeUnit.MILLISECONDS)//Time.build();//向测试库写入数据influxDB.write("test","autogen",point);log.info("上报统计数据:"+count);}}测试验证第一步:启动InfluxDB,通过命令行准备要使用的数据库。涉及的主要命令如下;输入InfluxDB:$influx查询当前存在的数据库:>showdatabases创建数据库(注意数据库名称与上面Java代码中write的第一个参数一致):>createdatabase"test"第二步:启动Spring启动应用程序,在定时任务的作用下,我们会看到类似如下的日志:2021-08-0301:52:47.732INFO94110---[main]c.d.chapter63.Chapter63Application:StartedChapter63Applicationin2.326秒(JVM运行3.027)2021-08-0301:52:47.764INFO94110---[scheduling-1]com.didispace.chapter63.Monitor:Reportstatistics:252021-08-0301:52:52.736INFO94110---[scheduling-1]com.didispace.chapter63.Monitor:报告统计信息:302021-08-0301:52:57.737INFO94110---[scheduling-1]com.didispace.chapter63.Monitor:报告统计信息:382021-08-0301:53:02.739INFO94110---[调度-1]com.didispace.chapter63.Monitor:报告统计:512021-08-0301:53:07.739INFO94110----[调度-1]com.didispace.chapter63.Monitor:上报统计数据:31Step3:使用命令查看InfluxDB中是否已经存在数据>select*fromApiQPSorderbytimedesc;name:ApiQPStimecounturl------------162792678773000000031/hello162792678273000000051/hello162792677772900000038/hello162792677272700000030/hello162792626279267772900000038/hello162792677272700000030/hello16279262627926777729000000好了,今天的教程就到这里了,记得自己动手试试!记得关注我,学习不迷路!后面我们会继续介绍,如何展示这些时序数据!本系列教程《Spring Boot 2.x基础教程》直接点击!,欢迎收藏转发!如果你在学习过程中遇到困难?大家可以加入我们的Spring技术交流群,参与交流讨论,更好的学习进步!代码示例本文的完整工程可以在以下仓库的chapter6-3目录查看:Github:https://github.com/dyc87112/SpringBoot-Learning/Gitee:https://gitee.com/didispace/SpringBoot-Learning/如果您觉得这篇文章不错,欢迎Star支持,您的关注是我坚持的动力!欢迎关注我的公众号:程序员DD,分享别处看不到的知识和思考