B+树
这里就不做过多的介绍,相信用MySQL的同学习肯定都了解过,下面是一棵B+树例子
B+树最大的性能问题是会产生大量的随机IO,在机械硬盘时代是非常不友好的,磁盘寻道速度会直接影响整理数据结构写性能。B/B+树提供高效读性能,写性能不是很好;
LSM
全称是Log Structured Merge Tree,它的优势是通过预先将key排序存储,充分利用机械硬盘循序读写优势;目前,LSM 被很多存储产品作为存储结构,比如 Apache HBase、LevelDB、RocksDB等。2006年,Google 发表了BigTable中也提高使用LSM作为后台存储结构。以下是LSM原理:
LSM通过避免随机操作写动作提供高效写入性能,读操作会涉及内存数、硬盘Store文件对性能有一定影响,写放大操作会影响硬盘寿命;
现有开源LSM实现(还在活跃)
| GIT | 接口语言 | License | 选型说明 | |
|---|---|---|---|---|
| levelDB | github.com/google/leve… | C++ | BSD-3-Clause | 代码没怎么更新,性能不如RocksDB |
| golevelDB | github.com/syndtr/gole… | GO | BSD-2-Clause | 代码没怎么更新 |
| RocksDB | github.com/facebook/ro… | C++/Java | GPL-V2 | 很活跃,性能遗留 |
| Pebble | github.com/cockroachdb… | Go | BSD-3-Clause | 很活跃,作为cockroachdb后端 |
| BadgerDB | github.com/dgraph-io/b… | Go | Apache-2.0 | 比较活跃 |
下期介绍现有一下厂商已经实现的分布式KV存储项目
参照资料列表:
blog.csdn.net/li166985259…