InfluxDB 使用手册

InfluxDB 使用手册

一、InfluxDB简介

1.InfluxDB是什么

InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

二、InfluxDB基础概念

1.Database

数据库名,在 InfluxDB 中可以创建多个数据库,不同数据库中的数据文件是隔离存放的,存放在磁盘上的不同目录。

2.Measurement

类似于Mysql中的表。

3.Point

类似于Mysql表中的一行数据。point的数据结构由时间戳(time)、标签(tags)、数据(fields)三部分组成,具体含义如下:

Point属性含义
time数据记录的时间,是主索引(自动生成)
tags各种有索引的属性
fields各种value值,没有索引的属性

Point属性 含义
time 数据记录的时间,是主索引(自动生成)
tags 各种有索引的属性
fields 各种value值,没有索引的属性
在InfluxDB中,tag是一个非常重要的部分,表名+tag一起作为数据库的索引,是“key-value”的形式。

4.Series

Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。InfluxDB在存储数据时,是根据series(即measurement与tag set的一个唯一组合)的哈希值来决定落在哪个Shard中的,哈希分桶数——即Shard的数目——在商用版中可以调整。这样就使得series相同的数据落在相同的Shard里,有利于提高查询效率。同时也会使一个Shard中可能包含多个measurement的数据(相对地,一个HBase Region只会包含一张表的数据),有利于负载均衡。

5.tag sets

tags 在 InfluxDB 中会按照字典序排序,不管是 tagkey 还是 tagvalue,只要不一致就分别属于两个 key,例如 host=server01,region=us-west 和 host=server02,region=us-west 就是两个不同的 tag set。

6.Retention policy

存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB 会定期清除过期的数据。

7.Shard Group

Shard Group是一个逻辑概念,顾名思义,它就是包含多个Shard的组合。Shard Group的重要特性是时间分区性,即每个Shard Group只会存储一段时间内的数据,各个Shard Group对应的时间区间不会交叉。时序数据库上的查询几乎全都会带有时间维度的过滤条件,Shard Group按时间区间的组织形式可以很高效地实现partition pruning,另外也方便下文所说的数据过期。

8.Shard

Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联,类似于HBase的Region和Kudu的Tablet,是数据编码、存储、写入和读取的交互单元。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 Cache、WAL、TSM File。具体解释如下:
TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。
WAL:预写日志,相当于HLog
Cache:写缓存,相当于MemStore
TSM File:数据存储文件,相当于HFile
TSI/TSI File:内存中的倒排索引及磁盘上的索引文件,方便查询
Compaction:主要进行两种操作,一种是 cache 数据达到阀值后,进行快照,生成一个新的 tsm 文件。另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,减少文件的数量,并且进行一些数据删除操作。 这些操作都在后台自动完成,一般每隔 1 秒会检查一次是否有需要压缩合并的数据。

InfluxDB存储体系图
InfluxDB存储体系图

                               InfluxDB存储体系图

三、InfluxDB基础操作

1.数据库命令

创建数据库

create database “db_name”

显示所有的数据库

show databases

删除数据库

drop database “db_name”

使用数据库

use db_name

显示该数据库中所有的表

show measurements

创建表,直接在插入数据的时候指定表名
//创建test表,host和monitor_name为tag,count为fields

insert test,host=127.0.0.1,monitor_name=test count=1

删除表

drop measurement “measurement_name”

2.新增数据命令

新增数据
//新增一条数据,measurement为add_test, tag为name,phone, field为user_id,email

insert add_test,name=YiHui,phone=110 user_id=20,email=“bangzewu@126.com”
在这里插入图片描述

                                          新增数据  

新增数据带上保存策略和时间戳
//前面写入数据没有指定保存策略,表示这条数据写入到默认的保存策略中;一个数据库可以有多个保存策略,一个measurement中也可以存不同的保存策略的数据,在写入数据时,如果需要指定保存策略,可以使用 insert into 保存策略 …
//当写入数据不指定时间时,会自动用当前时间来补齐,如果需要自己指定时间,再最后面添加上即可,注意时间为ns
//新增一条数据,保存策略为1_d,measurement为add_test, tag为name,phone, field为user_id,email,age,boy 时间戳为1564150279123000000

