摘要:基于持久化LSM树的kv存储,将key与value分离减少写放大
性能比起leveldb提升很大
1.introduction
键值存储在很多应用场景中,都越来越重要。
LSM结构比起B树,减少了很多随即写,变成顺序写,提升了性能。而LSM之所以这么成功,是因为与HDD的结合,HDD的顺序IO比起随机IO 快了1000倍。
但随着ssd的使用普及,对这种情况造成了一些变化。
本文思想,在传统LSM结构基础上改进,key,value分离。LSM中只存储key,value存放在日志中。
leveldb的多级sstable,使得对于大型数据库来说,一份数据从level0到level6要写7次。因为HDD随机io和顺序io性能差距了1000倍,只要写放大在1000倍以内,用LSM就是提升速度。
wisckey:
4个关键思想:
1.KV分离,key在LSM中,value在log中
2.对没排序的values,wisckey充分利用了ssd的随机read优势
3.独特的实现了crash一致性和垃圾回收技巧来有效的管理value log
4.wisckey去掉了LSM的log而没有牺牲一致性,优化了性能(减少小写的系统调用开销)。
设计目标:
低写放大,低读放大,SSD优化,特性丰富的api
挑战:
kv的分开要求range查询时,需要随机io,并且使得垃圾回收和crash一致性很有挑战。