一、InfluxDB简要介绍
InfluxDB是一款Go语言实现的开源时序性数据库,它不需要外部依赖。其设计目的主要用于系统的水平式以及分布式扩展,它对于数据的实时分析,历史数据展示等都提供了良好的支持。插句题外话,学习一项新技术的最好办法就是阅读它的官方文档,大部分的技术官方文档都是英文的,读起来稍微有点费劲,但是只要坚持下去,配上谷歌翻译,并没有想象中那么难。因为官方文档应该是作者对于该技术最原汁原味的理解和叙述,其他翻译的有可能会丢失部分原作者的技术理解。废话不多说,InfluxDB提供的主要特性如下:
1.内置HTTP API,所以我们不需要另外写服务端的代码来启动和运行它;
2.它可以为每条数据打上标签,实现更加方便快捷的数据查询;
3.提供类SQL的查询语句,可以实现几乎无成本的SQL学习迁移,方便开发者快速掌握;
4.数据库安装和管理更加简便,快速的数据保存以及读取;
5.它的目的是实时的数据查询响应,当数据进入数据库时将被索引,同时数据的查询结果要在100ms内进行返回。
二、InfluxDB相关概念
|database|field key|field set| |:–😐 :–😐:–: | |field value|measurement|point| |retention policy|series|tag key| |tag set|tag value| timestamp| 下面将对这些概念进行说明。
| time | cpu | usage_idle | host |
| — | :-: | --: | --: |
| 1526035302000000000 | cpu-total | 43.952299828963156 | OS1 |
| 1526035302000000000 | cpu0 | 0 | OS1 |
| 1526035302000000000 | cpu1 | 89.58333333455441 | OS1 |
| 1526035302000000000 | cpu-total | 46.952299823520136 | OS2 |
| 1526035302000000000 | cpu0 | 0 | OS2 |
| 1526035302000000000 | cpu1 | 91.58333339451375 | OS2 |
influxDB是时序性数据库,所以每一条数据都带有时间戳。
服务器cpu数据存在influxDB中的cpu表中,其中cpu
为cpu
名称,host
为机器名称,time
是数据库中每条数据都会自带的时间戳,是fluxDB区别于其他数据库的重要特征之一。usage_idle
,cpu
被称为fields
,它是由对应的field key
以及field value
组成。由于influxDB是时序性数据库,所以每个field value都有对应的时间戳与其进行对应。由上表可知,每组field key
和field value
的集合组成了field set
。
field
是influxDB中不可获取的数据组成部分,每一条存放在数据库中的数据都包含field
。但是field
本身是没有索引的,如果以field为条件进行数据查询的时候,数据库会遍历库中所有的field直到匹配到对应的field
,这样的查询是很耗费资源的。所以尽量在索引上去执行数据操作。
以上数据库表中host
就相当于tag,因为它是带有索引属性的,通过它作为条件可以进行数据的筛选,意味着通过它来进行查询操作效率更高。
InfluxDB中measurement
作为tag,fields和time列的容器,measurement
的名字是存储在相关fields
数据的描述。 measurement的名字是字符串,相对于传统关系型数据库,influxDB中的measurement
就相当于mysql中的table
。
在样本数据中,measurement census
中的所有内容都属于autogen
的retention policy
。 InfluxDB自动创建该存储策略, 它具有无限的持续时间和复制因子设置为1。
现在我们已经熟悉了measurement
,tag set
和retention policy
,那么现在是讨论series
的时候了。 在InfluxDB中,series
是共同retention policy
,measurement
和tag set
的集合。
| series编号 | retention policy | measurement | tag set |
| — | :-: | --: | --: |
| series 1 | autogen | cpu | host=OS1 |
最后,point
就是具有相同timestam
p的相同series
的field
集合。
三、InfluxDB数据查询
1.linux环境相关操作
(1) 在linux环境安装好influxDB之后,进入root权限下输入influx,linux显示如下:
(2) 输入use telegraf_1,表示使用telegraf_1这个数据库。
(3) 输入show measurements,展示该库中存在的表有哪些。后面就可以像普通sql查询一样,使用select语句进行查询的了,但是注意在查询语句后面加上limit做限制,不然会查询出来时间段内所有的数据。
SpringBoot工程中需要使用对应的Java Client library来进行相关的数据库操作。在pom文件中引入以下依赖,由于本文需要使用sql的参数化查询功能,所以使用的client版本为2.10。
org.influxdb
influxdb-java
2.10
以下代码为influxDb构建方法,代码中附有部分注释方便读者理解。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总结
至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:
- 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
- 项目经历:只写明星项目,描述遵循 STAR 法则;
- 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;
以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频
为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频
[外链图片转存中…(img-DY7i0qvI-1711993983100)]
[外链图片转存中…(img-0ssUpyWD-1711993983100)]
[外链图片转存中…(img-cm66nELl-1711993983101)]