什么是时序数据库

简介: 【7月更文挑战第7天】时序数据库专注存储按时间排序的数据,用于实时监控与分析指标趋势。

时序数据就是基于时间排序的数据,再通过时间坐标将这些数据连接起来,形成一个折线图,直观地展示一个指标在过去一段时间内的走势和规律,帮助定位数据异常点。

时序数据库就是用来存储这些时序数据的数据库。与传统数据库相比,时序数据库需要能够长时间保存数据,且需要实时展示,这就要求时序数据库能做到持久化存储,以及数据读写的高性能。此外,对于一些复杂的场景,比如广告业务的多维度多指标,时序数据库还需要做到多维查询、指标聚合等。

一、时序数据库的特点

  1. 数据写入
  • 数据实时写入。
  • 高并发写入。
  • 无须更新或删除操作(除了修复数据)。
  • 连续性:时序数据会按照指定的时间粒度持续写入。
  1. 数据读取
  • 写多读少:时序数据的写入是持续的,但是一般并不会持续地读取数据,只有在需要的时候才会查询最近一段时间内的指定维度指标。
  • 多时间粒度读取:一般来说,我们会对最近7天的数据以一个比较细的时间粒度来存储一个相对精确的值,而对于7天或者一个月以前的数据,通常会把它们聚合成一个比较粗的时间粒度存储,比如按照小时或者天来存储,以便节省磁盘空间,提高读取历史数据的效率。
  • 指定维度读取:在广告业务中,时序数据存储的维度可能有成百上千个,那么在读取数据时不会把所有的维度都读取出来,因为这样做不仅没必要,而且对系统的I/O也是一个极大的考验。所以,只会选择读取所需要的维度和指标。
  • 实时聚合:通常实时的时序数据存储的是不同维度下的一个比较细的时间粒度数据,查询时需要在不同维度下对一个或多个指标进行各种聚合的操作,如 sum、max、avg等。
  1. 数据存储
  • 按列存储:通过数据的查询特征,可以发现时序数据更适合将一个指标放在一起存储,任何列都能被作为索引。在读取数据时,只会读取所需要的维度所在的列,这样就可以大大减小I/O的损耗和内存的使用,提高执行效率。
  • 以不同的时间粒度存储:数据的读取特征决定了可以将历史数据聚合成一个比较粗的粒度存储,将最近的数据以一个比较细的粒度存储,这样可以大大减少磁盘的使用空间。
  • 冷热存储:通常我们只会查询最近一天或者7天的数据,而半年或一年以前的数据使用率很低,因此可以把历史的冷数据和最近的热数据分开存储,以提高读取数据的效率,减少磁盘的使用空间。

二、时序数据库的特性

上面介绍的时序数据库的这些特点,决定了时序数据库具有以下特性。

  • 高并发、高吞吐量,实时写入和读取数据。
  • 高可用性、高可靠性,分布式架构、数据分片。
  • 支持海量数据存储,一般时序数据都是TB或PB级别的体量。
  • 支持数据聚合分析,满足实时的多维聚合分析。

三、时序数据库的组成

  • Timestamp:这是时序数据库的关键所在,因为是以时间排序的数据,所以需要记录所有数据的时间。
  • Metric:需要存储的指标数据有很多,比如在广告业务中,分析用到的指标更是成千上万,那么在时序数据库中就需要通过Metric字段来标识每个指标数据,如QPS、Status等。
  • Dimension:数据的属性,比如数据类型、地域、年龄、性别等。而一般指标的结果都是基于单维度或多维度分析得到的。比如在广告业务中,一个指标有时需要上百个维度经过不同的组合得到不同的结果。

四、时序数据库的模型

下图显示了在同一个时间、不同维度下QPS的变化情况。其中地域和性别就是Dimension,北京、上海等就是地域维度的类别,QPS就是Metric,QPS列的数据就是QPS指标每秒钟在地域和性别组合维度下的值。

相关文章
|
存储 缓存 固态存储
时序数据库 InfluxDB(四)
时序数据库 InfluxDB(四)
203 1
|
存储 NoSQL 数据库
时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析
InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计。由于InfluxDB的集群版已在0.12版就不再开源,因此如无特殊说明,本文的介绍对象都是指 InfluxDB 单机版 1. InfluxDB 的存储引擎演进 尽管InfluxDB自发布以来历时三年多,其存储引擎的技术架构已经做过几次重大的改动, 以下将简要介绍一下InfluxDB的存储引擎演进的过程。
6599 0
|
7月前
|
存储 物联网 数据处理
什么是时序数据库?
【5月更文挑战第13天】什么是时序数据库?
96 1
|
7月前
|
存储 监控 物联网
时序数据库的优势有哪些?
【5月更文挑战第13天】时序数据库的优势有哪些?
225 1
|
7月前
|
存储 监控 Java
InfluxDB时序数据库安装和使用
InfluxDB时序数据库安装和使用
148 2
|
存储 监控 Go
时序数据库 InfluxDB(五)
时序数据库 InfluxDB(五)
181 1
|
存储 监控 Unix
时序数据库 InfluxDB(六)
时序数据库 InfluxDB(六)
121 0
|
存储 缓存 数据库
时序数据库 InfluxDB(三)
时序数据库 InfluxDB(三)
226 0
|
存储 消息中间件 容灾
时序数据库 InfluxDB(七)
时序数据库 InfluxDB(七)
201 0
|
存储 文件存储 数据库
时序数据库 InfluxDB(二)
时序数据库 InfluxDB(二)
152 0