Influxdb基础概念及常用命令
程序员文章站
2022-05-07 14:23:13
...
Influxdb
InfluxDB专为时间序列数据编写的定制高性能数据存储, TSM引擎可实现高摄取速度和数据压缩,类似于SQL的富有表现力的查询语言,旨在轻松查询聚合数据,完全用Go编写。它可以编译为一个没有外部依赖项的二进制文件。
常用命令
-- 查看所有的数据库
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;
基本概念及对照
- database:数据库,不同数据库中的数据文件是隔离存放的,存放在磁盘上的不同目录;
- measurement:数据库中的表;
- points:表里面的一行数据,point由时间戳(time)、数据(field)和标签(tags)组成;
- time:每条数据记录的时间,也是数据库自动生成的主索引;
- fields:各种记录的值;
- tags:各种有索引的属性;
- tag set:不同的每组tag key和tag value的集合;
- field set:每组field key和field value的集合;
- retention policy:数据存储策略(默认策略为autogen,数据保留时间为永久)InfluxDB没有删除数据操作,规定数据的保留时间达到清除数据的目的;
- series: Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。
- Shard: 与retention policy 相关联,每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。
- 组件:TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。
与Mysql对照
概念 | Mysql | Influxdb |
---|---|---|
数据库 | database | database |
表(不同) | table | measurement |
列(不同) | cloumn | tags |
注意点
* tag 只能为字符串类型
* field 类型无限制
* 不支持join
* 支持连续查询操作(汇总统计数据):CONTINUOUS QUERY
* 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
* 配合Grafana服务(数据展现的图像界面,将influxdb中的数据可视化)
目录与文件结构
InfluxDB 的数据存储主要有三个目录。默认情况下是 meta, wal 以及 data 三个目录。
- meta 用于存储数据库的一些元数据,meta 目录下有一个 meta.db 文件。
- wal 目录存放预写日志文件,以 .wal 结尾。
- data 目录存放实际存储的数据文件,以 .tsm 结尾。
操作方式
-
客户端命令行方式
-
HTTP API接口
-
各语言API库
-
基于WEB管理页面操作
策略相关
--策略相关
--查询策略
--可以通过如下语句查看数据库的现有策略:
show retention policies on telegraf
--新建策略
CREATE RETENTION POLICY "2_hours" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT
--通过上面的语句可以添加策略, 本例在telegraf库添加了一个2小时的策略, 名字叫做2_hours,duration为2小时, 副本为1, 设置为默认策略.因为名为default的策略不再是默认策略, 因此, 在查询使用default策略的表时要显示的加上策略名"defalut"
select * from "default".cpu limit 2
--修改策略
ALTER RETENTION POLICY "2_hours" ON "telegraf" DURATION 4h DEFAULT
--删除策略
drop retention POLICY "2_HOURS" ON "telegraf"
--说明:
--策略这个关键词"POLICY"在使用时应该大写,小写应该会出错.
--当一个表使用的策略不是默认策略时, 在进行操作时一定要显示的指定策略名称, 否则会出现错误.
参考资料:
1
上一篇: 时序数据库InfluxDB基本概念小结
下一篇: dubbo笔记——入门介绍