刚才贴了一些文章,都是我之前读Berkeley DB的代码时候记下来的笔记,基于Berkeley DB 4.6 ~ Berkeley DB 4.8版本的代码,不过相信与现在最新的代码差别也不大,有兴趣朋友可以看看。同时如果想要完全理解代码,那么在看我这些分析的同时,可以调试一下bdb代码,按照功能逐一调试。比如想要理解bdb的btree如何插入一条key/data pair,那么就写一小段代码调用该功能然后调试进去单步执行去理解代码。
由于是笔记,后期也没有整理,所以我这个分析写的格式并不规范,而且都是英文(我的工作语言是英语),并且每一篇文章当中也会穿插一些其他模块的功能的分析,有一些还含有一些wiki格式控制字符,汗。。。 这个大家将就看一下吧,呵呵。
我很鼓励大家去分析理解bdb的代码,进而理解和掌握数据库内核的设计和实现方法,也算是对国内的基础软件的研发能力的提升贡献一份自己的绵薄之力。我个人的经验是,要想彻底理解那么多数据库内核的设计思想和理论,最好还是自己动手实践,做一些数据库内核的开发。美国的基础软件研发能力之所以如此之强,并不是他们比我们更聪明,而是他们有实践的机会,这就是所谓的时势造英雄。从上世纪50年代起直到上世纪末,美国的好多大大小小的公司得到了美国的各种政府机构以及私人基金等的支持。Oracle的第一份大笔投入就来自美国的CIA,就连Oracle这个名字都是取自CIA在70年代的一个内部绝密项目的代号,因为那个项目中使用了当时Oralce的第一个版本。有了大笔资金支持,这些小公司可以持续不断地投入大量资金搞研发,通过长期的实践,培养了大量高素质研发人才,这些公司当中很多也脱颖而出成长为跨国集团(虽然大多数小公司死掉了,但是从全局来看,当年美国政府各种机构和基金的投入早就已经取得了巨额回报)。他们的投入获得了回报,现在不管是Oracle,IBM,MS还是Teradata,EMC等等,在基础软件的市场份额都是统治地位的,其利润之高想必大家很多人也有印象,想想你们做的应用系统中,买数据库等基础软件花了多少钱,而自己写的应用程序卖了多少钱。