使用 Golang 语言实现一个简单的 Bitcask 引擎的文件存储系统 (查看原文)

bitcask是bashro的设计的一个底层存储引擎,主要应用于Riak产品中(ps:国内的beansdb的底层存储引擎也是使用bitcask,分布式上也是使用dynamo,并且他...

laohanlinux.github.io   
评论 (2)
Thumb

hefju 2016-05-02 19:16

在更新数据时,也是把新数据追加到文件的后面,然后更新一下数据的文件指针映射即可. 那么不回收旧数据就浪费很多空间了?
Thumb

代码ldd 2016-05-02 20:18

@heju 数据的浪费空间取决于用户的使用,Bitcask会记录每个key的操作,比如用户删除了key=a的数据,Bitcask就会把这个删除的动作追加到Bitcask文件中,并不会真正删除数据,这些数据的实际空间在merge发生时,才会被清理掉。
Post wxa image%2fa05592d4c07c4405be9964b998d7f05c 用微信扫描
小程序码阅读原文

开发者头条

程序员分享平台