InfluxDB

一、InfluxDB介紹

  InfluxDB是由InfluxData公司开发的开源时间序列数据库(TSDB)。InfluxDB使用Go语言编写,适用于各类时间序列数据的高效存储与检索。

时序数据

时序数据是一组按照时间维度索引的数据。时序数据在日常生活中随处可见,比如每个整点的温度、湿度等天气数据,每分钟的股票价格数据等。我们常用曲线图、柱状图等形式去展现时序数据,也就是我们常常听到的“数据可视化”。

时序数据库是一种非关系型数据库,以时间作为数据主键,专门用来存储时序数据。

时序数据库的特点

  • 高压缩比:由于数据每分每秒都在变化,海量的时序数据往往体量巨大,占用大量硬件资源,所以需要优化数据压缩算法提高数据压缩比。

  • 高并发写入:时序数据库采用持续高并发写入数据,无更新的方式,对于时间相同的重复的数据,只保留一份。

  • 低延时、高并发查询:通过索引降低查询延时,通过缓存等技术提高数据并发能力。

InfluxDB特性

  • 专为时间序列数据编写的定制高性能数据存储。TSM引擎可实现高提取速度和数据压缩

  • 完全用Go编写。它可以编译为一个没有外部依赖项的二进制文件

  • 简单,高性能的写入和查询HTTP API

  • 插件支持其他数据协议,例如Graphite,collected和OpenTSDB

  • 类似于SQL的富有表现力的查询语言,旨在轻松查询聚合数据

  • 标签允许对系列进行索引,以进行快速有效的查询

  • 保留策略可以有效地自动过期数据

  • 连续查询会自动计算聚合数据,从而使频繁查询更加有效

二、InfluxDB安装(以centOS为例)

1、下载rpm包

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.4.x86_64.rpm

2、使用yum安装

yum localinstall influxdb-1.8.4.x86_64.rpm

3、启动

systemctl start influxdb

4、设置开机自启动

systemctl enable influxdb

5、进入CLI(命令行界面)

在命令行输入命令influx即可启动CLI,并自动连接到本地InfluxDB实例。

6、创建用户及密码

show users // 查看所有用户,默认没有
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES // 创建root用户,密码'123456',并设置为管理员权限

7、使用用户名密码登录influxdb

influx -username 'root' -password '123456'

三、InfluxDB名词解释

database:数据库,同Mysql等关系型数据库中的“数据库Database”

measurement:数据表,相当于关系型数据库中的“表Table”

point:数据点,表示单条数据记录,相当于关系型数据库中的“一行数据”

Point

Point由时间(time)、数据(field)、标签(tags)三类字段组成。

time:代表每条数据的时间字段,是measurement中的数据主键,因此time字段具有索引属性。一条point只能有一个time。

field:代表各种数据的字段,例如气温、压力、股价等,field字段没有索引属性。一条point可以包括多个field。

tag:代表各类非数据字段,例如设备编码、地区、姓名等,tag字段有索引属性。一条point可以包括多个tag。

四、数据库操作命令

show databases // 显示数据库
    
create database shhnwangjian // 新建数据库
    
drop database shhnwangjian // 删除数据库
    
use shhnwangjian // 使用指定数据库
    
SHOW MEASUREMENTS // 显示所有表
    
insert disk_free,hostname=server01 value=442221834240 // 新建表
    
insert disk_free,hostname=server01 value=442221834240i 1435362189575692182 // 添加数据时,自己写入时间戳
    
drop measurement disk_free // 删除表

数据保存策略

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

show retention policies on "db_name" // 查看当前数据库Retention Policies
    
create retention policy "rp_name" on "db_name" duration 3w replication 1 default  
// 创建新的Retention Policies。
// rp_name:策略名;
// db_name:具体的数据库名;
// 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
// replication 1:副本个数,一般为1就可以了;
// default:设置为默认策略
    
alter retention policy "rp_name" on "db_name" duration 30d default // 修改Retention Policies
    
drop retention policy "rp_name" on "db_name" // 删除Retention Policies
 
 
posted @ 2022-10-26 09:29  拿着蜡笔找小新  阅读(14)  评论(0)    收藏  举报