时序数据库 Apache IoTDB 单元与多元时间序列写入与查询性能对比——田原

本文对比了Apache IoTDB的单元时间序列与多元时间序列的存储引擎,包括写入性能、磁盘占用和查询性能。单元时间序列适用于独立传感器数据,而多元时间序列适用于设备级别数据。实验表明,多元时间序列在多分量场景下写入性能平均提升1.6倍,磁盘占用减少约50%,查询性能也有所提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次分享来自社区贡献者田原 。

       随着物联网的普及和工业技术的不断发展,高效管理海量时间序列的需求越来越广泛,数据量越来越庞大。时间序列主要分为两种,即单元时间序列和多元时间序列。单元时间序列是指一个具有单个时间相关变量的序列,单元时间序列只包含一列时间戳和一列值。多元时间序列是指一个具有多个时间相关变量的序列,多元时间序列包含多个一元时间序列作为分量,各个一元时间序列的采样时间点相同,所以数据可以用矩阵形式表示,每行为一个时间点,每列为一个一元时间序列。

f6c840cf26eca695acf35153be25d9b7.png

1.时序数据库分类

       当前主流的时序数据库存储引擎大多数都只支持一种时间序列模型(单元或多元),我们可以按照时序数据库是单元时间序列存储引擎,还是多元时间序列存储引擎对其进行分类

单元时间序列存储引擎

       该存储引擎将每个时间序列独立存储,写入物理磁盘的时候,会对应两列数据,一列是时间戳列,一列是值列,两者一一对应。这种存储引擎适用于各个传感器独立采集的场景每个传感器采集的数据具有独立的时间戳。

       基于已有的键值数据库构建的时序数据库基本都属于这一类,如 KairosDB 和 OpenTSDB 等。还有部分原生时序数据库的存储引擎也属于这一类,如 InfluxDB 和 Prometheus 等。

       0.12及以前版本的 Apache IoTDB 的存储引擎和文件格式也只支持单元序列,无法高效的存储和查询多元时间序列。

多元时间序列存储引擎

       该存储引擎将多个时间序列共享存储一列时间戳列,此外,每个时间序列再单独存储一列值列。一列时间戳列对应多个值列。这种存储引擎适用于多个传感器同时采集的场景,如在实际生产环境中,数据的收集粒度是设备级别的,一个设备下的多个传感器的值对应同一个时间戳。

       基于已有的关系型数据库构建的时序数据库基本都属于这一类,将一个设备下所有序列建模成一张表,时间列只存在一列,典型的像 TimescaleDB 。少部分原生时序数据库的存储引擎也采用多元时间序列模型构建存储引擎,如 TDengine。

       最近也有一款基于 Prometheus 开发的多元时间序列存储引擎 Heracles ,该存储引擎目前只是一个原型系统,并未合入 Prometheus主代码分支。除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apache IoTDB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值