文件特点

只读性

sstable文件为compaction的结果原子性的产生,在其余时间是只读的。

完整性

一个sstable文件,其辅助数据:

  • 索引数据
  • 过滤数据

都直接存储于同一个文件中。当读取是需要使用这些辅助数据时,无须额外的磁盘读取;当sstable文件需要删除时,无须额外的数据删除。简要地说,辅助数据随着文件一起创建和销毁。

并发访问友好性

由于sstable文件具有只读性,因此不存在同一个文件的读写冲突。

leveldb采用引用计数维护每个文件的引用情况,当一个文件的计数值大于0时,对此文件的删除动作会等到该文件被释放时才进行,因此实现了无锁情况下的并发访问。

Cache一致性

sstable文件为只读的,因此cache中的数据永远于sstable文件中的数据保持一致。