LSM Tree存储格式
(1)LSM Tree是什么
LSM Tree,即日志结构合并树(Log-Structured Merge-Tree),是一种被精心设计的数据结构,常用于处理大量写入的场景。通过对写入操作进行顺序写入优化实现性能提升。LSM tree 是很多数据库内部的核心数据结构。
(2)为什么要用LSM Tree
传统关系型数据库使用B-Tree或一些变体作为存储结构,能高效进行查找,但保存在磁盘中时它也有一个明显的缺陷,那就是逻辑上相离很近但物理却可能相隔很远,这就可能造成大量的磁盘随机读写。随机读写比顺序读写慢很多,为了提升IO性能,我们需要一种能将随机操作变为顺序操作的机制,在海量数据和高吞吐写的场景下,LSM Tree 诞生了,LSM 能解决更快速的写,更快速的读。LSM Tree 通过将数据增删改全部转化为顺序写入从而显著提高写的性能。这个特点在分布式系统上更为看重。
(3)Hubble数据库硬核技术价值
Hubble的LSM tree将随机写转化为顺序写,尽量保持日志型数据库的写性能优势,并提供相对较好的读性能。具体优势如下:
1)当有写操作(或update操作)时,写入位于内存的buffer,内存中通过某种数据结构保持key有序;
2)可以将数据追加写到磁盘Log文件,以备必要时恢复;
3)内存中的数据定时或按固定大小地刷到磁盘,更新操作只不断地写到内存,并不更新磁盘上已有文件;
定时对文件进行合并操作(compaction),消除冗余数据,减少文件数量。