1、 毕业设计文献综述 信息与计算科学 通用数据库的 C语言实现 通用数据库是现今数据管理的普遍技术 , 是计算机科学的重要分支 . 现今数据库的实现通常由三个模式组成 , 概念模式 , 逻辑模式和内模式 1. 本文主要研究的领域就是数据库的内模式 . 而对内模式的研究本文是通过 dbm 数据库函数库来实现的 . dbm 是在 UNIX 系统中很流行的数据库函数库 , 它是由 Ken Thompson 开发的 , 当时使用了动态散列结构 . 最初 , dbm与 V7系统一起提供 , 并在所有的 BSD版本中出现 , 其也包含在 SVR4 的 BSD 兼容函 数库中 AT&T 1990c. BSD
2、的开发者扩充了 dbm 函数库 , 并将其改名为 ndbm. ndbm 函数库包括在 BSD 和 SVR4 中 . ndbm 函数被标准化后成为 Single UNIX Specification的 XSI扩展部分 3. 而在 Linux系统上 , 开发者们用 gdbm库来支持 dbm函数库和 ndbm 函数库 7. dbm 函数库所管理的数据库是一个轻量级的数据库 , 不是标准意义上的数据库 , 不支持SQL(不过可以在它的基础上开发) , 纯粹以二进制储存的一种数据库 , 常用于系统底层的数据库 , 在其他 一些很少更新内容的地方也可以使用 9. dbm 函数库主要的两个特点是动态散列算法
3、和键值查找方式 . Seltzer 和 Yigit1991中详细介绍了 dbm 函数库使用的动态散列算法的历史 . 采用动态散列算法时在查找数据时非常快速 , 当然其付出的代价就是插入数据异常的缓慢 2. 另外对于键值查找方式 , dbm 数据库是通过 包括两个基本元素数据块 , 一块是想要保存起来的数据 , 另一块是对其进行检索时用做关键字的数据 . 对于每个 dbm数据库而言 , 保存在其中的每一个数据块都必须有一个独一无二的关键字 . 对于关键 字和数据本身倒没有什么限制 , 对使用超长数据或超长关键字的情况也没有定义什么错误 . 技术规范里倒是允许在具体实现时版关键字 /数据对的最大长
4、度限制在 1024 个字节 , 但这个限制通常并没有什么意义 , 因为具体实现出来的东西往往比技术规范的要求更灵活 10. 关键字的取值被用做检索储存数据的索引 , 就如同书签一般 . dbm 数据库适合于储存相对比较静态的索引话数据 , 是一个索引化得文件存储系统 . 它的优点是非常容易被编译进一个可发布的二进制可执行程序 , 因为它无需安装独立的服务器 , 而且即使它需要的底层文件还未 安装 , 也不会有什么危险 . dbm 数据库允许你通过使用索引来存储可变长数据结构 , 然后通过索引或简单的顺序扫描数据库来检索结构 . dbm 数据库适用于处理那些被频繁访问但却很少被更新的数据 , 因
5、为它创建数据项时非常慢 , 而检索时非常快 . 至今 , dbm 有许多版本 , 许多的不足的得到改进 . 但是 , 这些实现都有一个根本的缺点是 : 他们都不支持多个进程对数据库的并发更新 . 它们都没有提供并发控制(如记录锁 ).绝大部分商用数据库函数库提供多进程同时更新数据库所需要的并发控制 5. 这些系统一般都使用建议记录锁 , 不过 , 它们也常常实现自己的锁原语 , 以避免为获得一把无竞争的锁而需的系统调用开销 6. 本文主要介绍了 dbm 数据库的一些基本概念 . 如上文所示 , dbm 具备了不少优点 , 但dbm 缺乏几乎 所有商用数据库的特性 , 使用 hash 快仅仅是指
6、检索的时间复杂度理论值很优秀 , 商用数据库的各种锁机制 , 索引机制 , 缓冲机制等等都不具备 , 而这些都是影响效率的极重要因素 , 搜索的速度只是其中很小的一个部分 1. 本文就针对其锁机制提出改进策略 , 其他功能有待开发 , 但需考虑这些功能添加之后 , dbm 原语的简单 , 轻 便的优点能否保存 , 也许需要到开发时权衡利弊 , 选择则中的方案 8. 参考文献 1 萨师煊 , 王珊 . 数据库系统概论 (第四版 ) M. 高等教育出版社 , 2006. 5. 2 (英 )Neil Matthew, Richard Stones著 . 杨晓云等译 . Linux程序设计 (第二版
7、)M. 机械工业出版社 , 2002. 1. 3 (美 )W.Richard Stevens, Setphen A Rago. Advanced Programming in the UNIX Environment M. 人 民邮电出版社 , 2006. 2. 4 王珊 , 孟小峰 . 数据库系统导论 (第七版 ) M. 机械工业出版社 , 2000. 10. 5 Abnhrmx Silbersehaa. 数据库系统概念 M. 机械工业出版 , 2006. 10. 6 (美 )沃尔特 , 本 -甘 , 萨卡 . Microsoft SQL Server 2005 技术内幕 -T-SQL程序设
8、计 M. 北京 :电子工业出版社 , 2007: 50-80. 7 微软公司著 . 熊盛新 , 许志庆 , 李钦译 . Visual C# .NET 语言参考手册 M. 北京 :清华大学出版社 , 2002 年 : 160-180. 8 (美 )Kaili Watson . C#2005 数据库编程经典教程 M. 人民邮电出版社 , 2007: 90-120. 9 刘乃丽 . 精通 ASP.NET2.0+SQLServer 2005 项目开发 M. 北京 :人民邮电出版社 , 2007: 100-150. 10 Craig Hunt. Linux Sendmail Administration (Craig Hunt Linux Library) M. Sybex, 2001-2 11 欧立奇 , 康祥顺 , 马煜编 著 . Visual C# .NET 案例开发集锦 M.北京 :电子工业出版社 , 2006:233-245.