influxdb TSDB初学

背景: 项目中设计工业数据监控,大量高并发写入,而且数据量极大(上千万),传统的数据库如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项目目录

还不行可能需要重启一下电脑(配置没起作用)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值