Contents

深入浅出boltdb —— 0x00 引言

本文为原创文章,转载请严格遵守CC BY-NC-SA协议

0. 引言

boltDB是一个完全由go语言编写的基于B+树的kv数据库,其完全支持事务的ACID特性,整个数据库只有一个文件,且有较高的读性能与加载时间。etcd的后端存储使用的便是基于boltdb优化的kv存储etcd-io/bbolt

boltdb的源码非常适合用来学习B+Tree的实现。boltdb支持完整的事务ACID特性且实现方式较为简单,也适合存储与数据库初学者学习事务与简单的MVCC实现。另外,boltdb完全由go语言编写,因此其对于go语言或其它需要通过unsafe方式管理堆外内存的开发者,也是一个很好的示例。

本系列文章将自底向上地介绍并分析boltdb的实现,较为详细地分析了其源码功能。本文源码基于已归档的boltdb/bolt项目(commit#fd01fc)。

本系列文章主要着眼于boltdb的设计、源码实现与相关知识,在阅读签,读者需要:

  1. 学习go语言的基本语法,及unsafe的使用方式。
  2. 详细阅读boltdb的README,对boltdb有初步认识。

与前一个《深入浅出etcd/raft》系列相比,boltdb更多偏向工程实现而非算法,因此本系列不会逐行地分析每一行源码。

1. 目录

2. 施工路线图

  • 引言
  • 存储
  • 缓存
  • B+Tree
  • bucket
  • cursor
  • 事务
  • db