boltdb 源码分析-数据结构-1

lrita · · 1515 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

boltdb 数据结构

boltdb暴露给用户的数据概念较少,只有以下:

  • Options 初始化boltdb时的相关配置选择;
  • DB 整个boltdb的持有者,跟boltdb相关操作都要通过调用其方法发起,是boltdb的一个抽象;
  • Stats 调用DB.Stats()方法返回的数据结构,内包含一些boltdb内部的计数信息,可以供用户查看;
  • Bucket 类似于的一个概念,在boltdb相关数据必须存在一个Bucket下,不同Bucket下的数据相互隔离,每个Bucket下 有一个单调递增的Sequence,类似于自增主键;
  • BucketStats Bucket的一些统计信息;
  • Tx boltdb的事务数据结构,在boltdb中,全部的对数据的操作必须发生在一个事务之内,boltdb的并发读取都在此实现;
  • Cursor 是内部B-TREE的一个迭代器,用于遍历数据库,提供First/Last/Seek等操作;

还有一些内部数据结构,帮助实现一些内部逻辑:

  • node 用来存储每个Bucket中的一部分Key-Value,每个Bucket中的node组织成一个B-TREE;
  • inode 记录Key-Value对的数据结构,每个node内包含一个inode数组,inode是K-V在内存中缓存的记录,该记录落到磁盘上 时,记录为leafPageElement
  • leafPageElement 磁盘上记录具体Key-Value的索引;
  • page 用户记录持久化文件中每个区域的重要信息,同时page分为很多种类,不同page存储不同的数据信息;

有疑问加站长微信联系(非本文作者)

本文来自:源代码

感谢作者:lrita

查看原文:boltdb 源码分析-数据结构-1

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

1515 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传