InfluxDB初探

作者: 叮咣铛 | 来源:发表于2019-07-01 22:04 被阅读0次

公司IOT业务涉及一个查询 终端过去两天上报数据曲线
数据量:单日新增460w
查询曲线时特别卡

这个问题本质上是

海量数据的存储和查询问题

特点是写入的数据不需要修改,和日志非常像

时序数据库InfluxDB进入视线

经过两天的折腾,基本把InfluxDB官方文档全撸了...
https://docs.influxdata.com/influxdb/v1.7/about_the_project/

测试结果如下:

Mac盒子OSX10.12  InfluxDB1.7

2019-06-01 ~ 2019-06-04
4天多一点的数据(本来计划导一个月,周末机器断电了)
18692759  --> 1800万条记录
占磁盘空间 160M +50M索引  ---》210M左右
查询单个设备 5天内 数据点值
LZYZX00009 
耗时 494毫秒(MySql 需要21s)
迁移成本:

初步思路

1,历史数据(昨天及之前一个月内)
  从MySql 导出到InfluxDB
  写个定时任务,每天晚21:00导出前一天整天数据到InfluxDB
  
2,开发一个模块 ,提供Rest api接口,
    查询某个设备,指定时间段内的数据点值

what:

时序数据库
why:

天生适合IOT

where:

            配合Grafana 搭建很好的监控平台

InfluxDB +Grafana 搭建监控平台

借用别人的

优点:

支持基本sql
Retention policy :数据存活时间设置,过期自动清除、
down-sampling : 取样    非常适合IOT设备 数据压缩

占用空间小(实测 1600w条数据 5字段 time 1个tag 2个 value2个 
InfluxDB1.7 osx系统 data + meta等共计 200M)

接口简单  安装后直接http访问  开发可用client api

上手容易

java client 库

缺点:

不适合需要频繁修改的数据
OSS社区免费版 仅支持一个node ,即不支持冗余容灾(需要自己另外做处理,定期备份啥的)

槽点:

1,存活时间 不是依赖于数据插入时的时间,而是time字段的时间

比如 :
retention policy 设置 1天
 你2019-06-29 12:00:00 插入一条记录   

time值 2019-06-28 12:00:00
基本插入就没了.....

因为他是以插入的time值来推算的过期清理时间

2,有些概念比较绕
    比如 Series, Group duration
3,管理工具远程操作 http不方便,是这样的格式:
      curl -G 'http://192.168.1.138:8086/query?db=testdb&pretty=true' --data-urlencode 'q=SELECT * FROM "mymeas"'

  所以推荐个工具:Time Series Admin

参考

https://dzone.com/articles/simplifying-influxdb-shards-and-retention-policies

https://stackshare.io/influxdb
https://docs.influxdata.com/influxdb/v1.7/tools/api/
https://www.influxdata.com/blog/influxdb-shards-retention-policies/

https://dzone.com/articles/influxdb-internals-101-part-one?fromrel=true

https://blog.codeship.com/a-deep-dive-into-influxdb/

Hardware sizing guidelines

https://docs.influxdata.com/influxdb/v1.7/guides/hardware_sizing/

https://medium.com/cobe-io/memory-adventures-with-influxdb-28b8157aebe8

http://hbasefly.com/2018/03/27/timeseries-database-6/

相关文章

网友评论

    本文标题:InfluxDB初探

    本文链接:https://www.haomeiwen.com/subject/pgxocctx.html