10分钟帮您快速理解InfluxDB中的核心概念

InfluxDB是目前时序数据库 (TSDB)最优秀的产品,时序数据库是一种设计和优化的数据库,用于注册和存储始终与特定时间点相关联或使用时间戳的数据。时序数据其实就是在不同时间点收集并按时间排序的数据。对于刚刚接触时序数据库的同学来说,好多概念都是新的,理解起来会有一定的难度,本文就来梳理一下这些概念,方便大家快速上手InfluxDB!

database

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

measurement

对应传统数据库中的表

retention policy

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

tag

标签在InfluxDB中是一个非常重要的部分,表名+tag一起作为数据库的索引,是“key-value”的形式。

field

例如上面数据中的 value 就是 fieldName,InfluxDB 中支持一条数据中插入多个 fieldName,这其实是一个语法上的优化,在实际的底层存储中,是当作多条数据来存储。

备注:一个measurement里可以没有tag,但是不能没有feld,因为tag只是索引,并不是用于存储测量值的,而fields就是存储测量值的。

关于tag和filed的使用,我们可以遵循以下原则:

  • 把经常查询的字段作为tag
  • 如果要使用GROUP BY(),要放在tag
  • 如果要使用InfluxQL函数,放到field
  • 如果需要存储的值不是字符串,则需要放到field中,因为tag value只能是字符串

timestamp

每一条数据都需要指定一个时间戳,在 TSM 存储引擎中会特殊对待,以为了优化后续的查询操作。

Point

相当于传统数据库里的一行数据,point=timestamp+field+tag

下图很好的展示了,measurement、fielsds、tags 和point的关系

Series

Series是InfluxDB中最重要的概念,时序数据的时间线就是:一个数据源采集的一个指标随着时间的流逝而源源不断地吐出数据这样形成的一条数据线称之为时间线。Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag set完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。Series由MeasurementTags组合而成,我们可以简单的理解:

Measurement不同,就是不同的时间线

Measurement相同,Tags不同也是不同的时间线

shard

shard是InfluxDB存储引擎的实现,负责数据的编码存储、读写服务等。将InfluxDB中时间序列化的数据按照时间的先后顺序存入到shard中,每个shard中都负责InfluxDB中一部分的数据存储工作,并以tsm文件的表现形式存储在物理磁盘上,每个存放了数据的shard都属于一个shard group。

shard group

shard group可以理解为存放shard的逻辑容器,所有的shard在逻辑上都属于这个shard group,每个shard group中的shard都有一个对应的时间跨度和过期时间,每一个shard group都有一个默认的时间跨度,叫做shard group duration。shard group使得shard查询性能和批量清理数据变得简单高效。

retention policy 、shard group和shard的关系

在一个retention policy中,如果指定的保留时间为24小时,那么在shard group中定义每个shard的duration为1小时,即每个shard的时间跨度为1小时,那么总共会有24个跨度为1小时的shard,在触发数据的RP后,删除最早时间跨度的shard。下图很好的解释了三者的关系。

bucket

是InfluxDB 2.0中存储时间序列数据的指定位置。在InfluxDB 1.8+中,每个database和retention-policy的组合都表示一个bucket。

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值