InfluxDB概念和基本操作

InfluxDB基本概念

数据格式

在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value)。格式如下:

cpu_usage,host=server01,region=hn-zhengzhou value=0.64 1434055562000000000

虚拟的 key 包括以下几个部分: database, retention policy, measurement, tag sets, field name, timestamp。

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

Point

points相当于关系数据库中的行,Point由时间戳(time)、数据(field)、标签(tags)组成。

Series

Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

Shard

Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。

目录与文件结构

InfluxDB 的数据存储主要有三个目录。默认情况下是 meta, wal 以及 data 三个目录。meta 用于存储数据库的一些元数据,meta 目录下有一个 meta.db 文件。wal 目录存放预写日志文件,以 .wal 结尾。data 目录存放实际存储的数据文件,以 .tsm 结尾。

InfluxDB基本操作

InfluxDB提供多种操作方式:

  • 客户端命令行方式
  • HTTP API接口
  • 各语言API库
  • 基于WEB管理页面操作

客户端命令行方式操作

进入命令行
influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4

显示数据库

show databases;

新建数据库

create database cpu_info;

使用制定数据库

use cpu_info;

删除数据库

drop database cpu_info;

在InfluxDB当中,并没有表(table)这个概念,取而代之的是MEASUREMENTS,MEASUREMENTS的功能与传统数据库中的表一致,因此我们也可以将MEASUREMENTS称为InfluxDB中的表

显示所有表

show measurements

新建表

InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。

insert disk_free,hostname=server01 value=442221834240i

其中 disk_free 就是表名,hostname是索引(tag),value=xx是记录值(field),记录值可以有多个,系统自带追加时间戳。或者添加数据时,自己写入时间戳

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

删除表

drop measurement disk_free

数据保存策略(Retention Policies)

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。

查看当前数据库Retention Policies

show retention policies on cpu_info;
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

创建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default
  • rp_name:策略名;
  • db_name:具体的数据库名;
  • 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
  • replication 1:副本个数,一般为1就可以了;
  • default:设置为默认策略

修改Retention Policies

alter retention policy "rp_name" on "db_name" duration 30d default

删除Retention Policies

drop retention policy "rp_name" on "db_name"

连续查询(Continuous Queries)

InfluxDB的连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 SELECT 关键词和 GROUP BY time() 关键词。InfluxDB会将查询结果放在指定的数据表中。

使用连续查询是最优的降低采样率的方式,连续查询和存储策略搭配使用将会大大降低InfluxDB的系统占用量。而且使用连续查询后,数据会存放到指定的数据表中,这样就为以后统计不同精度的数据提供了方便。

新建连续查询语法如下:

CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
[RESAMPLE [EVERY <interval>] [FOR <interval>]]
BEGIN SELECT <function>(<stuff>)[,<function>(<stuff>)] INTO <different_measurement>
FROM <current_measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<stuff>]
END

样例:

CREATE CONTINUOUS QUERY wj_30m ON shhnwangjian BEGIN SELECT mean(connected_clients), MEDIAN(connected_clients), MAX(connected_clients), MIN(connected_clients) INTO redis_clients_30m FROM redis_clients GROUP BY ip,port,time(30m) END

在shhnwangjian库中新建了一个名为 wj_30m 的连续查询,每三十分钟取一个connected_clients字段的平均值、中位值、最大值、最小值 redis_clients_30m 表中。使用的数据保留策略都是 default。

显示所有已存在的连续查询

SHOW CONTINUOUS QUERIES

删除Continuous Queries

DROP CONTINUOUS QUERY <cq_name> ON <database_name>

原文地址:https://www.cnblogs.com/senlinyang/p/8580877.html

时间: 2024-08-28 19:44:00

InfluxDB概念和基本操作的相关文章

SAP 锁对象 基本概念与基本操作 SE11

  一.SAP为什么要设置锁:     1,保持数据的一致性     如果几个用户要访问同样的资源,需要找到一种同步访问的方法去保持数据的一致性.比如说,在航班预订系统中,需要检查还有没有空座位,当检查的时候,你不想别人修改重要的数据(空座位的数量).   2,仅仅用Database锁是不够的     数据库管理系统物理锁定了要修改的行记录,其他用户要等到数据库锁释放才能访问这个记录.     在SAP系统中,当一个新屏幕显示的时候会释放掉Database锁,因为屏幕的改变会触发一个隐式的DB

