Tony Bai

Tony Bai -

理解时序数据库的时间线

本文永久链接 – https://tonybai.com/2023/05/28/understand-time-series-of-tsdb 在当今数据爆炸的时代,时序数据已经成为企业和组织中不可或缺的一部分。它们包括了从传感器、监控设备、日志记录系统和金融交易等多种来源的大量数据,这些数据按照时间顺序排列,记录了各种事件和活动的发生和变化。时序数据的分析和处理对于企业的业务决策和运营效率至关重要。为了更好地管理和利用这些数据,人们发明了时序数据库管理系统(Time Series Database System,TSDB)。 在时序数据库系统中,时序数据通常被抽象和组织为时间线(time series),时序数据库的设计与实现也是围绕着时间线进行的,因此理解时间线是深入理解时序数据库系统的前提。 在本文中,我将和大家一起学习一下时序数据库中时间线的概念,并以InfluxDB(2.x)为例探讨时间线在该数据库中的组织和呈现形式。 在学习时间线之前,我们先来重新认识一下时序数据。 1. 什么是时序数据 时序数据,亦称时间序列数据,是指按时间顺序记录的、具有时间戳的数据点。这些数据点可能是连续的(如下图上部的metrics),例如每秒记录一次;也可能是不规律的,例如在特定事件发生时的记录(如下图下部的events): 图来自influxdb,tip: 看图中小圈圈 时序数据在多个领域具有广泛的应用,如金融市场的股票价格、气候科学的气象数据、工业设备的运行数据、物联网数据以及车联网数据等,如下图(此图来自网络): 时序数据有着几个鲜明的特点: 时间戳 时序数据是与时间相关的数据,每个数据点都有一个时间戳或时间范围来标识其产生或记录的时间。 大数据量 时序数据通常是大数据量的,需要处理大量的持续不断的数据点。 数据流 从源头流来的时序数据量往往是不间断的。 数据量是不可预测的 可能会在不规则的时间间隔内突然传来大量的数据。这在金融市场上非常常见,事件发生后交易量会出现峰值,而这是很难预测的。 实时性 时序数据常常需要实时处理分析,以便及时采取行动或在数据发生变化时发出警报。异常情况检测就是一个很好的例子。 追加写入 新的数据点会追加到已有数据的末尾,而不是或极少是修改或删除已有的数据。并且绝大多数情况下,时序数据是按照时间顺序排列的。 我们看到时序数据和传统的OLTP(联机事务处理)数据具有很多不同的特点,这些不同决定了基于时序数据的数据库管理系统所采用的数据模型、处理的数据规模、数据的访问方式、数据的处理频率、数据的处理方式都有很多不同。 那么当前主流时序数据库是如何存储、处理和管理时序数据的呢?我们继续向下看。 2. 时间线:时序数据库对时序数据的建模 初次了解和学习时序数据库(tsdb)的时候,你都会学到一个叫时间线(Time Series)的术语,无论你学习的是InfluxDB、Prometheus还是TDengine亦或其他。 Influxdb的联合创始人Paul Dix对tsdb中时间线的理解如下: Paul认为时间线是解释和理解时序数据的一种方法。其实时间线就是时序数据库界对时序数据的一种建模,时序数据库就是围绕时间线这个模型进行设计和实现的,当然不同的时序数据库所建立的时间线模型略有差异,模型能力也有差别。 有了时间线这个模型后,我们可以将时序数据库重新定义为:用于存储时间线的系统。 下面我们就以Influxdb 2.x为例来看看一个真实的时序数据库中的时间线模型。 2.1 InfluxDB 2.x的Line Protocol 提到时间线,就不能不提到InfluxDB用于写入数据点(data point)的Line Protocol,这是目前时序数据库领域的一个流行的时序数据库ingest(数据摄取)协议。通过Line Protocol我们能直观地看到influxdb 2.x对时间线的建模形式。下面是Line Protocol手册中定义的语法和一个示例: // Syntax <measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] [...]

本文介绍了时序数据库在企业和组织中的应用,以及InfluxDB 2.x中时间线的组织和呈现形式。同时,文章还探讨了高基数数据对InfluxDB读写性能的影响和应对措施。

InfluxDB 基数 数据库 时序 时序数据库 时间线 读写性能

相关推荐 去reddit讨论

热榜 Top10

观测云
观测云
Dify.AI
Dify.AI
LigaAI
LigaAI
eolink
eolink

推荐或自荐