Berkeley DB 源代码分析 --- 小结

原创 2012年03月25日 15:59:38

刚才贴了一些文章,都是我之前读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等等,在基础软件的市场份额都是统治地位的,其利润之高想必大家很多人也有印象,想想你们做的应用系统中,买数据库等基础软件花了多少钱,而自己写的应用程序卖了多少钱。

 

所以现在咱们国家也看到了这个巨大的蛋糕,希望能够在基础软件上面不受制于人。如果说以前可以睁一只眼闭一只眼大家都用盗版的话,以后随着WTO以及外国政府的压力,盗版是逐步不可能了。就连现在网上看电影都要交钱了。从全局来说这是好事,可以鼓励智力产业的大发展。不过同时意味着我国要有自己的基础软件研发能力,不然将来所有使用计算机系统的行业(几乎也是所有的行业了吧)都会增加一大块成本,并且我们自己做的产品和服务总是被压制在价值链的地段,利润无法提升。只有具有了自主知识产权的核心基础软件,全国的全行业在这方面的成本才可控,甚至可以到国外市场去竞争,获取高额利润回报。国家已经出台的核高基项目,先不论很多科研项目的体制问题,总体来说是好事,至少很多研发人员可以得到实践的机会,能力能够不断提升,那么将来肯定会研发出自己的东西,可能是在体制内或者体制外。既然国家重视了,也已经做了一大块投入,那么从研发人员的角度来看,还是一件大好事,如果你具备了基础核心软件的研发能力,那么你的价值就会大大提升。

 

如果你看了我上面的文字,有一股激情想要从事数据库内核的基础软件研发但是还没有学习和实践的机会的话,可以先从看我的代码分析以及下面这个实践开始。我刚才贴的一篇文章是我之前做的一个基于bdb的列存储的设计,愿意动手实践的朋友可以去按照那个设计实现一下。 当然,那个设计也可能有不完善的地方,所以我愿意和大家讨论,共同把它完善,并且帮助动手实践的朋友去把它实现出来。

 

已经贴的这些是我翻箱倒柜找出来的一部分,还有另外一些我得再找找,找到后贴上来。大家这段时间可以先看这些, 有问题可以随时问我,我会尽量抽时间上来回答。希望和大家共同进步!


版权声明:本文为博主原创文章,未经博主允许不得转载。

Berkeley DB 1.8.6源代码学习(一)

阅读Berdely DB 1.8.6版。基本数据结构1、 数据库数据库结构只含有两个成员变量:type:DBTYPE类型,用于标示数据库使用的数据类型,为枚举类型,枚举值可以为DB_BTREE, DB...

Berkeley DB内核源码分析

Berkeley DB是一个优秀的数据库存储引擎,虽然它比起那些大块头的DBMS来说显的很小,但是size并不与能力呈正比,Berkeley DB拥有那些大块头DBMS的存储引擎所拥有的全部功能,而且...

Berkeley DB 1.8.6源代码学习

出自:http://blog.csdn.net/missyou03/article/details/5209690    从上面链接可以顺便看到博主的多篇Berkeley DB的源码学习笔记!...

编写可移植的C++ 模板代码

MSVC8 对c++模板的支持,基本上遵循了c++标准的规定,不过在某些细节之处仍然超越了c++标准,多做了一些工作,从而一定程度上减轻了程序员编程的负担。但是这种简化,是一把双刃剑---当你使用MS...

《极简笔记》源码分析(二)

此文将对Github上lguipeng大神所开发的 极简笔记 v2.0代码进行分析学习。 通过此文你将学到: - Lambda表达式 - Java自定义注解 - aFinal框架 - RxJ...

Berkeley DB 源代码分析 (1) --- 代码特征与游标的实现

I. General Notes 1. use a cursor to access db internally. cursor connects lock/txn/logging/AM, etc....

Berkeley DB 源代码分析 (7) --- 事务和日志 (2)

这篇和上篇一样,也是含有一些wiki格式控制字符,看的时候直接忽略这些格式字符。 = Logging subsystem = == Architecture == Log sub...

Berkeley DB 源代码分析 (3) --- Btree的实现 (2)

__bam_ditem In btree we store on-page duplicate key/data pairs this way: 1. we only put the key...

Berkeley DB 源代码分析 (6) 缓存模块

这篇文字原来是贴在wiki里面的,所以有一些wiki系统使用的格式标记,大家将就看吧,不好意思哈。 = Memory Pool subsystem = == Architecture ==...

Berkeley DB 源代码分析 (2) --- Btree的实现 (1)

II. Type Dictionary 1. BTREE The DB handle's DB->bt_internal structure, stores per-process and p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Berkeley DB 源代码分析 --- 小结
举报原因:
原因补充:

(最多只允许输入30个字)