1、什么是InfluxDB
InfluxDB是一个由InfluxData开发的开源时间序列型数据库。它由Go写成,着力于高性能地查询与存储时序型数据,可以按时间记录一些数据(监控数据、埋点统计数据等),然后制作图表做统计。InfluxDB被广泛应用于IoT物联网设备监控、业务运维监控、工业设备监控。
2、应用场景
- IOT设备监控:
随着物联网的兴起,越来越多的智能设备需要通过传感器等方式将实时状态数据上报到物联网网关,之后数据进入消息队列并流入时序数据库,对设备状态做实时监控报警以及数据分析。
- 互联网业务运维监控:
互联网业务将数据库日志、服务器日志、埋点日志等实时写入时序数据库,然后从时序数据产生业务报表、监控视图等,方便用户第一时间了解业务状态。
- 工业设备监控:
工业设备通过网关服务接入云系统,设备数据高效写入到时序数据库,然后构建设备实时监控大屏和报警服务,实现第一时间了解设备状态并发现问题。
3、与关系型数据库(MySQL)的基础概念对比:
概念 | MySQL | InfluxDB |
---|---|---|
数据库(同) | database | database |
表(不同) | table | measurement |
列(不同) | column | tag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键) |
- tag set:不同的每组tag key和tag value的集合;
- field set:每组field key和field value的集合;
- retention policy:数据存储策略(默认策略为autogen)InfluxDB没有删除数据操作,规定数据的保留时间达到清除数据的目的;
- series:共同retention policy,measurement和tag set的集合;
- 示例数据如下: 其中census是measurement,butterflies和honeybees是field key,location和scientist是tag key
name: census ———————————— time butterflies honeybees location scientist 2015-08-18T00:00:00Z 12 23 1 langstroth 2015-08-18T00:00:00Z 1 30 1 perpetua 2015-08-18T00:06:00Z 11 28 1 langstroth 2015-08-18T00:06:00Z 11 28 2 langstroth
示例中有三个tag set
4、注意点
- tag 只能为字符串类型
- field 类型无限制
- 不支持join
- 支持连续查询操作(汇总统计数据):CONTINUOUS QUERY
- 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
- 配合Grafana服务(数据展现的图像界面,将influxdb中的数据可视化)
5、常用InfluxQL
-- 查看所有的数据库 show databases; -- 使用特定的数据库 use database_name; -- 查看所有的measurement show measurements; -- 查询10条数据 select * from measurement_name limit 10; -- 数据中的时间字段默认显示的是一个纳秒时间戳,改成可读格式 precision rfc3339; -- 之后再查询,时间就是rfc3339标准格式 -- 或可以在连接数据库的时候,直接带该参数 influx -precision rfc3339 -- 查看一个measurement中所有的tag key show tag keys -- 查看一个measurement中所有的field key show field keys -- 查看一个measurement中所有的保存策略(可以有多个,一个标识为default) show retention policies;
- InfluxQL 数据查询官方文档(英文):https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/
- InfluxQL 数据库管理官方文档(英文):https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/
6、PHP 客户端:
- PHP 客户端:https://github.com/influxdata/influxdb-php
- PHP 客户端文档(英文):https://github.com/influxdata/influxdb-client-php
- PHP ORM客户端(中文):https://github.com/Yurunsoft/influxdb-orm