背景: 项目中设计工业数据监控,大量高并发写入,而且数据量极大(上千万),传统的数据库如MySQL根本hold不住,此时,找到influxdb这个救星
简介: InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
特点:
- 时间序列数据:从定义上来说,就是一串按时间维度索引的数据。
- 时序数据库(TSDB)特点: 持续高并发写入、无更新;
- 数据压缩存储;
- 低查询延时
- 常见 TSDB:influxdb、opentsdb、timeScaladb、Druid 等。
1. 安装influxdb
influxdb官网上下载如下文件
解压influxdb-1.7.10_windows_amd64之后
influxdb.conf 配置文件修改一下,地址改成自己的
双击influxd.exe之后再双击influx.exe
上面的命令窗口就可以操作influxdb了
不过他也是有web可视化操作页面的
解压kapacitor-1.5.4_windows_amd64,双击chronograf-v1.db,输入http://localhost:8888
influxdb启动进行操作是不需要验证账号密码的,如有需要可在influxdb.conf中配置
auth-enabled = true
2接下来我们用命令来操作一下influxdb
// 展示influxdb中所有数据库
show databases;
// 切换到数据库testdb
use testdb;
// 查看testdb中的measurement
show measurements;
// 查看fnl中的数据
select * from fbl;
// 我们插入一条数据
insert fbl,name=hua sex="man";
在查询就会多出来一条
注意的是:插入measurement如果不存在,influxdb会自动创建一个measurement
3. influxdb中的策略
创建数据库或者measurement时可以指定数据保存策略RetentionPolicy,当然,measurement中每一条数据也可以有不同的保存策略,这个保存策略是influxdb定时清理数据的关键
目的: InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。
// 查询数据库中有哪些策略
show retention policies on testdb
- name–名称,此示例名称为 autogen
- duration–持续时间,0代表无限制
- shardGroupDuration–shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
- replicaN–全称是REPLICATION,副本个数
- default–是否是默认策略
// 在testdb数据库中新建策略
create retention policy "myrp_two" on testdb duration 24h replication 1
// 修改策略
alter retention policy myrp_two on testdb duration 5d default
注意:一个库中只允许一个默认策略,设置这个上一个默认的就会变成false,如果有自己的策略查询时measurement前带策略名,表示查这个策略的measurement,否则没有值
// 删除策略
drop retention policy myrp_two on testdb
马上写springBoot整合influxdb
补充一个语法知识:influxdb数据库字符串类型使用双引号查不出数据,单引号可以。
插入数据时,字符串类型要是用双引号,单引号报错。
如果自己创建了策略,即使default为true,在insert时也要指定策略,否则查不到
另外influxdb还有时区的问题,他默认使用的是UTC时区,和中国差了8小时
// 查询语句最后一行加tz('时区')可以转换成某个地方的时间
select * from mymeasurement where time >='2018-07-16T10:00:00Z' tz('Asia/Shanghai')
但是windows系统没有装go环境的小伙伴会报找不到该时区的错误
所以要装go开发环境
如果装开发环境使用msi模式的话,环境变量是直接配置好的,不过也不能什么都不配置,不然influxdb还是报错。需要添加GOROOT和GOPATH两个环境变量
GOROOT:go环境的安装目录
GOPATH:你的go项目目录
还不行可能需要重启一下电脑(配置没起作用)