介绍一下TiDB、RocksDb、levelDB、LSM 树、SSTable。

LSM 树(Log-Structured Merge-Tree)

  • 核心原理 :通过将随机写转换为顺序写优化写入性能,适用于写密集型场景。数据首先写入内存中的 MemTable (有序结构,如跳表),当达到阈值后转为 Immutable MemTable ,再刷入磁盘形成 SSTable。通过分层合并(Compaction)清理冗余数据。
  • 关键特点
    • 写放大:合并操作可能导致重复写入,但顺序写优势显著(如机械盘顺序写性能是随机写的千倍)。
    • 读放大:需从内存到多层级磁盘文件逐层查找,但通过布隆过滤器和索引优化。
    • 分层结构:数据从高层(热数据)到低层(冷数据)逐步下沉,低层容量按指数级增长(如每层容量是上一层的10倍)。

SSTable(Sorted String Table)

  • 定义:磁盘上的有序键值文件,不可变且全局有序(除Level 0外),每个文件包含数据块、索引块和布隆过滤器。
  • 优化手段
    • 索引加速:通过稀疏索引快速定位数据块。
    • 布隆过滤器:减少无效磁盘I/O,判断键是否存在于文件中。
    • 压缩:使用Snappy/ZSTD等算法减少存储空间和传输带宽。

LevelDB

  • 定位:Google开源的轻量级单机KV存储引擎,基于LSM树。
  • 核心设计
    • 内存结构:Active MemTable(写入口)和Immutable MemTable(待刷盘)。
    • Compaction策略:分层合并,Level 0允许文件间Key重叠,其他层级全局有序。
    • 限制:单线程Compaction、无多版本控制,适合嵌入式或小规模场景。
  • 典型应用:Chrome浏览器本地存储、轻量级NoSQL场景。

RocksDB

  • 定位:Facebook优化的LevelDB升级版,支持企业级高并发和大数据量。
  • 关键优化
    • 并行Compaction:多线程加速合并,降低写停顿。
    • 冷热分离:热数据优先保留在低层,冷数据下沉至高层。
    • 灵活配置:支持多种压缩算法、速率限制、TTL等。
    • 增量备份:支持Checkpoint和增量快照。
  • 应用场景:MySQL底层存储(如TiDB)、分布式系统(如CockroachDB)、消息队列(如Kafka的RocksDB状态存储)。

TiDB

  • 定位:国产分布式HTAP数据库,兼容MySQL协议,底层存储基于RocksDB。
  • 架构组件
    • TiKV:分布式KV存储引擎,数据按Region分片,基于Raft协议保证一致性。
    • PD(Placement Driver):全局调度器,管理元数据、负载均衡和故障恢复。
    • TiSpark:集成Spark处理复杂OLAP查询。
  • 核心优势
    • 水平扩展:通过添加节点实现计算和存储分离扩容。
    • HTAP能力:行存(TiKV)支持OLTP,列存(TiFlash)支持OLAP。
    • 金融级可靠性:支持分布式事务(Percolator协议)和多副本强一致。

对比与关联

维度 LevelDB RocksDB TiDB
架构 单机嵌入式 单机/分布式扩展 分布式HTAP
Compaction 单线程,分层合并 多线程,冷热分离 基于RocksDB,Region分片
适用场景 小规模、低并发 高吞吐、企业级存储 大规模OLTP+OLAP混合负载
核心优化 基础LSM实现 多级缓存、速率控制 全局调度、行列混存

典型应用场景

  1. LSM树:写密集型场景(日志存储、时序数据)。
  2. LevelDB:浏览器本地存储、小型嵌入式系统。
  3. RocksDB:分布式数据库底层引擎(如TiKV)、消息队列状态存储。
  4. TiDB:金融级分布式事务(如支付系统)、实时分析(如电商大促监控)。
相关推荐
观测云2 天前
TiDB 可观测性最佳实践
tidb
赵渝强老师5 天前
【赵渝强老师】使用TiDB的审计日志
数据库·tidb
可观测性用观测云7 天前
TiDB 可观测性最佳实践
tidb
Sirius Wu7 天前
TiDB 深度解析与 K8S 实战指南
容器·kubernetes·tidb
PingCAP8 天前
PingCAP“一号员工”唐刘:回顾我与 TiDB 的十年成长之旅
数据库·tidb
转转技术团队10 天前
告别人工搬运!TiDB/MySQL双库同步工具如何为业务提效100%?
mysql·tidb·测试
MiniFlyZt15 天前
分布式数据库TiDB:架构、核心特性与生产实践(分库分表)
java·数据库·分布式·spring cloud·微服务·tidb
PingCAP15 天前
从单一到多活,麦当劳中国的数据库架构迁移实战
数据库·tidb
XMYX-022 天前
TiDB 部署指南(单机模式)& CentOS 7 安装 MariaDB 教程
centos·tidb·mariadb
PingCAP25 天前
从 DB-Engines 排名攀升看 TiDB 全球突破之路
数据库·人工智能·tidb