InfluxDB-基本概念和meta介绍

本篇文章主要介绍InfluxDB的基本概念以及Meta信息的组成,代码基于1.7版本。

基本概念

首先看一下InfluxDB的一些基本概念。
数据模型图

InfluxDB主要有以上图中的几个概念:Point,Measurement,Tags,Fields,Timestamp,Series,下面依次简单介绍下每个概念的含义。

  • Database:InfluxDB可以创建数据库,一个数据库可以包含多个user、保存策略等,schemaless ,支持随时灵活创建mersurement;
  • Measurement:相当于表的概念;
  • Tags:是一些kv的结构,标签会被用来建立索引;
  • Fields:是保存真实数据的结构,也是kv结构,但是不会被用来建立索引;
  • Point: 代表了一条记录,可以理解为关系型数据库中的一条记录;
  • Timestamp:既然InfluxDB被称之为时序数据库,少了时间是不可能的,每条记录必须要有一个时间戳;
  • Series:是由Measurement+Tags组成的

Meta信息

那么这些基本概念在InfluxDB代码中是怎么体现的呢?首先上图,一图胜千言。
元数据组成
可以看到,meta主要包含一些元信息,主要包含如下几个部分:

  1. database信息:meta信息中包含了一个database的数组,包括了所有的database信息。
    • RetentionPolicy:数据过期策略。包含数据过期时间,副本数(单机无用),shardGroup Duration;
      • ShardGroupInfo:分片组。包含时间范围[start, end),删除时间,截断时间;
        • ShardInfo:分片。owners,所属节点,单机无用;
        • ShardGroupDuration:决定了一个ShardGroup内部数据时间的最大差;
        • Duration:决定了这个RetentionPolic的数据的过期时间;
      • ContinuousQuery:持续的query,有点类似预处理。
  2. user信息:包含用户名,密码的hash,是否为管理员,以及授予的权限
  3. raft协议同步所需信息:(暂不展开)
    • Term
    • Index

其关系可以用下面这张图展示:
数据模型

数据过期删除策略

Shard Group是InfluxDB中一个重要的逻辑概念,从字面意思来看Shard Group会包含多个Shard,每个Shard Group只存储指定时间段的数据,不同Shard Group对应的时间段不会重合。比如2017年9月份的数据落在Shard Group0上,2017年10月份的数据落在Shard Group1上。

  • 过期策略,过期是直接整个shardGroup删除,一个shard对应多个TSM Files。
  • 当shardGroup的end+过期时间小于当前时间,就会shardGroup就会被当成过期的并被清理掉。
  • 每个Shard Group对应多长时间是通过Retention Policy中字段”SHARD DURATION”指定的,如果没有指定,也可以通过Retention Duration(数据过期时间)计算出来,两者的对应关系为:
    Shard Group过期时间与数据过期时间关系

参考文献

Influxdb的Meta data分析
时序数据库技术体系 – 初识InfluxDB