Berkeley DB是一个优秀的数据库存储引擎,虽然它比起那些大块头的DBMS来说显的很小,但是size并不与能力呈正比,Berkeley DB拥有那些大块头DBMS的存储引擎所拥有的全部功能,而且做得还不错。哪些大块头之所以大,很大程度是
对于数据库管理系统的设计技术感兴趣的同行们来说,学习Berkeley DB是一个很好的开始,因为Berkeley DB全面地拥有一个DBMS的存储引擎应该有的全部功能,而且由于它自身有清晰的结构,学习它你可以容易理解存储引擎应该有哪些模块,每个模块如何工作,模块之间如何协作来完成存储引擎的功能。事实上,Berkeley DB是深入学习理解数据库存储引擎设计和实现技术的优秀范例,当你理解了Berkeley DB内核之后,就可以举一反三,轻易理解其他DBMS内核。
当你熟练地掌握Berkeley DB的用法之后,可能你会想,Berkeley DB的这些很cool的功能是如何实现的。我当时就是这样。不过,Oracle内部也没有详细的Berkeley DB开发文档,所有的技术细节都积累在每个人的脑袋里面,以及记录每个大大小小的问题的解决方案的讨论记录中。于是,处于兴趣和自己工作方便,我在闲暇的时候会阅读bdb的源代码,并且为关键函数,关键算法和功能实现写文档,总结起来就是我自己的“Berkeley DB内核源码分析”。通过这样的分析,可以掌握bdb的技术细节,学习到通用的数据库存储引擎的设计和实现方法,以及很多bdb特有的很好的设计思路和方法。
国内真正懂数据库内核并且做过数据库内核开发的人太少了,在近期我们方正的招聘中可以深切地感受到这一点。 这种现状应该改变,不然我国在基础软件方面就无法拥有自己的开发人才,更提不上什么世界领先了。 我愿意尽自己的微薄之力,在后面会分若干篇文章贡献出我的“Berkeley DB源码分析”,请大家关注。要提醒的是,只有把Berkeley DB的功能和用法熟记于心之后,才好理解那些内核分析。也就是要把bdb的参考文档和API文档熟记于心,并且使用bdb的API做过一定时间的实际开发之后,再花时间去理解内核。