1 / 31

数据库课程设计

数据库课程设计. -- 动手实现自己的数据库管理系统 (DBMS). Course Information. Lecture files: ftp://ftp.cs.sjtu.edu.cn:990/ TA: xuqiongkai_ta@126.com Main Reference Books : H. Garcia-Molina, J. D. Ullman , J. Widom . 数据库系统实现 http://www.stanford.edu/class/cs245/ http://www.sqltutorial.org/. Purpose.

afi
Télécharger la présentation

数据库课程设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库课程设计 --动手实现自己的数据库管理系统(DBMS)

  2. Course Information Lecture files: ftp://ftp.cs.sjtu.edu.cn:990/ TA: xuqiongkai_ta@126.com Main Reference Books : H. Garcia-Molina, J. D. Ullman, J. Widom. 数据库系统实现 http://www.stanford.edu/class/cs245/ http://www.sqltutorial.org/

  3. Purpose What can we learn? 1、SQL Operation 2、Software Engineering 3、Skillful Programming Language 4、Cooperate with classmate ……

  4. Brief Introduction What is DBMS(Data Base Management System)? What kinds of technology do we have? Java\Compiler\Operating system…… How to construct this system?

  5. Brief Introduction

  6. Brief Introduction Basic Idea:

  7. 用户端口 海王篇 词法/语法分析 执行计划生成 优化 执行查询 缓冲区 索引管理 记录管理 文件系统

  8. 模块介绍(1) 查询处理模块: 完成从SQL语句的字符串到查询计划的翻译 完成从String->Token->Parser->Execute Tree String(SQL) Lex/Parser: 使用编译原理中的技术即可 Execute Tree Generator: 针对Parser Tree中所有的节点进行翻译,翻译为Execute Tree Lex Tokens Parser Parser Tree Execute Tree Generator Query Manager Execute Tree

  9. Example SELECT cno FROM SC WHERE sno IN ( SELECT sno FROM Student WHERE name LIKE ‘wang%’ );

  10. Example

  11. 模块介绍(2) 查询计划执行模块(Execute Manager): 将物理查询计划树翻译成可执行代码 运用关系代数翻译如下操作: Π:取特定列 σ:条件筛选操作 ×:连接表 …… (翻译成对于Tuple or File的操作)

  12. 模块介绍(3) 存储管理模块: 实现对数据库高效的读写操作 Execute Manager Record Manager:管理对单条或多条记录的查询、修改和管理操作,为上层的执行引擎提供接口 Disk Manager:管理对一个完整磁盘块的分页读写机制,为上层的记录管理模块提供读写磁盘的接口 Execute Code Record Manager Disk Manager Hardware

  13. 模块介绍(4) 缓冲管理模块(Buffer Manager): 提高磁盘访问效率。 Execute Manager Execute Code 问题: 1、机制FIFO 、LRU…… 2、缓冲信息选定 Record Manager Buffer(1M) Disk Manager Hardware

  14. 模块介绍(5) 用户交互模块(Frame): 可以是命令行方式的用户界面,也可以是图形用户界面(GUI) ps:实用即可 用户管理模块: 需要查询数据字典认证权限后方可登陆 执行引擎模块: 依照流程,按步执行各个模块

  15. 高级模块 查询优化模块: (估价) 优化

  16. 高级模块 查询优化模块:

  17. 高级模块 索引模块: Index

  18. 高级模块 索引模块:(B tree)

  19. 高级模块 索引模块:

  20. 高级模块 索引模块:

  21. 完整结构(仅供参考) Class: ClientFrame Methods: 1、main:用于创建窗体和初始化 2、showTable:将数据显示到表中 3、transMessage:转换返回数据 eg:1#1@2#fdsa@3#e2#fdsa@2#fdsa@2#fdsa@2#fdsa@2#fdsa@2#fdsa@!1#1@2#fdsa@3#e2#fdsa@2#fdsa@2#fdsa@2#fdsa@2#fdsa@2#fdsa@! Class: ClientSocket Methods: 1、send:发送消息 2、receive:接受消息 Class:ServerDriver Methods: 1、main:启动serverSocket监听端口、设置服务器配置参数 2、SQLHandler:完成各个模块的操作流程控制 用户端口 词法/语法分析 执行计划生成 优化 执行查询 缓冲区 索引管理 记录管理 文件系统

  22. 完整结构(仅供参考) 用户端口 dbms.flex->YyLex.java…… dbms.cup->parser.java…… Class:Translate Methods: translate:(1)调用flex生成的词法分析代码 (2)调用cup生成的语法分析代码 Package:Absyn 根据自己设计的cup改写 词法/语法分析 执行计划生成 优化 执行查询 缓冲区 索引管理 记录管理 文件系统

  23. 完整结构(仅供参考) Class:ExeTreeGenerator Methods: 1、translate:Absyn->ExeTree 2、analyse:评估节点运行所需时间 3、optimize:根据评估优化Execute Tree结构 Package:ExeTreeNode 构建Execute Tree中各个节点类 类别包括:Π、σ、×等 每个类提供如下方法: 1、analyse:递归向下调用analyse评估该节点运行时间 2、execute:执行该节点操作,调用各个文件系统操作 用户端口 词法/语法分析 执行计划生成 优化 执行查询 缓冲区 索引管理 记录管理 Class:Execute Method: execute:递归调用各个节点的execute方法 文件系统

  24. 完整结构(仅供参考) 用户端口 Class:RecordBuffer: Methods: InsertRecord:插入记录 DeleteRecord:删除记录 ChangeRecord:修改记录 …… Select:替换机制 Class:DiskBuffer: Methods: WritePage:修改页内容 ClearPage:清除页 …… Select:替换机制 词法/语法分析 执行计划生成 优化 执行查询 缓冲区 索引管理 记录管理 文件系统

  25. 完整结构(仅供参考) Class:RecordManager Methods: CreateTable:创建表 DeleteTable:删除表 InsertRecord:插入记录 DeleteRecord:删除记录 FindRecord:寻找记录 TrimTable:调整表结构,删除冗余数据 …… 用户端口 词法/语法分析 执行计划生成 优化 执行查询 Class:DiskManager Methods: CreateFile:创建虚拟磁盘 DestroyFile:删除虚拟磁盘 OpenFile:打开一个文件,返回一个File类的操作柄 CloseFile:关闭一个文件 WritePage:修改页内容 DeletePage:删除页 …… 缓冲区 索引管理 记录管理 文件系统

  26. 其他 一、要求 1、由两到三人(建议三人)组成开发小组共同完成一个DBMS项目 2、提交报告时需要提交源代码,可执行程序,使用说明,各模块实现方法及相关的测试报告。 3、主要测试内容:DiskManager、RecordManager、BufferManager、Execute Tree(中期检查)、语句执行的正确性和效率等等 4、测试环境:win7、eclipse+JDK1.6、50M硬盘、1M缓存……

  27. 其他 二、时间安排 第9周:团队形成(名单发送到助教邮箱) 第10~11周: 设计阶段 第15 周:中期检查 (设计方案,磁盘管理) 第16 ~20周: 代码实现,测试等 待定: 检查

  28. 其他 三、评分 系统实现 (60%):基本功能齐全(存储管理,缓冲管理,数据字典,索引结构,SQL语法分析,SQL引擎等),运行正确无误。 评测:(20%) 给出部分测试样例。 文档 (20%):系统设计报告和用户报告。(10页之内) 如有额外实现,则实行加分政策。

  29. 闯关顺利!

  30. Thank You! Q&A

More Related