BitcaskDB
Bitcask 介绍
设计方案
Entry
1 | type Entry struct { |
固定大小为 4 + 4 + 2
db_file
将一个文件作为持久化存储介质
1 | type DBFile struct { |
DB
1 | // 数据库的定义 |
Get
首先从内存的indexes
中根据key
获取offset
,即指向value
的地址,然后去文件中读取
Write
采用文件的追加写即可
1 | // 顺序写,写入Entry |
DEL
del
操作是一种特殊的读写,实现采用的是写入一条特殊的删除记录
1 | _, err = db.dbFile.Write(NewEntry(key, nil, DEL)) |
Merge
采用生产者和消费者模式,使用channel作为通信媒介
从旧的文件中生成 entry
, 写到新的文件中去
- 本文标题:BitcaskDB
- 本文作者:codeflysafe
- 创建时间:2022-04-09 16:50:13
- 本文链接:https://codeflysafe.github.io/2022/04/09/BitcaskDB/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论