Doris 数据分布与存储机制学习笔记(简化版)
Doris底层存储引擎------基于LSM-Tree的设计。
- Memtable = 内存中的快速笔记本
- SSTable = 磁盘上的正式文件
- Compaction = 定期整理文件,优化存储
一、核心流程
- 写入流程(重点!)
数据写入 → 内存Memtable → 磁盘SSTable → Compaction合并
- 读取流程
查询请求 → 检查Memtable → 检查SSTable → 合并结果
二、详细解释
- 写入过程
Memtable:内存中的有序数据结构(像快速笔记本)
Flush:当Memtable写满后,批量写入磁盘(像把笔记本内容整理成正式文件)
SSTable:磁盘上的有序数据文件(Sorted Strings Table)
- Compaction合并
Minor Compaction:合并小文件,快速响应
Major Compaction:深度合并,优化存储
自动调度:后台自动执行,不影响正常使用
三、为什么这样设计?
- 写入快的原因
内存写入:内存速度快,像在笔记本上写字
批量Flush:一次性写入磁盘,减少IO次数
顺序写:磁盘顺序写比随机写快很多
- 读取时的处理
多版本合并:需要合并Memtable和SSTable的数据
布隆过滤器:快速判断数据是否存在,避免无效读取
四、带来的好处
写入性能高:适合高频写入场景
存储优化:列式存储+压缩,节省空间
高并发支持:多线程同时写入,互不干扰
五、可能的问题
读放大:读取时需要合并多个文件
写放大:Compaction过程中数据被多次重写
Compaction性能:合并过程可能影响查询
六、实际效果
写入:像在笔记本上快速记录,然后整理成正式文件
读取:需要查看笔记本和文件,然后合并结果
这种设计让Doris在写入性能和存储效率上表现出色,虽然读取需要合并,但通过多种技术手段已经很好地解决了这个问题!