insert into “1_d” add_test,name=YiHui2,phone=911 user_id=23,email=“bangzewu@126.com”,age=18i,boy=true 1564150279123000000

在这里插入图片描述

                                   新增数据

新增数据语法:insert into measurement,tagKey=tagValue fieldKey=fieldValue timestamp
总结:
(1)insert + measurement + “,” + tag=value,tag=value + + field=value,field=value
(2)tag与tag之间用逗号分隔;field与field之间用逗号分隔
(3)tag与field之间用空格分隔field
(4)可以没有tag,但是不能没有
(5)根据前面的说明已经实测,可以
(6)tag都是string类型,不需要引号将value包裹
(7)field如果是string类型,需要加引号
(8)field有四种类型,int, float, string, boolean
在这里插入图片描述

                                     field类型
类型方式示例
Int数字iage=18i
Float数字user_id=21
Booleantrue/falseboy=true
String“” or ‘’email=“111@163.com”

删除数据
无删除数据,只能使用数据保存策略删除数据

3.查询数据命令

查询数据
//简单查询

SELECT * FROM device WHERE time > now() - 5m
在这里插入图片描述

                                     查询数据

//add_test表内1_d的保存策略数据查询

select * from “1_d”.add_test;

//查询条件,分类,排序,只取一条数据,时间本地化

SELECT * FROM %s WHERE time > now() - 10m group by sn ORDER BY time DESC limit 1 tz(‘Asia/Shanghai’)

//双引号和单引号意义不同,InfluxDB区分严格

SELECT * FROM %s WHERE time > now() - 3m AND sn = ‘test_topic_jmeter002’ ORDER BY time DESC LIMIT 1 tz(‘Asia/Shanghai’)

//offset 100 从第101条数据开始取 加上limit限制完成分页

SELECT * FROM %s WHERE sn = ‘%s’ AND time >= ‘%s’ AND time <= ‘%s’ ORDER BY time DESC LIMIT %d offset %d tz(‘Asia/Shanghai’)

//查询总条数

SELECT COUNT(字段) FROM %s WHERE sn = ‘%s’

连续查询(Continous Queries)
当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,influxdb提供了连续查询,可以做数据统计采样。

//查看数据库的Continous Queries

show continuous queries

//创建新的Continous Queries

create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
其中:
<cq_name>:连续查询名字;
<db_name>:数据库名字;
<sum(count)>:计算总和;
<table_name>:当前表名;
<new_table_name>:存新的数据的表名;
<30m>:时间间隔为30分钟

//删除Continous Queries

drop continous query cp_name on db_name

4.用户命令

显示用户

show users

创建用户

create user “username” with password ‘password’

创建管理员权限用户

create user “username” with password ‘password’ with all privileges

删除用户

drop user “username”

5.保留策略命令

查询保留策略

SHOW RETENTION POLICIES ON db_name

#新建策略
//在 mydb库添加了一个24小时的策略,名字叫做 def_new , duration为24小时,副本为1,若要直接定义为默认加上关键字DEFAULT

CREATE RETENTION POLICY “def_new” ON mydb DURATION 24h REPLICATION 1(DEFAULT)

新建保存策略语法:
CREATE RETENTION POLICY <retention_policy_name> ON <database_name>
DURATION
REPLICATION <replication_num>
[SHARD DURATION <shard_duration>] [DEFAULT]

其中:
<retention_policy_name>是保留策略的名称;
<database_name>是数据库的名称;
是数据的TTL;
<replication_num>是数据的副本数;
<shard_duration>是可选项,表示每个Shard Group的时间区间长度;
DEFAULT也是可选项,如果指定,表示将此策略顺便设为默认。
如果不指定shard duration的话,当duration小于2天时,shard duration默认为1小时;duration介于2天和6个月之间时,shard duration默认为1天;duration大于6个月时,shard duration默认为7天。
在这里插入图片描述

                                        系统默认分片时间

//默认的保存策略autogen中的duraiton=0,这里表示这条数据不会被删除。默认的永久保存策略中,有个 shardGroupDuration 参数,为7天,也就是说7天的数据放在一个Shard中,过了之后,新加一个Shard

修改策略

ALTER RETENTION POLICY def_new ON mydb DURATION 48h DEFAULT

删除策略

drop retention POLICY def_new ON mydb

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值