Linux程序设计学习笔记----多线程编程基础概念与基本操作

转载请注明出处,http://blog.csdn.net/suool/article/details/38542543,谢谢. 基本概念 线程和进程的对比 用户空间资源对比 每个进程在创建的时候都申请了新的内存空间以存储代码段\数据段\BSS段\堆\栈空间,并且这些的空间的初始化值是父进程空间的,父子进程在创建后不能互访资源. 而每个新创建的线程则仅仅申请了自己的栈,空间,与同进程的其他线程共享该进程的其他数据空间包括代码段\数据段\BSS段\堆以及打开的库,mmap映射的文件与共享的空间,使得

influxDB概念

一.基本概念 1)database--数据库,这个同传统数据库的数据库概念. 2)measurement--数据表,在InfluxDB中,measurement即为表的作用,同传统数据库中的table作用一致. 二..与传统数据库中的名词做比较 influxDB中的名词 传统数据库中的概念 database 数据库 measurement 数据库中的表 points 表里面的一行数据 三.InfluxDB特有概念 1)tag--标签,在InfluxDB中,tag是一个非常重要的部分,表名+tag

docker核心概念及基本操作

概要 docker是一种linux容器技术.容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求.可简单理解为一种沙盒 .每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制.容器的创建和停止都十分快速,资源需求远远低于虚拟机. 好处 能高效地构建应用. 对于运维开发来说, 能快速的交付和部署 高效的资源利用 轻松的迁移扩展 简单的更新管理 与虚拟机的比较 docker与虚拟化 虚拟化是一种资源管理技术,是将计算机的各种实体资源

grafana+influxDB+telegraf的基本操作

安装的话我就不多说了,主要写下内部的一些操作.如何实现模板选择要监控的主机呢? 像左上角那样,选择监测主机后,下面的图形也会发生变化,这样有交互的操作下会更加利于我们的监控. 设置这样就可以了.show tag values from net(我监控网卡) with key="host"刚开始由于我对influxDB的使用命令不熟悉,像mysqlDB中的查看表格式之类的命令也不能用,所以选择了常数的设置方法,但是仅仅只适用于少量机器可以使用. 这样的话也是能达到效果的,自己琢磨肯定有走

数据库概念,安装,基本操作

数据库: 数据库就是存储数据的仓库(容器) 存储数据的方式: 1.变量 无法永久存储 2.文件处理 可以永久存储 文件处理存在的弊端: 1.文件处理速度慢 2.文件只能在自己的计算机上读写,无法被共享(局域网除外) 单台计算机的性能终归是有限的 1.升级硬件设备 提升幅度有限,垂直扩展 2.服务器集群,分布式 横向扩展 一旦把服务器拆分开后,数据就必须能够被不同计算机共享 必须通过网络,也就是socket 数据库软件的本质:就是一个基于socket(TCP)的c/s结构的程序 如果自己实现一个数

新的一天!昨日内容回顾+购物车系统的初步实现+字典的概念和基本操作

昨日内容回顾: 列表:增删改查 查找:切片问题 删除;   pop根据索引删除,删除的内容的值会返回 count 计数 extend 两个列表叠加,一次性追加多个值,a会变,b不会变 用c=a+b           a和b都不会发生变化 index  由内容找位置 a.sort() b=sorted(a)              实现对a的从左到右的排序 今日内容: 元组: (12,)只有一个元素也要加   "," a=(1,2,3,4) print(a[1]) 元组只读不能修改

哈希表Hash:概念与基本操作

什么是Hash Hash就像是一个桶排,那只不过是把各个元素的数值当做下标进行存储.其最常用的用途就是用来判重.但是,如何对字符串进行判重,不可能一个一个往前超,若n上万则显然不可行.我们可以选择进行Hash,将每一个字符串或者大数字进行一定的操作即可进行. 对大整数类型进行Hash 取模法 对于每一个大整数进行取模,即除以一个大质数(例如107,10007,1000007,1-奇数个0-7),这样就作为数组的下标进行存储了. 为什么要对一个大整数取模 emmmmmm......经众多数学家证明

nosql数据库之Redis概念及基本操作

一.概述 redis是一种nosql数据库(非关系型数据库),他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表)).相关参考文档:http://redisdoc.com/index.html Redis的持久化 Redis持久化会在磁盘上依赖两个文件(数据文件:rdb:日志文件:aof) redis实现