hello大家好,我是城乡经济网小晟来为大家解答以上问题,常用时序数据库,详解时序数据库InfluxDB很多人还不知道,现在让我们一起来看看吧!
【资料图】
认识influxdb是之前在做docker展示的时候接触的,那时候是跟grafana一起配套用,图形还是挺好看的,趁周六分享给大家。
InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
InfluxDB特征:
– 无结构(无模式):可以是任意数量的列(tags)。
– 可以设置metric的保存时间。
– 支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计。
– 支持存储策略:可以用于数据的删改(influxDB没有提供数据的删除与修改方法)。
– 支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配可以降低InfluxDB的系统占用量。
– 原生的HTTP支持,内置HTTP API。
– 支持类似SQL语法。
– 支持设置数据在集群中的副本数。
– 支持定期采样数据,写入另外的measurement,方便分粒度存储数据。
– 自带web管理界面,方便使用(登入方式:http://< InfluxDB-IP >:8083)。
InfluxDB是时序数据库,所以怎么都绕不开时间,第一纵列time存储着时间戳,而时间戳是与数据进行关联,这样才能将时间和数据进行展示。
InfluxDB名词
database:数据库,根关系型数据库一个概念。measurement:数据库中的表,就是关系型数据库中的表。points:表里面的一行数据,就是关系型数据库中的记录。InfluxDB中独有的一些概念Point由时间戳(time)、标签(tags)和值(field)组成。time:每条数据记录的时间,也是数据库自动生成的主索引。tags:各种有索引的属性。fields:各种记录的值。tag set:tag在InfluxDB中会按照字典序排序,不管是tag-key还是tag-value,只要不一致就分别属于两个tag set,例如hostname=server01,device=/data和hostname=server02,device=/data就是两个不同的tag set。
还有三个重要的名词:Series、Retention policy和Shard
Series:相当于是InfluxDB中一些数据的集合,在同一个database中,retention policy、measurement、tag sets完全相同的数据同属于一个series,同一个series的数据在物理上会按照时间顺序排列存储在一起。Retention policy:存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB会定期清除过期的数据。Shard:在InfluxDB中是一个比较重要的概念,它和Retention policy相关联。每一个存储策略下会存在许多shard,每一个shard存储一个指定时间段内的数据,并且不重复,例如7点-8点的数据落入shard0中,8点-9点的数据则落入shard1中。每一个shard都对应一个底层的tsm存储引擎,有独立的 cache、wal、tsm file。
TSM存储引擎主要由几个部分组成:cache、wal、tsm file、compactor。
1)安装配置
# 安装influxdb;$ yum install influxdb # 启动influxdb;$ systemctl start influxdb # 连接influxdb;$ influx -database "test" -host "localhost" -port "8086"
2)相关文件
$ rpm -ql influxdb# 配置文件;/etc/influxdb/influxdb.conf # 日志轮转;/etc/logrotate.d/influxdb # 命令行客户端;/usr/bin/influx # 查看工具;/usr/bin/influx_inspect # 压力测试工具;/usr/bin/influx_stress # 数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式);/usr/bin/influx_tsm # 服务端;/usr/bin/influxd # Systemctl服务管理;/usr/lib/influxdb/scripts/influxdb.service/usr/lib/influxdb/scripts/init.sh................ # 数据目录;/var/lib/influxdb # 日志目录;/var/log/influxdb
3)开启Web
influxdb提供的简单web管理页面,可以用来操作influxdb,默认没有开启,如果想开启需要修改配置文件中[admin]部分,如下:
[admin] # Determines whether the admin service is enabled. enabled = true # The default bind address used by the admin service. bind-address = ":8080"
篇幅有限,今天关于influxdb就介绍到这了,有时间大家可以测试下,一般infulxdb是要跟grafana一起使用的。在有了InfluxDB Grafana后,你就可以写一些简单的程序了,可以只负责写后端逻辑部分,数据都可以存入InfluxDB,然后通过Grafana展示出来。
后面会分享更多关于devops和DBA内容,感兴趣的朋友可以关注下~
本文就为大家讲解到这里,希望对大家有所帮助。