本文介绍 influxdb
的数据库(database)
、表(measurements)
的概念,增、删、改、查
操作。并结合关系型数据库MySQL
对比介绍。TDengine
可以作为 influxdb
的替代方案,它还支持 TTL 机制、数据压缩、流式计算等功能,并在性能上有很大的提升。
简介
InfluxDB是一个开源的时序数据库,使用Rust语言
开发,特别适合用于处理和分析资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。
influxdb 与 Mysql 对比
库、表比较
influxDB |
传统数据库中的概念 |
database |
数据库 |
measurement |
数据库中的表 |
points |
表里面的一行数据 |
Influxdb 数据的构成:Line protocol
# Format
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
# Syntax
measurementName,tagKey=tagValue fieldKey="fieldValue" 1465839830100400200
--------------- --------------- --------------------- -------------------
| | | |
Measurement Tag set Field set Timestamp
Point属性 |
传统数据库中的概念 |
timestamp |
每个数据记录时间,是数据库中的主索引(会自动生成) |
fields |
各种记录值(没有索引的属性)也就是记录的值:温度, 湿度 |
tags |
各种有索引的属性:地区,海拔 |
measurement
表,必须
tag_set
可索引数据,可选
field_set
数据,必须
timestamp
时间戳,可选,默认插入时刻的时间戳
point
数据点,时间序列中某个时刻的数据
series
时间序列,serial key 相同的数据集合
- 所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来
series key = measurement + tag + field key
- 具体可以通过
SHOW SERIES FROM "表名"
进行查询
TICK Stack 组成
图片摘自
- 数据存储组件 Influxdb:存储时间序列数据
- 收集、报告指标和事件的代理 Telegraf
- 用户界面组件:
Chronograf
- 数据处理平台
Kapacitor
:实时数据流处理引擎,并向 Chronograf 中创建和发送警报,官网
Kapacitor
是 InfluxDB 1.x
的本地数据处理引擎,是 InfluxDB 2.0
平台的一个集成组件
kapacitor 安装
wget https://dl.influxdata.com/kapacitor/releases/kapacitor_1.6.5-1_amd64.deb
sudo dpkg -i kapacitor_1.6.5-1_amd64.deb
sudo systemctl start kapacitor
Kapacitor task 列表:
kapacitor list tasks
Influx HA
influx 开源版本不支持HA,可以通过如下方式实现(针对 v1.x 版本,区别参考):
influx v2 HA 支持的不太好,可以尝试如下配置:
- Replicate data
- 仅支持 write
- 最大批量大小为 500 kB(通常为 250 至 500 line protocol 行)
应用 & 扩展