bitcask

A Log-Structured Hash Table for KV storage
Riak默认采用的存储引擎就是bitcask,在开发bitcask的时候,LevelDB还没有开放出来
刚听到的消息,Riak的公司basho,已经离解散不远了,CTO已经离职,公司好像只有1、2人了

Data

data files

older data files will be merged and compacted

data entry

Index

reside in mem

hash index

读取file_id对应文件的value_pos开始的value_sz个字节,就得到了我们需要的value值

Write

1
2
append to active data file
update hash table index in memory

Hint File

为了冷启动时加快index生成速度:重建hash table时,不需要full scan data files,只scan much smaller hint file

hint file

Issues

  • 由于index是包含所有key的,因此可以容纳的数据量跟内存有很大关系,每个index至少占40B
  • 不支持range/sort操作
    如果把hash table变成skiplist,而merge sort older data files,就可以支持range了
Share Comments