认识Influxdb时序数据库及Influxdb基础命令操作
阅读原文时间:2022年03月26日阅读:1

认识Influxdb时序数据库及Influxdb基础命令操作

  • Influxdb是一个用于存储时间序列,事件和指标的开源数据库,由Go语言编写而成,无需外部依赖。
  • 什么是时间序列数据库?就是基于时间存储的数据,数据格式里包含Timestamp字段的数据,即每一条数据中都会有一个时间存储字段。

  Influxdb(时序数据库)主要的应用场景有以下几种:

  1. 很多物联网数据都通过InfluxDB存储,分析与展示。如:智慧物联网监控分析系统,传统石油化工、采矿以及制造企业设备数据采集与分析,医疗数据采集与分析,车联网,智慧交通等。
  2. InfluxDB同时还应用于日志存储、监控数据统计和分析。如:各种服务、软件以及系统监控数据采集、分析与报警,金融数据采集与分析等。记录每毫秒服务器以及软件服务的使用情况,用于后期大数据分析,机器学习,实现预测、预警、服务提升优化等。
  3. 实时大数据量的存储以及快速查询,定时归集指定时间的数据,用于更大时间范围监控数据的展现。

  Influxdb的特性:

  1. 时间序列数据编写的自定义高性能数据存储。TSM引擎允许高摄取速度和数据压缩。
  2. 内置HTTP接口,使用方便,简单,高性能的写入和查询HTTP API
  3. 数据可以打标记,标签允许对系列进行索引以实现快速有效的查询
  4. 类SQL的查询语句,可轻松查询聚合数据
  5. 安装管理很简单,并且读写数据很高效
  6. 能够实时查询,数据在写入时被索引后就能够被立即查出
  7. 完全用 Go 语言编写。 它编译成单个二进制文件,没有外部依赖项

概念

InfluxDB

MySQL

数据库(同)

 database

 database

 表(不同)

 table

measurement 

 列(不同 )

 column

tag (带索引的,非必须)、field(不带索引)、timestemp(唯一主键)

  • database: 数据库名,在 InfluxDB 中可以创建多个数据库,不同数据库中的数据文件是隔离存放的,存放在磁盘上的不同目录。
  • retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB 会定期清除过期的数据。
  • measurement: 测量指标名,例如 cpu_usage 表示 cpu 的使用率。
  • tag sets: tags 在 InfluxDB 中会按照字典序排序,不管是 tagk 还是 tagv,只要不一致就分别属于两个 key,例如 host=server01,region=us-west 和 host=server02,region=us-west 就是两个不同的 tag set。
  • field name: 例如上面数据中的 value 就是 fieldName,InfluxDB 中支持一条数据中插入多个 fieldName,这其实是一个语法上的优化,在实际的底层存储中,是当作多条数据来存储。
  • timestamp: 每一条数据都需要指定一个时间戳,在 TSM 存储引擎中会特殊对待,以为了优化后续的查询操作。

说明:

  1. Point:Point由时间戳(time)、数据(field)、标签(tags)组成。相当于传统数据库里的一行数据;
  2. tag set:不同的每组tag key和tag value的集合;
  3. field set:每组field key和field value的集合,列不需要手动创建,加入数据会自动创建;
  4. Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起;
  5. Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file;
  • 这里使用docker搭建快速入门,命令如下:

docker run -d -p 8086:8086 --name myinfluxdb influxdb

  • 也可以使用docker-compose.yml,便于后期管理,与其他容器结合使用:

version: '3'
services:
influxdb:
image: influxdb
restart: always
tty: true
container_name: influxdb
ports:
- 8086:8086

  1. 进入上述创建的myinfluxdb容器,docker exec -it myinfluxdb bash
  2. 输入influx,即进入Influxdb交互式界面:

p.p1 { margin: 0; font: 16px "Andale Mono"; color: rgba(0, 238, 0, 1); background-color: rgba(0, 0, 0, 0.9) }
span.s1 { font-variant-ligatures: no-common-ligatures }

root@0aba3a348938:/# influx

Connected to http://localhost:8086 version 1.8.0

InfluxDB shell version: 1.8.0

>

  3.  常用命令及效果如下:

-- 进入数据库
use nginx_log;
-- 删除数据库
drop database nginx_log;
-- 显示数据库中所有表
SHOW MEASUREMENTS;
-- 创建表,直接在插入数据的时候指定表名,自动创建表及列
insert test,host=127.0.0.1,monitor_name=test count=1
-- 查询10条数据
select * from test limit 10;
-- 查看一个measurement中所有的tag key
show tag keys
-- 查看一个measurement中所有的field key
show field keys
-- 查看一个measurement中所有的保存策略(可以有多个,一个标识为default)
show retention policies;
-- 创建存储策略
create retention policy "rp_name" on "nginx_log" duration 3w replication 1 default
rp_name:策略名;
db_name:具体的数据库名;
3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
replication 1:副本个数,一般为1就可以了;
default:设置为默认策略
-- 修改存储策略
alter retention policy "rp_name" on "nginx_log" duration 30d default
-- 删除存储策略
drop retention policy "rp_name" on "nginx_log"
-- 删除表
drop measurement test

p.p1 { margin: 0; font: 16px "Andale Mono"; color: rgba(0, 238, 0, 1); background-color: rgba(0, 0, 0, 0.9) }
span.s1 { font-variant-ligatures: no-common-ligatures }

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章