Berkeley DB内核源码分析

原创 2012年03月25日 15:51:11

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做过一定时间的实际开发之后,再花时间去理解内核。


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

相关文章推荐

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

刚才贴了一些文章,都是我之前读Berkeley DB的代码时候记下来的笔记,基于Berkeley DB 4.6 ~ Berkeley DB 4.8版本的代码,不过相信与现在最新的代码差别也不大,有兴趣...

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

1. in nested txns, when child txns of any level commit, __txn_child logs are always written, no matt...

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 源代码分析 (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 列存储设计方案

这是我根据列存储的需求以及Berkeley DB的技术特征做的一个列存储设计方案。有兴趣的朋友可以研究一下,并且在Berkeley DB的基础上面实现出来。有问题可以联系我,我尽量抽时间回答。 ...

对于英语学习的一些见解

其实对于英语学习,一直以来我都是不愠不火,对于英语的认识也只是停留在感性的认识上,说实在的,没有细想过将要做什么计划,用什么好的方法来做适合自己的事情,提高自己的英语水平。         因为对于...

Oracle Berkeley DB 源码

  • 6天前 17:45
  • 42.25MB
  • 下载

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 源代码分析 (5) --- 事务锁模块

Locking Subsystem Learning Notes 0. locking API __db_lput/__db_lget are txnal lock put/get, often ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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