2007年7月26日星期四

读sqlite,理解数据库实现原理

开源的一个好处就是让大家能看到一些优秀的源代码,深刻的了解一些计算机原理。Sqlite就是其中之一。

Sqlite是一个轻量级的c库,实现了一个自包含的,可嵌入的,零配置的SQL数据库引擎(翻译自其网站首页:
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine。)近来,Sqlite以其独具一格的特性,在很多领域里得到了广泛的应用。

Sqlite的代码简洁清晰,注释极其详尽,看过之后感觉以前在学校学的那点数据库皮毛得到了质的提升:) 大致说来,Sqlite分为3个模块(我姑且这么一分,大家自己去看吧):

  1. Btree模块:这个模块实现了一个基于磁盘存储的,支持多种高级特性的BTree。该模块是数据库的基础,大家大可以直接使用该模块,实现自己的数据库,当然就不支持SQL语句了。

  2. SQL语句编译优化模块:从SQL语句生成能在SQL虚拟机上执行的目标代码

  3. SQL虚拟机:真正在Btree上执行操作的就是它了。


我只花了点时间看了下Btree的实现,顺带因为好奇,写了一个小程序解读sqlite数据库文件的内部结构,了解了数据库的一张表映射到Btree上是什么样的查找结构,很有意思哦。

恩,强烈推荐大家阅读Sqlite的源码。当然,看代码已经很简单了,只需要点这里就OK了(嘿嘿,赤果果的广告):
www.readcode.org/code#sqlite-3.4.1

2007年7月19日星期四

ReadCode.org的更新

Reacode.org这段时间以来又增加了些功能,自己感觉比较好用了。现在自己有时候要查看下代码就用这个网站,还是很顺手的。大致的功能包括,

  1. 支持Google Gears,实现离线浏览,经常看的代码就不用再从网站上取了。

  2. 文件搜索

  3. 各种Identifier(函数/变量)的定义、引用的查找

  4. 最近查看的文件

  5. 写注释

  6. 书签


还在设想其他一些功能,最主要的就是call trace,目标是在代码阅读的过程中,随时可以看到自己是从哪里到这里来的,会走到哪里去。不过具体如何实现还没确切的想法。

另外,把建站软件整理好之后,会提供下载。

恩,就这么多,大家用用吧,希望能看到大家的意见建议 :)