leveldb operation leveldb的操作分别为Put、Delete、Write、Get、CompactRange、NewIterator、GetSnapshot、 ReleaseSnapshot等。
leveldb Compaction leveldb Compaction 会在以下场景触发:
Version/VersionEdit/VersionSet 当执行一次compaction后,leveldb将在当前版本基础上创建一个新版本,当前版本就变成了 历史版本。还有,如果你创建了一个Iterator,那么该Iterator所依附的版本将不会被leveldb 删除。在leveldb中,Version就代表了一个版本,它包括当前磁盘及内存中的所有文件信息。 在所有的Version中,只有一个是CURRENT。
SSTable
log
MemTable
SkipList 跳跃列表(跳表) 跳跃列表(也称跳表)是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作 需要O(log n)平均时间)。 是一种空间换时间的方法。
Comparator Comparator 是leveldb内部对key、value进行比较排序的实现。
为了节省空间,LevelDB作者设计了一种变长编码方式来表示整型:varint。越小的数字所用的字节数越少。
简介 leveldb是一款google开发的高性能,单机嵌入式k-v存储,广泛被用作各种database engine。
a thread-safe concurrent map for go
lrita's blog
NUMA is a utility library, which is written in go. It help us to write some NUMA-AWARED code.
a TryLock implementation