如何玩转时序数据库InfluxDB?一文带你搞定!

👨‍🎓作者:bug菌

✏️博客:CSDN、掘金、infoQ、51CTO等

🎉简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

...

✍️温馨提醒:本文字数:1999字, 阅读完需:约 5 分钟

🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升。

本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中...欢迎大家订阅持续学习。

js 复制代码
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

1. 前言🔥

前几期我们陆续讲解了Mysql、Redis、PostgreSQL、MongoDB等数据库集成及使用案例,接下来,bug菌继续给同学们介绍一种特殊的数据库,到底是什么数据库呢?它就是InfluxDB(时序数据库),那它究竟是什么数据库呢?闻所未闻?以及它在Spring Boot应用中又是如何被集成及使用的呢?它跟以往的数据库有何同异?...既然疑问如此之多,那就让我们带着这些问题,接着往下看咯。

那么,这将又会是干货满满的一期,全程无尿点不废话只抓重点教,具有非常好的学习效果,拿好小板凳准备就坐!希望学习的过程中大家认真听好好学,学习的途中有任何不清楚或疑问的地方皆可评论区留言或私信,bug菌将第一时间给予解惑,那么废话不多说,直接开整!Fighting!!

2.环境说明🔥

本地的开发环境:

  • 开发工具:IDEA 2021.3
  • JDK版本: JDK 1.8
  • Spring Boot版本:2.3.1 RELEASE
  • Maven版本:3.8.2

3. InfluxDB 概述及安装🔥

由于考虑到文章整体篇幅过长的问题,我这里把对InfluxDB的概述及安装另起了一篇文章进行专门介绍及教学,在学习此篇时建议同学们尽量去温习下对InfluxDB 数据库的知识《# Windows10如何搭建InfluxDB时序数据库并连接?手把手教学!》

4. InfluxDB数据库使用

对于关系型数据库,例如Mysql,它有它自己的sql语法规则,而 InfluxDB 的也有它的sql语法---InfluxQL。InfluxQL是一种类似于SQL的查询语言,用于与InfluxDB数据库进行交互。

如果你有使用关系数据库及SQL的基础,那么你可以非常快的掌握InfluxQL。但是,InfluxQL与SQL又不全一样,它缺乏SQL中的一些高级的语法,例如union,having、join等。

接下来,我们就来演示一下InfluxQL语言的使用方法。

4.1 连接InfluxDB服务

进入到InfluxDB安装目录后,选中文件全路径,输入cmd回车。会弹出小黑框。

然后在cmd小黑框中输入:influx 即可。

为此你就可以在该输入框中进行sql执行啦,接下来我带着大家进行学习并实践操作一下吧。

4.2 数据库操作

4.2.1 数据库创建

这里我们先来创建一个名为influx_demo的数据库,数据库名你们随意。

arduino 复制代码
//创建数据库语句
 CREATE DATABASE influx_demo

很明显是创建【influx_demo】数据库成功了。

4.2.2 查询所有数据库

查询显示所有的数据库,命令如下:

sql 复制代码
 SHOW DATABASES

4.2.3 数据库删除

sql 复制代码
DROP DATABASE influx_demo

对指定数据库进行删除,命令如下:

这里我们先执行删除命令再查询核实,数据库确实不存在了。

4.2.4 数据库使用

对指定的数据库进行使用,命令如下:

复制代码
USE influx_demo

4.3 表操作

4.3.1 创建表

由于InfluxDB中没有专门创建表的命令sql,当插入一条数据point至某B表时,此B表会被自动创建,并且表的格式、字段名、字段类型也由此条插入命令决定。

4.3.2 修改表

与创建表一样,InfluxDB中也没有修改表的命令sql,但当插入一条新数据point至某表B时,如果此point中的字段多于原B表的字段,会自动修改B表与此条插入数据的格式字段一致。

注意: 此种情况仅限于新插入的数据字段与表B字段的交集即表B的情况,如果新插入数据字段与表A完全不同则会插入失败从而表结构也不变。

4.3.3 查询表

查询指定数据库下的表列表,前提是需要使用那个库,命令如下:

sql 复制代码
SHOW MEASUREMENTS

演示如下:

4.3.4 删除表

删除表也是在使用某个数据库下进行操作的,删除表命令如下:

sql 复制代码
DROP MEASUREMENT "measurementName"

演示如下:删除名为"user"的表。

4.4 数据操作

4.4.1 插入数据

插入语句语法如下:

ini 复制代码
insert + measurement + "," + tag=value,tag=value + 空格 + field=value,field=value ;

tag与tag之间要用逗号[,]分隔;field与field之间用逗号[,]分隔; tag与field之间用空格[ ]分隔; tag都是string类型,不需要引号将value包裹; field如果是string类型,需要加引号;

我先来给大家举个新增数据的例子:

