时间序列数据库

2024 年 8 月 28 日 | 3 分钟阅读

引言

“时间序列”是指一系列具有时间戳的数据点集合。“时间序列数据库” (TSDB) 是一个计算机系统,用于存储和访问属于“时间序列”的数据记录。每个数据点与其他数据点的关系由时间戳决定。时间序列数据通常包含连续的信息流,例如传感器测量值和日内股票价格。时间序列数据库可以以支持快速插入和快速检索的格式存储大量带时间戳的数据,以支持对数据的复杂分析。

与其他数据集相比,时间序列数据集通常很大,并且通常由时间戳和相关数据组成。此外,时间序列数据集不需要永久存储,并且在各种表中的数据记录之间的关联可能较少。得益于时间序列数据集的独特性质,时间序列数据库在存储容量和性能方面可以显著优于通用数据库。

时间序列数据库 (TSDB) 是一种软件系统,专门用于以时间(s) 和值(s) 的相关对来存储和交付时间序列。在某些学科中,时间序列也可能被称为配置文件、曲线、轨迹或趋势。早期的时间序列数据库,有时被称为数据历史记录器,通常用于支持可以有效保留传感器设备测量值的工业应用。然而,如今,它们被用于支持更广泛的应用。

例如,由于时间序列数据是均匀的,专门的压缩方法可以优于为处理不太均匀数据而设计的传统压缩算法。与为无限期存储数据而设计的普通数据库不同,时间序列数据库可以编程为定期删除过时数据。使用独特的数据库索引还可以提高查询性能。

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

TSDB 的工作原理是通过记录固定值和动态值的组合。在记录钻井平台上多个指标的油井中,一组数据点可能被标记为“1 号油压钻机”,而相关的动态值将是压力测量值和时间戳。这个示例时间序列数据有助于观察油压的模式,当与其他参数结合分析时,可能有助于确定是否要放弃该井。这些数据文件以允许基于时间的快速读写格式存储在介质上。

由于所有条目都带有时间戳,因此数据点的顺序是数据的自然属性。可以使用这种顺序将数据接收到一个可以像数据流一样考虑有序数据的流处理引擎。通常理想的做法是利用快速流处理引擎,因为 TSDB 的关键目标之一就是快速。Hazelcast Jet 是一个受益于内存架构的快速流处理引擎的示例。Hazelcast Jet 可以连接到 TSDB,从而能够快速处理 TSDB 提供的时间序列数据。

时间序列数据库的替代方案

关系数据库管理系统 (RDBS) 通常被认为是通用数据库系统,可用于存储和访问时间序列数据。由于 RDBMS 的灵活性,它们可以存储与 TSDB 相同的数据;主要区别在于数据传输到存储介质的方式。RDBMS 未针对时间序列数据进行优化,并且由于其设计目标与 TSDB 不同,因此在添加和访问时间序列数据方面通常较慢。

时间序列数据通常存储在NoSQL数据库中,这是另一种类型的数据库。NoSQL数据库对于记录来自各种不同来源的时间序列数据非常有用,因为它们在每条记录的数据结构方面更具适应性。用于时间序列数据的NoSQL实现通常是 TSDB 的绝佳选择。它还可以提供适用于时间序列数据以及其他类型数据的功能。

时间序列数据库示例

  1. InfluxDB
  2. Prometheus
  3. QuestDB
  4. Aerospike
  5. DataStax
  6. GridDB
  7. Druid
  8. Warp 10
  9. Trendalyze
  10. Amazon Timestream
  11. dataPARC
  12. BangDB
  13. createDB
  14. Google Cloud Big Table
  15. CortexDB
  16. Axibase 时间序列数据库
  17. Heroic
  18. Kinetica
  19. QuasarDB
  20. SiriDB
  21. Tinybird
  22. KX
  23. ExtremeDB