influxdb(一)

简介

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

其主要特色功能

1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
2)可度量性:你可以实时对大量数据进行计算
3)基于事件:它支持任意的事件数据

InfluxDB的主要特点

1)无结构(无模式):可以是任意数量的列
2)可拓展的
3)支持min, max, sum, count, mean, median 等一系列函数,方便统计
4)原生的HTTP支持,内置HTTP API
5)强大的类SQL语法
6)自带管理界面,方便使用

安装influxdb

官网下载地址: https://portal.influxdata.com/downloads

根据不同的系统下载不同的安装包安装,以下以centos7为例下载64位rpm包

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.0.x86_64.rpm
yum localinstall influxdb-1.6.0.x86_64.rpm

安装完毕后后自动生成默认配置文件 /etc/influxdb/influxdb.conf,也可以使用命令生成一个模版

influxd config > /etc/influxdb/influxdb.conf

启动influxdb数据库

使用自带的systemd启动

systemctl start influxdb

也可以使用命令直接启动

influxd  -config  /etc/influxdb/influxdb.conf

连接influxdb数据库

[root@influxdb ~]# influx 
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0

influx 如果不加参数默认连接本机8086端口

-port  指定连接的端口
-host  指定连接的主机
-username  指定连接用户
-password  指定连接用户密码
-database  指定连接的数据库

还有很多参数,使用 influx -h 可以查看帮助文档。

influxdb 的重要概念

database: 数据库名
measurement: 姑且叫把表名
Point:相当于传统数据库里的一行数据

Point

Point 由时间戳(time)、数据(field)、标签(tags)组成。

Point属性 传统数据库中的概念
time 每个数据记录时间,是数据库中的主索引(会自动生成)
fields 各种记录值(没有索引的属性)
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。

TSM 存储引擎

TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。

1)Cache:cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。

cache 中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。如果不配置的话,默认上限为 25MB,每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

2)WAL:wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。

3)TSM File:单个 tsm file 大小最大为 2GB,用于存放数据。

4)Compactor:compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。

主要进行两种操作,一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。

另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

原文地址:https://www.cnblogs.com/panjunbai/p/9410982.html