数据库系统原理UBase综合训练项目的设计与实施.docVIP

数据库系统原理UBase综合训练项目的设计与实施.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库系统原理UBase综合训练项目的设计与实施   摘要:本文针对目前数据库原理课程实践教学中存在诸多弊病,设计了数据库系统原理的UBase综合训练项目,该项目对于系统地锻炼学生的实践能力和动手能力具有一定的启发指导作用。   关键词:数据库;UBase项目;实践教学   中图分类号:G642   文献标识码:B   文章编号:1672-5913(2008)06-0039-02      在数据库原理课程教学中,实践教学具有特别重要的地位。然而传统实践教学模式存在诸多弊病,改革势在必行。我院在此认识的基础上,设计了数据库系统原理UBASE综合训练项目,通过完成UBASE综合实验进一步提高学生的实践动手能力。      1UBase项目简介      UBase项目是一个综合性很强的设计开发项目,在完成整个项目的过程中将涉及到以下10门课程的相关知识,包括“数据结构”、“数据库系统原理”、“SQL语言”、“数据库系统实现”、“C程序设计”、“C++程序设计”、“软件工程”、“编译原理”和“Linux操作系统”等课程。   UBase项目引导学生掌握设计开发一个名为UBase的数据库管理系统的方法,学生将亲手开发一个单用户、可以执行一些简单SQL查询的DBMS。通过该项目的实践,可以让学生弄明白DBMS的组成结构,也会明白执行查询时DBMS内部究竟发生了什么?   为了帮助学生顺利完成项目,在实验开始之前,我们提前提供了UBase DBMS的最顶层和最底层模块。最顶层模块为解析器,用于对SQL查询的解析并调用下层相应的功能以实施各种关系操作;最底层模块为磁盘的I/O层,用于从磁盘读数据页和向磁盘写数据页,这里的磁盘是指UNIX文件系统。      2UBase的体系结构      UBase的体系结构如图1所示,顶层的解析器和底层的磁盘的I/O层管理由教师提供,由学生负责完成中间的五部分。      图1UBase的体系结构      3开发环境      UBase项目使用C++在Linux平台下完成。编译时在Makefile文件中加上CXXFLAGS = -g -Wall(表示打开所有警告)选项,可以让C++在编译时进行很多检查,从而减少运行时错误。编辑工具采用vi源程序编辑器;程序编译和连接工具选用make;编写测试程序的脚本语言用perl;使用purify跟踪内存错误的工具;使用gdb作为调试工具;使用cvs版本作为控制工具。      4UBase项目的实验内容设计      UBase项目分为五个部分。第一部分实现缓存管理模块,第二部分实现在页上存储变长记录的类,第三部分实现堆文件,第四部分实现数据字典和一些应用工具,第五部分实现一些关系操作符。UBase项目的目标是实现一个迷你数据库管理系统(UBase),虽然其功能远比不上商业DBMS,但确实可以执行一些相当有用的查询。   4.1磁盘空间管理模块   UBase数据库管理系统的最底层为磁盘I/O层。该模块为UBase上层提供创建文件;删除文件;打开文件;关闭文件;在文件中分配磁盘页;回收文件中磁盘页;读文件中磁盘页;向文件写磁盘页和取文件首页页号的功能,该模块包括2个类:一个为文件类(class File),另一个为数据库类(class DB)。该模块的具体实现(源代码)由教师提供,学生可以直接使用,但要求学生必须仔细阅读文档及源代码,了解该实现的细节有助于完成项目的其他部分。   4.2缓存管理模块   缓存管理模块要为UBase数据库管理系统实现一个缓存管理器。由于数据库本身的大小通常为可用内存的100到1000倍,在特定时刻,内存中只能存放数据库的一小部分,缓存管理器就是用来控制哪些页应该驻留在内存中。每当UBase的上层模块发出数据页请求,缓存管理器必须检查请求的页是否已经在缓存池。如果在,缓存管理器只需简单地返回该页的指针;如果不在,缓存管理器要腾出一帧(如果该帧已脏,就必须先将其写入磁盘),然后将请求的页从磁盘读入到内存中腾出的帧。由于缓存池通常包含上千帧(大型数据库管理系统在内存中分配上GB的缓存)。每次页请求都顺序搜索一遍缓存池会影响性能,解决的办法是用溢出桶散列表跟踪每个缓存帧的状态。   UBase项目的缓存替代策略采用给帧加Love/Hate标记的算法和时钟算法,其效果类似LRU和MRU。   缓存管理器包含三个类:   (1) BufMgr类,缓存管理器的主类。   (2) BufHashTbl类,用来形成映射文件及页号到缓存池帧号的散列表。   (3) BufDesc类,用来跟踪每个缓存帧的状态。   BufMgr类只有一个实例。BufMgr类的一个关键组成部分就

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档