代码改变世界

时序数据库

2024-08-17 14:12  abce  阅读(4)  评论(0编辑  收藏  举报

当需要显示每分钟、每天或任何其他日期范围的分析数据时,你需要使用时间序列数据库。时间序列数据库存储了带有相关时间戳的数据点,因此可以向用户显示时间范围内的趋势。它通常用于基于时间的信息和分析的可视化。

 

什么是时间序列数据库?

在时间序列数据库中,每条记录都包含一个时间戳。时间戳可用于显示单个数据点,也可用于图表和分析。时间序列数据库专门用于需要日期范围的信息,如跟踪天气或查询为监控目的记录的特定事件。

 

什么是时间序列集合?

时间序列数据库存储所有数据,但时间序列集合是从数据库中提取并返回应用程序的数据片段。时间序列集合以数据集的形式从数据库中获取,数据集包含给定日期范围内的数据点。用户或应用程序将时间范围作为输入发送给数据库,数据库会返回给定范围内每个数据点的集合。

 

时间序列数据库的工作原理

通常,创建时间序列数据库是为了获取大量数据,以便将来进行分析。用户在应用程序中设定日期范围,数据库就会返回一组数据点。数据库以时间间隔采集数据。例如,股票行情器可能每分钟显示一次股票价格的变化。数据库存储股票名称、价格和时间戳,以记录每分钟的股票价格,用于分析和记录历史信息。

 

从时间序列数据库中检索的数据会按时间顺序排列记录,这样开发人员就可以构建可视化效果,而无需太多开销。数据库是功能强大的服务器,因此它们对数据集进行排序的速度要比前端网络应用快得多。时间序列数据库接收应用程序的输入,确定数据的排序方式,以便开发人员向用户显示分析结果。例如,用户可能要获得特定日期范围内的股票价格数据,并按升序排序。

 

流行的时间序列数据库的比较

每个时间序列数据库都有一个用于存储和检索数据的后端引擎。该引擎必须快速高效,既能存储大量数据,又能以极小的延迟检索数据。你可以在传统数据库中存储基于时间的数据,但市场上有几种时间序列数据库是专门为查询和存储这类数据而构建的。

 

InfluxDB:开源的 TSDB

开源数据库受到一些开发人员的青睐,因为他们可以 fork 代码库,对基础产品进行自己的修改。InfluxDB 是一个开源时间序列数据库,每秒可存储成千上万个数据点。如果想监控工业应用中的物联网设备等基础设施,InfluxDB 是一个不错的选择。

 

Prometheus 与 InfluxDB

InfluxDB 与 Prometheus 的主要区别在于检索数据的方式。

使用 InfluxDB,应用程序会不断向数据库发送数据,并在数据库中存储和检索数据。Prometheus 通过应用程序接口(API)工作,应用程序接口推送数据,数据库使用 API 轮询存储的数据。对于系统分布在多个地点的大型企业,Prometheus 基于云的 API 可让开发人员从多个地点上传数据,并在中央控制面板中进行审查。

 

TimescaleDB 与 InfluxDB

InfluxDB 是一种 NoSQL 数据库,而 TimescaleDB 是一种关系数据库。关系数据库的工作方式与 NoSQL 数据库截然不同。关系数据库使用表和键来连接每个表中存储的数据。了解数据库存储数据的方式非常重要,因为检索数据的方式使用不同的语法。如果你知道要存储的数据并能将其组织到表中,那么 TimescaleDB 就是一个可行的选择。

 

Elasticsearch 与 InfluxDB

为了提高性能,Elasticsearch 是企业应用中常用的引擎。它的性能略优于 InfluxDB,这是因为它具有分片索引的能力,而分片索引是 Elasticsearch 中作为 "文档"存储的数据的映射。Elasticsearch 应用于大型数据集,在这种情况下,应用程序和用户将检索来自各种时间戳的数百万个数据点的数据集。例如,Elasticsearch 可用于查看日志文件,以监控大型企业网络环境中任何可疑的用户活动。

 

何时使用时间序列数据库

大多数时间序列数据库都用于监控硬件或软件,以便使用大量数据来分析特定事件。要清楚地了解环境中的事件,需要从多个来源收集大量数据。例如,物联网传感器可能会收集多台机器的温度数据。时间序列数据库可存储一天中每分钟的温度,这样工程师就能发现任何异常情况,并在机器发生故障前进行补救。

 

关系型数据库与时间序列数据库

大多数时间序列数据库使用 NoSQL 文档来存储数据,这是存储非结构化数据的常见方式。非结构化数据意味着开发人员可以存储时间戳和名称等数据,而不必受将数据组织到定义的表行中的限制。关系数据库要求开发人员使用特定的结构来存储数据,因此对于具有未知值和数据类型的时间序列数据来说,关系数据库不是可行的选择。例如,开发人员无法使用关系数据库在时间戳列中存储字符串值,但使用时间序列 NoSQL 数据库却可以做到这一点。

 

NoSQL 数据库与时间序列数据库的比较

对于未知值,NoSQL 数据库是首选方法。你应该选择支持 NoSQL 的数据库,如 InfluxDB 或 Elasticsearch。这些时间序列数据库提供批量数据存储,查询时性能快速。它们主要用于大型企业应用,部署起来要困难得多。配置不正确的 NoSQL 数据库可能会抑制查询处理过程中的性能。

 

时间序列数据库的优势

每种数据库都能存储信息,但时间序列数据库是专门为基于时间的分析而构建的。时间序列数据库的优势在于它能够存储大量数据,每个数据点都包含一个时间戳。由于时间序列数据库是针对大型数据集而构建的,因此在插入新记录和检索大型数据集方面,时间序列数据库通常比传统数据库更快、更高效。

对于涉及日期和时间的查询,时间序列数据库通常更加准确,而且存储时间序列数据的效率更高。任何想要存储监控数据的组织都会从时间序列数据库中受益。时间序列数据库能够检索大型数据集,用于分析、可视化、财务趋势、活动信息以及一天中不同时间间隔内频繁发生的环境变化。

 

时间序列数据库的缺点

与任何高级基础架构一样,时间序列数据库更难正确部署和配置。由于大多数时间序列数据库都是 NoSQL 数据库,如果不对其进行优化,部署不当的 NoSQL 数据库就会出现性能低下的问题。配置需要企业内部有人了解优化数据库的正确方法。

希望存储时间序列数据的企业需要存储大量数据的资源。数据可以存储在云中,但会增加 IT 成本。支持数据存储和时间序列数据库处理的基础设施可能成本高昂。

 

结论

如果需要为基于时间的数据找到更好的解决方案,时间序列数据库是一个不错的选择。审查不同类型的数据库引擎,考虑成本,并找到一种能随着业务增长和数据存储量增加而扩展的数据库引擎。切记审查配置和优化选项,以确保数据库尽可能高效地运行。

 

原文地址:https://www.purestorage.com/au/knowledge/what-is-a-time-series-database.html