kkzfl22 / LSM

理解LSM(Log-structure Merge Tree)而写的Demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

从Hash索引到LSM树

Hash索引虽然简单高效,但是有如下两个限制

  • 必须在内存中维护Hash索引。如果选择在磁盘上实现Hash索引,那么将会带来大量的磁盘随机读写,导致性能的急剧下降。另外,随着compact机制的引入,数据被分散在多个segment file中存储,我们不得不为每个segment file维护一份Hash索引,这就导致Hash索引的内存占用量不断增加,给系统带来了很大的内存压力。
  • 区间查询非常低效。比如,当需要查询数据库中范围在[key0000, key9999]之间的所有key时,必须遍历索引中所有的元素,然后找到符合要求的key。

如何解决呢?我们需要引入SSTable(sort string table)这种存储结构[未实现]

About

理解LSM(Log-structure Merge Tree)而写的Demo


Languages

Language:Java 100.0%