认识 InfluxDB
文档内容参考自:尚硅谷【官网】谷粉与老学员力挺的Java培训|大数据培训|前端培训 (atguigu.com)
{bilibili bvid="BV1xd4y1c73c" page="d740731ea9208d4c80166ef2d8c062c1"/}
InfluxDB 的使用场景
- InfluxDB 是一种时序数据库,时序数据库通常被用在监控场景,比如运维和 IOT(物 联网)领域。这类数据库旨在存储时序数据并实时处理它们。 比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 InfluxDB 中写 入一条数据。接着,我们写一个查询语句,查询过去 30 秒 CPU 的平均使用情况,然后让 这个查询语句也每隔 10 秒钟执行一次。最终,我们配置一条报警规则,如果查询语句的执 行结果>xxx,就立刻触发报警。 上述就是一个指标监控的场景,在 IOT 领域中,也有大量的指标需要我们监控。比如, 机械设备的轴承震动频率,农田的湿度温度等等
Influx与关系型数据库的对比
写入性能
- 关系型数据库也是支持时间戳的,也能够基于时间戳进行查询。但是,从我们的使用 场景出发,需要注意数据库的写入性能。通常,关系型数据库会采用 B+树数据结构,在数 据写入时,有可能会触发叶裂变,从而产生了对磁盘的随机读写,降低写入速度。 当前市面上的时序数据库通常都是采用 LSM Tree 的变种,顺序写磁盘来增强数据的写 入能力。网上有不少关于性能测试的文章,同学们可以自己去参考学习,通常时序数据库 都会保证在单点每秒数十万的写入能力
数据价值
- 我们之前说,时序数据库一般用于指标监控场景。这个场景的数据有一个非常明显的 特点就是冷热差别明显。通常,指标监控只会使用近期一段时间的数据,比如我只查询某 个设备最近 10 分钟的记录,10 分钟前的数据我就不再用了。那么这 10 分钟前的数据,对 我们来说就是冷数据,应该被压缩放到磁盘里去来节省空间。而热数据因为经常要用,数据库就应该让它留在内存里,等待查询。而市面上的时序数据库大都有类似的设计。
数据只写不改
- 就像是我们打开任务管理器,查看 CPU 的使用情况。我发现 CPU 占用率太高了,于 是杀死了一个进程,但 10 秒前的数据不会因为我关闭进程再发生改变了。 这是时序数据的一大特点。与之相应,时序数据库基本上是插入操作较多,而且还没有什么更新需求
Influx技术栈(TICK)
- T : Telegraf - 数据采集组件,收集&发送数据到 InfluxDB。
- I : InfluxDB - 存储数据&发送数据到 Chronograf。
- C : Chronograf - 总的用户界面,起到总的管理功能。
- K : Kapacitor - 后台处理报警信息。
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
本文链接:https://www.blog.ycisch.com/archives/725.html