存储成本砍到 1/10?TDengine 的极致压缩与多级存储

存储成本砍到 1/10?TDengine 的极致压缩与多级存储

在工业互联网和物联网等领域,数据集的价值与其规模是成正比的:应用程序和算法可以使用的数据越多,它们的输出结果就越精确。然而,由众多设备产生的海量数据需要处理,对于大型企业来说,存储成本可能会非常高昂。

TDengine 从”数据怎么变小”和”数据存在哪里”两个维度,提供了一整套低成本存储方案:高压缩率先将数据体积压缩至极致,多级存储再根据数据热度将压缩后的数据分配到最优介质,让企业在不牺牲数据价值的前提下,大幅削减存储开销。

高压缩率,让数据体积再降一个数量级

但有一个好消息,那就是时序数据非常易于压缩。TDengine 大幅提高了数据压缩率,甚至能将数据集压缩至原始大小的1/10,并且几乎不会影响处理性能。更重要的是,TDengine 采用的是无损压缩——压缩后的数据在解压后能够完整还原,不丢失任何精度与细节。在 AI 时代,原始数据的完整性直接决定模型训练质量与预测准确性,有损压缩会丢弃关键信息,导致算法偏差;而 TDengine 的无损压缩既节省了存储空间,又保障了数据的原始价值,为后续的智能分析奠定了可靠基础。这一切都得益于几个关键的创新点。

列式存储

时序数据库主要用来存储设备随时间变化而产生的数据。这些数据通常以较短的时间间隔进行采集,比如一分钟采集一次,或一秒钟采集一次。这就导致每个数据点与其相邻点的数值十分接近 。以每 15s 测量一次温度的设备为例,在这么短的时间内,正常情况下,温度的变化通常不会太大,保持在一个相对稳定的范围内。

和 MySQL 这类采用行式存储的通用数据库不同,TDengine 采用列式存储。

  • 大幅提高压缩率:同一列数据相近,便于压缩;不同数据类型可采用不同压缩算法。
  • 大幅提高分析性能:时序数据的分析,往往是针对一个采集量在一个时间范围段进行的。如果行式存储,会读取大量的无效数据。

采用列式存储,由于这些数据的相似性,即便不使用复杂的压缩技术,也能达到很好的压缩效果。

存储成本砍到 1/10?TDengine 的极致压缩与多级存储 - TDengine Database 时序数据库

列式存储:将相似的数据存放在一起

两级压缩

TDengine 采用两级压缩技术,即先对数据进行编码,然后在编码的基础上对数据块进行压缩。

TDengine 对数据的编码方式如下:

  • 较小的整数数据类型(INT、TINYINT 等)使用 simple8b 编码。
  • 较大的整数数据类型(BIGINT 和 UBIGINT)和时间戳使用 delta 编码。
  • 浮点数据类型(FLOAT 和 DOUBLE)使用 delta-of-delta 编码。

delta 编码,也称增量编码,是一种在序列数据之间以数据差异(delta)的形式存储或传输数据的方法。例如,对于序列数据 [2, 4, 6, 9, 7],delta 编码会存储 [2, 2, 2, 3, -2],其中每个值表示前一个数据点与当前数据点之间的差异。在时序数据场景下,由于相邻数据点的差异通常较小,Delta编码可以显著减少数据的冗余,从而显著提高压缩效率。

编码后,对于所有的数据类型,会使用标准的数据压缩算法进行压缩。TDengine 默认对所有列使用 lz4 进行压缩。但用户可以在建表时,根据需要配置 zlib、zstd、tsz、xz 或 disabled 等压缩算法,不同的数据类型,可以选择不同的压缩算法。详细可查看《数据压缩》。

存储压缩算法增强后,TDengine 的压缩比预期可再提升一倍以上。

一个设备一张表

为充分利用其数据的时序性和其他数据特点,TDengine 采取一张设备一张表 的策略,要求对每个数据采集点单独建表,用来存储这个数据采集点所采集的时序数据。这样的好处是:

  • 每张表里的记录按时间自动排序
  • 新数据记录的写入变成简单的追加操作
  • 数值按列的变化范围更小
  • 设备 ID、标签不会重复存储

这样的设计让 TDengine 在数据压缩率上远超其他时序数据库,同时,也便于数据的管理和查询。

可配置压缩算法

从 TDengine 3.3.0.0 版本开始,TDengine 提供了更高级的压缩功能,用户可以在建表时针对每一列配置是否进行压缩、以及使用的压缩算法和压缩级别。

  • 第一级压缩支持多种编码方法,可扩充, 包括 simple8b、delta-i、delta-d、bit-packing、disabled
  • 第二级压缩支持多种压缩算法,可扩充,包括 lz4、zlib、zstd、tsz、xz、disabled
  • 压缩等级支持 高、中、低三种

详见《数据压缩》。

存储压缩算法增强后,TDengine 的压缩比预期可再提升一倍以上。

多级存储,按热度匹配最优介质

在工业互联网中,数据多级存储至关重要,因为它能够根据数据的价值和使用频率,将数据有效地分配到不同的存储介质上。这样的策略不仅有助于应对海量数据的挑战,优化存储资源,降低成本,还能确保数据的安全性和合规性,同时促进数据的共享和流通,从而提高整个工业系统的效率和响应速度。

TDengine 是一款 AI 原生的工业数据平台,它通过多级存储机制来优化数据存储效率和成本。

存储成本砍到 1/10?TDengine 的极致压缩与多级存储 - TDengine Database 时序数据库

  • 热数据(Hot Data) :存储在RAM(缓存)中,通常指的是最近一小时内的数据。这部分数据访问频率高,需要快速读写。
  • 温数据(Warm Data) :存储在SSD(Tier 0)上,涵盖最近10天内的数据。相比热数据,温数据的访问频率较低,但仍需较快的读取速度。
  • 冷数据(Cold Data) :存储在HDD(Tier 1)上,包括最近6个月的数据。这类数据访问频率进一步降低,可以使用成本更低的存储介质。
  • 冻结数据(Frozen Data) :存储在S3(Tier 2)上,通常是最近3年的数据。这部分数据访问频率最低,适合长期存储。

例如,在一个工业制造企业中,实时监控的传感器数据(如温度、压力等)会被视为热数据,需要实时分析,因此存储在 RAM 中以实现快速访问;过去一周的生产线数据可能不需要实时分析,但仍可能用于近期的性能评估,因此作为温数据存储在 SSD 上;过去几个月的质量控制记录,可能偶尔用于趋势分析和报告,作为冷数据存储在 HDD 上;对于需要遵守法规要求保留多年记录的数据,如安全事故记录,可以作为冻结数据存储在成本更低的 S3 服务上。

小结

通过高压缩率 + 多级存储的组合方案,TDengine 实现了从压缩到存储的全方位成本优化:先进的压缩技术将时序数据压缩至原始大小的 1/10,灵活的多级存储策略让不同热度的数据匹配最经济的存储介质。两者叠加,既保证了热数据的访问性能,又大幅降低了冷数据和冻结数据的长期存储成本,最终让企业在保留完整数据价值的同时,将整体存储成本削减至原来的 1/10,为海量时序数据的长期留存和高效分析提供了经济可行的解决方案。