• bitcask


    Bitcask模型是一种日志型kv模型。所谓日志型,是指它不直接支持随机写入,而是像日志一样支持追加操作。Bitcask模型将随机写入转化为顺序写入。

    任意时刻,系统中只有一个数据文件支持写入,称为active data file。其余的数据文件都是只读文件,称为older data file。即所有写操作都是对最后更新文件的一个追加。

    除了增加外,删除和更新也全部不随机读写已有文件。删除只是增加一个带删除标志的记录,随后更新索引hash;而更新也是一样。

    文件中的数据结构非常简单,是一条一条的数据写入操作,每一条数据的结构如下:

    上面数据项分别为:后面几项的crc校验值,时间戳,key,value,key的大小,value的大小。
    而数据文件存储的就是连续一条条上面格式的数据,如下图:

    kv之间的映射是通过中间的一个hash结构来处理,包含:记录文件的编号,value长度,value的在文件中的位置和时间戳。

    Bitcask的总体数据结构如下图:

    总体的流程如下:

    为加速重启时建立hash表结构的速度,额外引入了hintfile,它将真实数据内容换成偏移。这样在建立hash时就不需要读数据文件了。

    理解bitcask架构,必须要考虑下面的问题:

    1. bitcask hash表内存占用如何计算?
    2. bitcask 文件读取流程?
    3. bitcask 文件写入流程?
    4. bitcask 文件合并流程?
  • 相关阅读:
    win10去除桌面快捷方式小箭头
    java创建线程的几种方式
    Spring知识点总结
    Myeclipse运行报错:an out of memory error has occurred的解决方法
    vue-cli的使用
    3种jQuery弹出大图效果
    Weixin API -- 微信js接口
    setTimeOut传参数
    PHP的八种数据类型
    99%的人都理解错了HTTP中GET与POST的区别
  • 原文地址:https://www.cnblogs.com/qqmomery/p/4709156.html
Copyright © 2020-2023  润新知