什么是时间序列数据? 为什么我们需要单独的数据库来处理数据库? 时间序列数据库如何处理数据?
如果您关注技术,则很有可能遇到术语"时间序列数据库"。 本文旨在传达-
· 什么是时间序列数据?
· 为什么时间序列现在变得越来越重要?
· 为什么我们需要一个单独的数据库来处理时间序列数据?
· 时间序列数据库如何工作?
什么是时间序列数据
根据维基百科
时间序列是按时间顺序索引(或列出或绘制图形)的一系列数据点。 最常见的是,时间序列是在连续的等间隔时间点上获取的序列。
时间序列数据是一系列数据点。 每个数据点都是时间戳和值的组合。 例如,监视服务器的应用程序将定期发送CPU使用率。 每个条目都是一对时间戳记以及CPU使用率。 数据看起来像-
Timestamp,Value
2021-12-27T10:50:00, 20
2021-12-27T10:52:00, 22
2021-12-27T10:54:00, 23
2021-12-27T10:56:00, 21
由于越来越多的时间序列数据是从诸如
· 物联网传感器-从大型行业到手表/表带中的活动传感器,到处都有传感器。 它们会生成大量二手手机靓号买卖平台需要存储和处理的数据。
· 股市价格会生成大量需要实时处理的数据。
· 服务器监视-需要监视服务器的不同因素,例如CPU使用率,内存使用率,磁盘IOPS等。
为什么需要时间序列数据库
上面的服务器监视数据看起来很简单,对吧? 足够简单,可以处理大多数数据存储,例如关系数据库(PostgresSQL)或文档存储(MongoDB)。 那么,为什么我们需要一个特殊的数据库来管理时间序列数据? 原因在于时间序列数据的性质及其管理/处理方式,
· 高写入吞吐量-需要支持高写入吞吐量或较高的INSERT操作速率。 该操作比更新更多的是INSERT。
· 分析大量数据-查询需求可能是获取过去4年APPLE股票周平均价值。
· 数据生命周期管理-可以要求我们在什么地方需要对新数据进行比旧数据更高的精度。 因此,随着数据变旧,需要对其进行汇总和下采样。
以上几点限制了RDBMS和Document Store在处理时间序列数据方面的使用。 总结时间序列数据库应该
· 支持高插入率
· 分析大怒是数据
· 管理TS数据生命周期需求
除上述要点外,某些数据库(Prometheus)还提供监视和警报系统。
怎么样实现
区分时间序列数据库和其他数据库的一个主要因素是索引。 索引是基于以下事实而设计的:时间序列事务主要是INSERT,而不是UPDATE。
不同的时间序列数据库采用不同的索引方法。 例如,TimeScaleDB构建在PostgresSQL之上。 它的索引基于B树。 另一方面,InfluxDB具有一个基于LSM树的名为时间序列索引(TSI)的新索引。
考虑到LSM Tree支持比B-Tree更快的插入这一事实,有一篇有趣的文章介绍了TimeScaleDB为什么选择基于B系列的时间序列DB的关系数据库。
(本文翻译自Arun Ghosh的文章《What, Why and How of Time Series Database》,参考:medium/@
_arun_ghosh/what-why-and-how-of-time-series-database-c858cf2e9bb)