时序数据库在Spring Boot中的使用方法

除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB、LDAP这些存储的案例。接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在Spring Boot中的使用。

1、InfluxDB简介
什么是时序数据库?全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。虽然关系型数据库也可以存储基于时间序列的数据,但由于存储结构上的劣势,使得这些数据无法高效的实现高频存储和查询统计,因此就诞生了一种专门针对时间序列来做存储和优化的数据库,以满足更高的效率要求。

InfluxDB就是目前比较流行的开源时序数据库(官网地址:https://www.influxdata.com/),我们比较常见的使用场景就是一些与时间相关的高频的数据记录和统计需要,比如:监控数据的存储和查询。

在进行下面的动手环节之前,先了解一下InfluxDB中的几个重要名词:

database:数据库

measurement:类似于关系数据库中的table(表)

points:类似于关系数据库中的row(一行数据)

其中,一个Point由三个部分组成:

time:时间戳

fields:记录的值

tags:索引的属性

动手试试
在了解了什么是时序数据库以及InfluxDB一些基础概念之后,下面我们通过一个简单的定时上报监控数据的小案例,进一步理解InfluxDB的基础配置、数据组织和写入操作!

第一步:创建一个基础的Spring Boot项目(如果您还不会,可以参考这篇文章:快速入门1)

第二步:在pom.xml中引入influx的官方SDK

image.png





注意:这里因为Spring Boot 2.x版本的parent中有维护InfluxDB的SDK版本,所以不需要手工指明版本信息。如果使用的Spring Boot版本比较老,那么可能会缺少version信息,就需要手工写了。

第三步:配置要连接的influxdb信息

image.png
spring.influx.url=http://localhost:8086

spring.influx.user=admin

spring.influx.password=

三个属性分别代表:连接地址、用户名、密码。到这一步,基础配置就完成了。

注意:虽然没有spring data的支持,但spring boot 2.x版本中也实现了InfluxDB的自动化配置,所以只需要写好配置信息,就可以使用了。具体配置属性可以查看源码:org.springframework.boot.autoconfigure.influx.InfluxDbProperties。

第四步:创建定时任务,模拟上报数据,并写入InfluxDB

image.png

@Service

@AllArgsConstructor

@Slf4j

public class Monitor {

 

    private InfluxDB influxDB;

 

    @Scheduled(fixedRate = 5000)

    public void writeQPS() {

        // 模拟要上报的统计数据

        int count = (int) (Math.random() * 100);

 

        Point point = Point.measurement("ApiQPS")     // ApiQPS表

                .tag("url", "/hello")  // url字段

                .addField("count", count)        // 统计数据

                .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)  // 时间

                .build();

 

        // 往test库写数据

        influxDB.write("test", "autogen", point);

 

        log.info("上报统计数据:" + count);

    }

 

}

测试验证
第一步:启动InfluxDB,并通过命令行准备好要使用的数据库,主要涉及的命令如下;

进入InfluxDB:



$ influx

查询当前存在的数据库:


郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: