打造“云边一体化”,时序时空数据库TSDB技术原理深度揭秘

本文深入探讨了时序数据库中压缩算法的重要性,详细介绍了整数压缩(如Delta-encoding、Simple-8b和Run-length encoding)、浮点数压缩(如XOR-based compression)以及字典压缩等技术,展示了如何通过这些算法实现90%以上的存储空间节省。文章以PostgreSQL为基础,阐述了如何在实践中结合不同数据类型应用这些压缩方法。

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

作者:张川、杨维亮

随着用户对时序数据存放成本的要求进一步提高,时序数据存储就成为了时序数据库的必修课之一,当前时序数据库采用Delta-delta, Simple-8b , XOR-base 等压缩算法,实现了释放90%的存储空间。

所有计算都基于一个简单的原理:所有的信息都是用二进制表示的。虽然存储资源的价格越来越廉价,但是计算资源毕竟不是免费的。我们如果可能更加有效的存储这些信息, 我们就可以用在存储、计算和带宽上面节省更多的资源, 即压缩的定义:按照特定的编码机制用比未经编码少的数据位元(或者其它信息相关的单位)表示信息的过程

近几十年来, 压缩算法始终在计算机领域扮演重要的角色。而压缩这个概念本身则更为古老, “1838年发明的摩尔斯密码是最早的应用压缩算法实现,对于英语中最为普遍的字母‘t’和‘e’使用较短的摩尔斯密码”。

在本文中, 我们将揭开压缩算法的面纱,向大家介绍几种用于时序数据的算法,以及如何把他们应用项目之中。我们将解释如何把这些算法应用到时序数据库中从而节省了90%以上的存储空间。

1,压缩算法对于时序数据的重要性

时序数据来源多种多样,无论是在 IT系统监控、网络数据分析还是在产品/用户行为分析以及税务系统中, 时序数据都贯穿整个数据线, 对于更好实时了解系统和应用很有帮助。

对于时序数据来说, 存储的覆盖范围始终是一个很重要的挑战。 为了能够更好的分析这些数据的变化, 我们每次获得新的数据之后,并不会更新数据本身, 而是把这些作为新数据插入进数据库。 有些时序系统在新数据写入方面负载很大(如IT系统的监控,物联网传感器数据等), 其时序数据本身都达到了TB级别。

为了能够高效且高速的处理这些数据, 我们选择了目前最为高效的时序压缩算法,并且把他们应用到时序数据库中。根据之前的测试, 时序数据库最终可以达到90%以上无损压缩。 这同时也意味着减少了存储方面的大笔开销。 而且压缩算法还可以提高性能: 数据本身占用的空间少意味着查询时需要请求硬盘空间也少。

2,时序数据压缩算法

以下是按数据类型的时序数据压缩算法:

整型数据:

  • Delta encoding
  • Delta-of-delta encoding
  • Simple-8b
  • Run-length encoding

浮点数据

  • XOR-based compression

未知数据

  • Dictionary compression (字典法)

3,整数压缩

Delta-encoding

Delta-encoding / Delta compression , 通过只存储数据库的差值以及一个或多参考值来节省存储空间。适用于大量冗余数据的情况, 比如版本化的文件系统. (各种网盘)

Delta-encoding很适合压缩时序数据: 我们可以用很少空间存储一个点的数据, 然后其余数据只需要存储与之前数据的差值即可。从某种意义上来说,带版本的文件本身也是时序数据, 这里就不浪费时间展开了。举个例子, 如果我们来收集CPU,内存,温度,湿度等数据,以整数的方式存储数据. 原始数据格式如下:

| time                | cpu | mem_free_bytes | temperature | humidity |

|---------------------|-----|----------------|-------------|----------|

| 2020-04-01 10:00:00 | 82  | 1,073,741,824  | 80          | 25       |

| 2020-04-01 10:05:00 | 98  | 858,993,459    | 81          | 25       |

| 2020-04-01 10:05:00 | 98  | 858,904,583    | 81          | 25       |

通过 delta-encoding算法, 我们只需要把每条数据与之前相比的变化值存储即可, 这样使用的空间更小:

| time                | cpu | mem_free_bytes | temperature | humidity |

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值