为何使用专门定制的时序数据库?
作者:Susannah Brodnitz / 开发者
2022年10月13日
导航至
本文最初发表在The New Stack,现经授权在此重发。
对于许多工作负载来说,使用时间序列数据库是一个节省时间和存储空间的明智选择。
开发者和公司现在比以往拥有更多的数据库选择。为项目选择正确的数据库可以节省编写和查询数据的时间。随着公司使用更大的数据集来创建越来越智能和自动化的系统,效率至关重要。对于许多工作负载来说,使用时间序列数据库是一个节省时间和存储空间的明智选择。
时间序列数据的不同之处
时间序列数据是指任何带有时间戳的指标。它包括许多种变量,从天气模式到CPU使用情况。它通常来自需要做出实时决策的传感器、系统或应用程序。这些数据对于理解过去的表现和创建预测未来结果的模型至关重要。这些计算涉及的数据量可能迅速增加,因此避免因效率低下的数据架构而浪费资源至关重要。
时间序列数据库是为处理典型的时间序列工作负载而设计的。它们优化了随时间测量变化,而不是数据点之间的关系。两种主要的时间序列数据类型是指标,它们在固定间隔内采集,以及事件,它们由于外部事件或用户测量而在不规则间隔内采集。一个时间序列数据库能够处理指标和事件,并能够平均事件并将它们转换为指标,这是非常重要的。
存储数据
一个好的数据库需要安全高效地存储数据。用户必须能够快速将数据写入其中,并确信它能够处理他们计划存储的数据量。时间序列数据可能具有巨大的数据量,存储它的数据库需要能够适应这一点。时间是线性的,时间序列数据库可以通过将新数据附加到现有数据来利用这一点。它们优化了以时间戳数据的方式快速写入,这可以节省用户从开始写入数据的那一刻起的时间。
时间序列数据库也可能内置了生命周期管理。对于开发人员或公司来说,最初收集和分析高度详细的数据是很常见的,随着时间的推移,他们可能想要存储更小的、降采样的数据集,这些数据集描述了趋势,但不需要占用太多存储空间。时间序列数据库可以考虑到这一点,并自动根据每个应用的需要聚合和删除数据。如果开发人员使用更基本的数据库,他们通常需要创建新的系统来以这种方式管理数据。有了时间序列数据库,这一切都已经处理好了,开发人员可以专注于他们的应用程序。
时间序列数据库还需要易于扩展。例如,在物联网用例中,随着更多传感器的添加和项目的扩展,数据呈指数增长。这在时间序列工作负载中很常见,用于这些项目的数据库需要能够适应这一点。
查询数据
使用时间序列数据库还可以加快时间序列工作负载的查询时间。对时间序列数据进行最常见的一种处理方式是在较长时间内进行汇总。当在通常使用行和列来描述不同数据点之间关系的关系型数据库中存储数据时,此类查询非常缓慢。专门设计用于处理时间序列数据的数据库可以以指数速度处理查询。时间序列数据库还可能具有内置的可视化工具或高级功能,以简化常见类型的时间序列分析。
选择时间序列数据库
目前市面上有几个时间序列数据库可供探索。在本文中,我们将根据DB-Engines排名,查看领先的时序数据库InfluxDB。InfluxDB将测量名称和时间戳分配给数据,并使用键/值对来存储数据值和元数据。它使用倒排索引存储测量名称和标签集,这可以加快查询速度。用户可以根据测量值、标签和/或字段在时间范围内编写查询,并以毫秒级接收结果。单个InfluxDB服务器每秒可以处理超过200万次写入。与像Cassandra这样的NoSQL数据库相比,InfluxDB写入数据的速度是其4.5倍,存储空间是其2.1倍少,查询速度是其45倍。
数据库是许多应用程序的支柱,在时间序列数据库中使用带时间戳的数据可以节省开发人员的时间和存储空间。为应用程序选择合适的数据库可以让开发人员专注于构建酷炫的项目,而不是在开始之前花费时间管理架构。