当前位置: 首页 > news >正文

个人可以做网站导航广州建设专业网站

个人可以做网站导航,广州建设专业网站,互联网销售怎么做,php做商品网站1. mainfest文件的作用 mainfest文件是记录lsm tree中的各层tables表的创建删除记录的一个日志文件,主要的作用是badger数据库重启后,重新恢复内存中的各层tables表 2、内容结构 先是8个字节的魔数,魔数的结构如下 ----------------------…

1. mainfest文件的作用

mainfest文件是记录lsm tree中的各层tables表的创建删除记录的一个日志文件,主要的作用是badger数据库重启后,重新恢复内存中的各层tables表

2、内容结构

  • 先是8个字节的魔数,魔数的结构如下
    ±----------------------------±------------------------±----------------------±-----------------+
    | magicText (4 bytes) | externalMagic (2 bytes) | badgerMagic (2 bytes) |
    ±----------------------------±------------------------±----------------------±-----------------+
  • 再就是pb.ManifestChangeSet结构体进行pb编码后的长度4字节和pb编码后的数据流的checksum
    ±---------------------------±-------------------------±-----------------+
    | pbBufLen(4bytes) | checksum(4bytes) | bpBuf
    ±---------------------------±-------------------------±-----------------+

3、pb.ManifestChangeSet

type ManifestChange struct {Id             uint64                   `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`Op             ManifestChange_Operation `protobuf:"varint,2,opt,name=Op,proto3,enum=badgerpb3.ManifestChange_Operation" json:"Op,omitempty"`Level          uint32                   `protobuf:"varint,3,opt,name=Level,proto3" json:"Level,omitempty"`KeyId          uint64                   `protobuf:"varint,4,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`EncryptionAlgo EncryptionAlgo           `protobuf:"varint,5,opt,name=encryption_algo,json=encryptionAlgo,proto3,enum=badgerpb3.EncryptionAlgo" json:"encryption_algo,omitempty"`Compression    uint32                   `protobuf:"varint,6,opt,name=compression,proto3" json:"compression,omitempty"`
}type ManifestChangeSet struct {// A set of changes that are applied atomically.Changes []*ManifestChange `protobuf:"bytes,1,rep,name=changes,proto3" json:"changes,omitempty"`
}

changes 是一个切片,把sst文件的每一次创建和删除都记录下来

4、mainfest实现原子性

const (ManifestFilename                  = "MANIFEST"manifestRewriteFilename           = "MANIFEST-REWRITE"
  • helpRewrite使用两个文件来实现原子性,每次LSM tree 的的sst文件要创建或删除的时候,都是先创建MANIFEST-REWRITE文件,且使用O_TRUNC参数让MANIFEST-REWRITE文件为空文件(清理上次没写完就恰好断电的情况造成MANIFEST-REWRITE是一个脏文件),等数据写都都落盘,存储再MANIFEST-REWRITE文件后,在调用rename函数,把MANIFEST-REWRITE文件改名为MANIFEST-REWRITE,最后修改内存中存储的lsm tree中记录的sst表。

  • ReplayManifestFile函数在回放数据的时候,是在重新打开数据库,数据库目录存在MANIFEST就直接从MANIFEST来读取,即使上次在写MANIFEST-REWRITE的发生断电,内存中的lsm tree的sst表修改是在后的,不会执行,不影响数据可靠性,等下次重新写MANIFEST文件的时候,就会重新把上次的脏数据擦除。

5、和mainfest相关的函数

func (mf *manifestFile) rewrite() error   //在lsm tree 任意层要发生变化了调用
func helpRewrite(dir string, m *Manifest, extMagic uint16) (*os.File, int, error)//第一次创建数据和rewrite调用
func ReplayManifestFile(fp *os.File, extMagic uint16)//非第一次打开数据的时候调用,用来重新构建数据lsm tree的各个层的sst 表
http://www.yayakq.cn/news/167163/

相关文章:

  • 设计网站思路如何写网页图片提取在线
  • 做最好的导航网站房山企业网站建设公司
  • 后台的企业网站模板wordpress支持论坛
  • 兰州建设网站的网站阿里云1m宽带做网站卡吗
  • 备案时网站名称可以重复吗莆田哪里有学做网站的
  • 珠海正规网站制作系统广州市数商云网络科技有限公司
  • 网站攻击一般有那些wordpress萌主题下载
  • 网站开发详细报价wordpress媒体库查看404
  • 做购物网站的费用推广模式怎么写
  • 个人工作室网站设计怎样做网站营销
  • 创新的盐城网站开发无锡网站设计厂家
  • 郴州网站推广c 网站开发模板
  • 做盗版网站的国际购物app
  • 为什么谷歌网站打不开如何配置iis网站
  • 自助建站平台便宜苏州市现代建设咨询管理公司
  • 广州网站设计品牌建设归哪个部门管
  • 国外网站访问速度慢网页制作网站首页
  • 绿色模板网站简单的装x编程代码
  • asp添加网站管理员ps工具设计网站
  • 咨询网站建设wordpress标签 扩展
  • 用dw做网站图片的基本尺寸html5搭建网页游戏
  • 监控企业网站模板获取网站访问者qq号
  • 网站建设的基本准则是什么做二手车网站需要什么手续
  • 网站建设做什么会计分录网络工程主要是干嘛的
  • 北京做网站设计公司百万网址导航
  • 新网站如何做快照中国交建总承包公司官网
  • 做网站报价明细表民企厂房建设招标网站
  • 注册个网站怎么注册中国式现代化推进中华民族伟大复兴
  • 有没有做翻译赚钱的网站做网站常见问题模板
  • 大红门做网站成品图片的网站在哪里找