第二节 为什么要分析boltdb?
前文介绍完了什么是boltdb。那我们先扪心自问一下,为什么要学习、分析boltdb呢?闲的吗?
答案:当然不是。我们先看看其他几个人对这个问题是如何答复的。
github用户ZhengHe-MD是这么答复的:
要达到好的学习效果,就要有输出。以我平时的工作节奏,在闲暇时间依葫芦画瓢写一个键值数据库不太现实。于是我选择将自己对源码阅读心得系统地记录下来, 最终整理成本系列文章,旨在尽我所能正确地描述 boltDB。恰好我在多次尝试在网上寻找相关内容后,发现网上大多数的文章、视频仅仅是介绍 boltDB 的用法和特性。因此,也许本系列文章可以作为它们以及 boltDB 官方文档 的补充,帮助想了解它的人更快地、深入地了解 boltDB。 如果你和我一样是初学者,相信它对你会有所帮助;如果你是一名经验丰富的数据库工程师,也许本系列文章对你来说没有太多新意。
微信公众号作者TheFutureIsOurs是这么答复的: boltdb源码阅读
最近抽时间看了boltdb的源码,代码量不大(大概4000行左右),而且支持事务,结构也很清晰,由于比较稳定,已经归档,确实是学习数据库的最佳选择。 而且不少出名的开源项目在使用它,比如etcd,InfluxDB等。 本文记录下笔者在阅读源码后了解到的其工作原理,以留备忘。
下面我来以自身的角度来回答下这个问题:
首先在互联网里面,所有的系统、软件都离不开数据。而提到数据,无非我们就会想到数据的存储和数据检索。这些功能不就是一个数据库最基本的吗。从而数据库在计算机的世界里面 有着无比重要的位置。作为一个有梦想的程序员,总是想知其然并知其所以然。这个是驱动我决定看源码的原因之一。
其次最近在组里高涨的系统学习mysql、redis的氛围下,我也加入了阵营。想着把这两块知识好好消化、整理一番。尤其是mysql,大家主要还是以核心学习innodb存储引擎为目标。本人 也不例外,在我看完了从跟上理解mysql后。整体上对innodb有了宏观和微观的了解和认识,但是更近一步去看mysql的代码。有几个难点:1.本人项目主要以golang为主。说实话看 c和c++的项目或多或少有些理解难度;2.mysql作为上古神兽,虽然功能很完善,但是要想短期内看完源码基本上是不可能的,而工作之余的时间有限,因此性价比极低。而boltdb完美的符合了 我的这两个要求。所以这就是选择boltdb的第二个原因,也是一个主要原因。
主要还是想通过分析这个项目,在下面三个方面有所提升。
- 一方面让自己能加深原先学习的理论知识;
- 另外一方面也能真正的了解工程上是如何运用的,理论结合实践,然后对存储引擎有一个清晰的认识;
- 最后也是希望借助这个项目开启个人探索存储方向的大门。
介绍完了学习bolt是什么?为什么要分析boltdb后,我们就正式进入主题了。让我们先以一个简单例子认识下boltdb。