为什么使用专用时间序列数据库?

导航至

本文最初发表于 The New Stack,经许可在此转载。

对于许多工作负载,使用时间序列数据库是一个明智的选择,可以节省时间和存储空间。

开发者和公司拥有比以往更多的数据库选择。为项目选择合适的数据库可以节省编写和查询数据的时间。随着公司使用更大的数据集来构建越来越智能和自动化的系统,效率至关重要。对于许多工作负载,使用时间序列数据库是一个明智的选择,可以节省时间和存储空间。

时间序列数据的不同之处

时间序列数据是任何带有时间戳的指标。它包括多种变量,从天气模式到 CPU 使用率。它通常来自需要做出实时决策的传感器、系统或应用程序。这些数据对于理解过去的表现和创建模型来预测未来的结果至关重要。这些计算中涉及的数据量可能会迅速增加,重要的是不要因为低效的数据架构而损失资源。

时间序列数据库旨在处理典型的时间序列工作负载。它们经过优化,用于衡量随时间的变化,而不是数据点之间的关系。时间序列数据主要有两种类型:指标,以固定的时间间隔采集;事件,由于外部事件或用户测量,以不规则的时间间隔采集。重要的是,时间序列数据库能够处理指标和事件,并且能够平均事件并将它们转换为指标。

存储数据

一个好的数据库需要安全有效地存储数据。用户必须能够快速地向其中写入数据,并确信它可以处理他们计划存储在其中的数据量。时间序列数据可能具有巨大的量,而存储它的数据库需要构建来适应这一点。时间是线性的,时间序列数据库可以利用这一点,通过将新数据附加到现有数据。它们经过优化,可以快速写入时间戳数据,这是最常用的方式,从用户开始写入数据的那一刻起就节省时间。

时间序列数据库也可能内置了生命周期管理。对于开发者或公司来说,最初收集和分析高度详细的数据是很常见的,并且随着时间的推移,他们希望存储更小的、降采样的数据集,这些数据集描述趋势而不会占用太多存储空间。时间序列数据库可以考虑到这一点,并根据每个应用程序的需要自动聚合和删除数据。如果开发者使用更基础的数据库,他们通常需要创建新的系统来以这种方式管理数据。使用时间序列数据库,这一切都已得到处理,开发者可以专注于他们的应用程序。

时间序列数据库还需要易于扩展。例如,在物联网用例中,随着更多传感器的添加和项目的扩展,数据呈指数级增长。这在时间序列工作负载中很常见,用于这些项目的数据库需要能够适应它。

查询数据

使用时间序列数据库还可以加快时间序列工作负载的查询时间。对时间序列数据最常见的操作之一是在较长一段时间内对其进行汇总。当在典型的关系数据库中存储数据时,这种类型的查询非常慢,关系数据库使用行和列来描述不同数据点之间的关系。专为处理时间序列数据而设计的数据库可以指数级地更快地处理查询。时间序列数据库也可能具有内置的可视化工具或高级功能,以简化常见类型的时间序列分析。

选择时间序列数据库

市面上有一些时间序列数据库可供您探索。在这篇博文中,我们将介绍根据 DB-Engines 排名领先的时间序列数据库 InfluxDB。InfluxDB 为数据分配测量名称和时间戳,并使用键/值对来表示数据值和元数据。它将测量名称和标签集保存在倒排索引中,这加快了查询速度。用户可以根据测量、标签和/或字段在时间范围内编写查询,并在毫秒内收到结果。单个 InfluxDB 服务器每秒可以处理超过 200 万次写入。与像 Cassandra 这样的 NoSQL 数据库相比,InfluxDB 写入数据的速度快 4.5 倍,使用的存储空间少 2.1 倍,返回查询的速度快 45 倍。

db-engines-influxdb-time-series-database

数据库是许多应用程序的支柱,在时间序列数据库中使用带时间戳的数据可以节省开发者的时间和存储空间。为应用程序选择合适的数据库可以让开发者专注于构建很酷的项目,而不是在开始之前花费时间管理架构。