基于LSM构建分布式KV存储(LSM简介)

554 阅读1分钟

B+树

这里就不做过多的介绍,相信用MySQL的同学习肯定都了解过,下面是一棵B+树例子
image.png

B+树最大的性能问题是会产生大量的随机IO,在机械硬盘时代是非常不友好的,磁盘寻道速度会直接影响整理数据结构写性能。B/B+树提供高效读性能,写性能不是很好;

LSM

全称是Log Structured Merge Tree,它的优势是通过预先将key排序存储,充分利用机械硬盘循序读写优势;目前,LSM 被很多存储产品作为存储结构,比如 Apache HBase、LevelDB、RocksDB等。2006年,Google 发表了BigTable中也提高使用LSM作为后台存储结构。以下是LSM原理:

image.png

LSM通过避免随机操作写动作提供高效写入性能,读操作会涉及内存数、硬盘Store文件对性能有一定影响,写放大操作会影响硬盘寿命;

现有开源LSM实现(还在活跃)

GIT接口语言License选型说明
levelDBgithub.com/google/leve…C++BSD-3-Clause代码没怎么更新,性能不如RocksDB
golevelDBgithub.com/syndtr/gole…GOBSD-2-Clause代码没怎么更新
RocksDBgithub.com/facebook/ro…C++/JavaGPL-V2很活跃,性能遗留
Pebblegithub.com/cockroachdb…GoBSD-3-Clause很活跃,作为cockroachdb后端
BadgerDBgithub.com/dgraph-io/b…GoApache-2.0比较活跃

下期介绍现有一下厂商已经实现的分布式KV存储项目

参照资料列表:
blog.csdn.net/li166985259…

zhuanlan.zhihu.com/p/415799237

blog.csdn.net/huxinglixin…

lequ7.com/guan-yu-nos…

cloud.tencent.com/developer/a…