WiscKey 的提出,主要是为了优化 LSM-Tree 的写放大问题。此前已经有不少论文讨论过这个问题,如 LSM-trie 和 PebblesDB,但是大部分优化方法都不是很彻底——简单说就是,优化效果太差,或者不够通用。WiscKey 提出的是一种比较通用、效果明显且简单易懂的方法。
其实 WiscKey 优化写放大的原理非常简单:在 LSM-Tree 上做 key 和 value 的分离存储。
LSM-Tree 写放大的根本原因是,compaction 时为了保证数据有序进行大量数据(key 和 value)重写。实际上,需要保持有序的只有 key,如果将 key 和 value 分开存储,compaction 重写数据的时候,就只需要重写 key(和 value 的位置,简称 vpos)。这在 key size (简称 ksize)远小于 value size (简称 vsize)的场景(现实场景基本都是这样)降低写放大的效果十分明显。
Read full article from WiscKey:LSM-Tree 写放大优化 - 简书
No comments:
Post a Comment