001、时间序列数据库简介

时间序列数据定义

比如一台机器的CPU监控数据、或者是一个人的心跳数据,这类数据在时间轴上滑动延伸,某个被测量的主体在一个时间点上就会产生一个测量值。

时间序列数据的特点

1、写多读少。

2、写入平稳、持续且数量巨大。基本不存在更新和删除。

3、读取冷热分明,最新的数据最可能被读取,或者读取一段周期的数据。

时间序列数据的模型

从上面说的定义部分—某个被测量的主体在一个时间点上就会产生一个测量值,

可知,对时间序列数据进行建模,需要包含三个重要部分,分别是主体,时间戳和测量值

目前主流时序数据库建模的方式会分为两种,按数据源建模和按指标建模,以两个例子来说明这两种方式的不同。

按数据源建模

在这里插入图片描述

如图所示,同一个数据源在某个时间点的所有指标的测量值会存储在同一行。InfluxDB采用这种模式。

按指标建模

在这里插入图片描述
如图所示,其中每行数据代表某个数据源的某个指标在某个时间点的测量值。prometheus采用这种模式。

这两种模型的选择没有明确的优劣。

时间序列适合的存储模型—LSM

LSM树(Log-Structured-Merge-Tree)是比较通用的适合时间序列数据模型的存储结构。

其架构图大致如下:

在这里插入图片描述

1、数据写入先写入WAL(write ahead log),防止数据丢失。

2、数据写入内存的memtable,当memtable达到一定大小,转化为immutable,immutable不可写。

3、immutable刷入磁盘,刷入磁盘时进行格式转化,转化为更适合读的存储格式。

4、磁盘级别的存储块采用分层格式,后台会进行compaction进行块合并,块合并时进行比如压缩、合并数据、删除标记为删除的数据,格式转化使更适合读取。

LSM也是把磁盘离散写改为顺序写的优化思路,新增数据时,WAL是磁盘顺序写的,其他的数据块的维护是在memtable内存内完成,待memtable转化为immutable落盘时,又是顺序写的方式。对于读操作,每个SSTable块相当于一个小数据库,存储一个时间区间的所有数据,对于时间序列数据的查询场景(某个时刻的数据或者某个时间片段的数据),只要扫描命中块就可以了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值