聊一聊B+树、LSM树与TDengine存储引擎的关系

存储引擎是数据库的重要组成部分。之前我们有专门的课程讲过《数据库中的经典算法与数据结构》(Classical Algorithms and Data Structures in Databases),感兴趣的同学可以到官网了解:https://www.taosdata.com/techtalk/7162.html

拿 TDengine 来说,强大的存储引擎提供了高效合理的数据读写、数据备份、流式处理等功能,保证了整个时序数据处理平台的高性能,并能以最经济的方式使用系统资源。

相比于 TDengine 1.0 和 TDengine 2.0 来说,TDengine 3.0 更注重各种场景下的存储和查询效率,因此,TDengine 3.0 的存储引擎也进行了技术优化与升级。整个更新可以概括为三大块:

  1. TQ,基于 WAL 的消息队列
  2. META,基于 TDB 的元数据存储引擎
  3. TSDB,用来存储时序数据的类 LSM 存储引擎

万变不离其宗,在 TDengine 3.0 存储引擎的升级改造中,也能找到这些经典数据结构/存储结构的影子。

B+树是一种经典的数据结构,相比平衡二叉树,降低了树高,从而能够减少 IO 次数,因此更适用于硬盘。但写入过程中却可能导致节点的分裂,产生大量随机IO,导致写入性能的降低。像 SQLite、MySQL、PostgreSQL 等数据库都使用了B/B+ 树。


LSM 树,并不像 B+ 树、红黑树一样是一个严格的树状数据结构,它其实是一种存储结构,目前,HBase、LevelDB、RocksDB 这些 NoSQL 存储都是采用的 LSM 树。新一代关系型数据库 TiDB、CockroachDB 也建立在基于 LSM 树的 KV 存储上。

涛思数据联合创始人程洪泽将从 B+ 树、LSM 树聊起,为大家详细介绍 TDengine 3.0 存储引擎的升级改造。

程洪泽,涛思数据联合创始人,TDengine 存储引擎架构师。美国密西根大学 EE 硕士,本科毕业于中科大,中科大郭沫若奖学金获得者,2021 年胡润 U30 创业领袖获得者。主要研究方向为面向物联网的大数据和机器学习技术。

TDengine Database
扫描二维码加小T,
进物联网大数据交流群