ini 复制代码
insert weather,altitude=1001,area=南 temperature=10,humidity=-4

具体可以看到数据已经被插入了。 且进行weather表查询了,也证实了weather表被自动创建了。

4.4.2 查询数据

查询语句格式与mysql 基本一致,使用select 关键字。

csharp 复制代码
select * from weather

演示如下:

4.4.3 修改数据

当 tags 和 timestamp 相同时数据会执行覆盖操作,相当于InfluxDB的更新操作。

现在我们来做个演示:我们针对第一条数据进行数据修改操作。

修改前:

修改后:

执行insert 语句:

ini 复制代码
insert weather,altitude=1001,area=南 humidity=-8,temperature=7 1691634804880043400

对比修改前,同条数据的humidity、temperature 内容已经被成功修改了。

案例完整执行代码如下:

sql 复制代码
> select * from weather
name: weather
time                altitude area humidity temperature
----                -------- ---- -------- -----------
1691634804880043400 1001     南    -5       10
1691635565148254500 300      东    9        30
>
> insert weather,altitude=1001,area=南 humidity=-8,temperature=7 1691634804880043400
> select * from weather
name: weather
time                altitude area humidity temperature
----                -------- ---- -------- -----------
1691634804880043400 1001     南    -8       7
1691635565148254500 300      东    9        30
>

4.4.4 删除数据

删除语法与Mysql数据库的删除语法一样,都是使用delete关键字。

演示如下:

根据时间删除: SQL如下:

sql 复制代码
delete from weather where time = 1691634804880043400;

sql具体执行如下:

根据网上众多资料提示可以根据 tags 进行删除,经过反复测试,删除失败了,并报err提示该字段不支持,执行语句如下:

sql 复制代码
 > delete from weather where altitude = 1001

 > delete from weather where area = 东

具体执行大家请看如下!

所以这个删除语法暂时是不可取的,请大家避坑。

4.5 InfluxDB用户管理

接下来给大家普及下InfluxDB数据库的用户管理相关知识,对于InfluxDB而言,默认管理员账号为admin,密码默认为为空,这里我们也可以添加用户和权限,如下我具体给同学们演示一下。

4.5.1 显示用户

显示当前所有的用户,语法如下:

shell 复制代码
> show users 

具体语句执行如下:

4.5.2 创建用户

如下演示下如何添加用户,具体语法如下:

sql 复制代码
> create user "test" with password '123456'

具体执行如下:

4.5.3 创建管理员权限用户

创建一个管理员用户并赋予所有权限,语法如下:

sql 复制代码
> create user "test1" with password '123456' with all privileges 

具体执行如下:

4.5.4 删除用户

如下演示如何删除用户,具体如下:

sql 复制代码
> drop user "test"

具体执行如下:

以上就是对InfluxDB数据库操作的一些基本总结,如若了解更多可以其复杂用法可以上其官网专门学习,这里就不具体深入介绍实践了。

... ...

ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看如下的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬。

「赠人玫瑰,手留余香」,咱们下期拜拜~~

5. 热文推荐💭

若想学习更多,可以参考这篇专栏总结《2023最新首发,全网最全 Spring Boot 学习宝典(附思维导图)》本专栏致力打造最硬核 Spring Boot 进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中。欢迎大家订阅持续学习。

在入门及进阶之途,我必助你一臂之力,系统性学习,从入门到精通,带你不走弯路,直奔终点;投资自己,永远性价比最高,都这么说了,你还不赶紧来学??

本文涉及所有源代码,均已上传至github开源,供同学们一对一参考 GitHub传送门

同时,原创开源不易,欢迎给个star🌟,想体验下被🌟的感jio,非常感谢❗

6. 文末💭

我是bug菌,CSDN | 阿里云 | 华为云 | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

相关推荐
用户21411832636026 分钟前
dify案例分享-零代码搞定 DIFY 插件开发:小白也能上手的文生图插件实战
后端
计算机程序员小杨17 分钟前
计算机专业的你懂的:大数据毕设就选贵州茅台股票分析系统准没错|计算机毕业设计|数据可视化|数据分析
java·大数据
y1y1z20 分钟前
EasyExcel篇
java·excel
DokiDoki之父40 分钟前
多线程—飞机大战排行榜功能(2.0版本)
android·java·开发语言
高山上有一只小老虎1 小时前
走方格的方案数
java·算法
whatever who cares1 小时前
Java 中表示数据集的常用集合类
java·开发语言
石小石Orz1 小时前
效率提升一倍!谈谈我的高效开发工具链
前端·后端·trae
JavaArchJourney1 小时前
TreeMap 源码分析
java
孟永峰_Java1 小时前
凌晨线上崩盘:NoClassDefFoundError血案纪实!日志里这行「小字」才是救世主
后端·代码规范
whitepure2 小时前
万字详解Java中的IO及序列化
java·后端