LSMT 存储引擎浅析|青训营笔记

353 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第13天

LSMT 存储引擎浅析

LSMT 与存储引擎介绍

LSMT是通过Append-only Write + 择机Compact来围护结构的索引树

dacfc38d52c73691ef995a5e85a5628.png

LSMT 与存储引擎优势与实现

  • 在 B+Tree 中,数据插入是原地更新的
  • B+Tree 在发生不平衡或者节点容量到达阈值后,必须立即进行分裂来平衡。

为什么要采用LSMT模型

  • 在计算机存储乃至整个工程界都在利用Indirection处理资源的不对称性
  • 存储引擎面对的资源不对称性在不同时期是不同的

LSMT 模型理论分析

Cloud-Native LSMT Storage Engine-HBase

  • RocksDB是单机存储引擎,HBase比RocksDB更云原生,SST直接存储于HDFS上。
  • 二者在理论存储模型上都是LSMT

aa96d3a15b9391a0f8e7455dfa3e8e2.png

LSMT模型算法复杂度分析:

  1. T: size ratio,每层LSMT 比上一层大多少,L0大小为1,则L1大小为T,L2为TA2,以此类推
  2. L: level num, LSMT层数B:每个最小的10单位能装载多少条记录
  3. M:每个BloomFilter有多少 bits
  4. N:每个BloomFilter 生成时用了多少条 Key
  5. S:区间查询的记录数量

LSMT 与存储引擎调优案例

LSMT存储引擎调优案例-TerarkDB:

  • TerarkDB aka LavakV 是字节跳动内部基于R ocksDB深度定制优化的自研LSMT存储引擎,其中完全自研的 KV 分离功能 上线后取得了巨大的收益。
  • KV分商受启发于论文 WiscKey: Separating Keys from Values in SsD-conscious Storage,概括起来就是Value 较长的记录的Value 单独存储

LSMT存储引擎调优案例-TerarkDB & Flink:

  • 收益结论:

    • 平均CPU开销在 3个作业上降低了 26%~39%
    • 峰值CPU开销在广告作业上有明显的收益,降低了 67%
    • 平均容量开销在3个作业上降低了17%~31.2%
    • 直播业务某集群容量不收缩,TerarkDB的 schedule TTL GC彻底解决了该问题

总结:

  • 单机数据库的 ACID 特性依赖于存储引擎

  • LSMT 存储引擎的顺序写特性更适合现代计算机体系结构

  • LSMT 和 B+Tree 可以用同一模型描述并互相转化

  • Level Compaction 策略,降低了读放大和空间放大,增加了写放大

  • Tier Compaction 策略,降低了写放大,增大了读放大和空间放大

  • 分布式 KV 存储,如 HBase,背后的理论模型与单机存储引擎 RocksDB 一样都是 LSMT