本文介绍 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 行)
应用 & 扩展