欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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。
    Influxdb基础概念及常用命令

与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 结尾。

操作方式

  1. 客户端命令行方式

  2. HTTP API接口

  3. 各语言API库

  4. 基于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