求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
数据库系统实现之一:数据库实现概论
 

2010-10-27 作者:心中无码 来源:心中无码的blog

 

最近想系统的学习DBMS实现方面的知识,并记录学到的一点一滴,于是准备在博客园上发表一系列这方面的知识,主要是根据《数据库实现》这本书,把自己的理解进行总结,希望各位园友不吝赐教,小弟感激不尽。

王珊老师有云:数据库就是数据的仓库。数据库管理系统就是对数据仓库进行管理。数据库的基本功能就是为了方便用户对数据的存取和操作。普通的文件也可以存储数据,但是不方便对数据进行统一管理。下面从整体上介绍下DBMS应该具有哪些模块。

一个DBMS首先应该有自己的内存管理模块,如果频繁的和操作系统进行空间的申请和释放,会严重影响一个DBMS的性能,据说QQ也是自己进行管理的。其次需要存储管理,如插入记录或者查询记录,最终都要反映到文件上,再底层就是磁盘上,OS的文件系统已经封装了对磁盘的操作,DBMS又不能仅仅按照OS的文件系统进行存储管理,DBMS应该在OS之上,对存储进行更进一步的管理,记录当然可以在文件中顺序存储,但一般DBMS都是按照B树的方式进行存储,这样对定位数据十分有利。频繁的和磁盘进行交互,严重影响DBMS的性能,于是缓冲区管理模块是必须滴。上面就是几个比较底层的模块:内存管理,存储管理,缓冲区管理。

用户通过SQL语句进行数据库的管理和操作,SQL语句又分为DDL和DML。所以需要DDL和DML编译器,对SQL语句进行语法分析,并生成执行计划,最后将执行计划送到执行引擎,执行执行计划。DML是SQL中使用最多的语句,SELECT又是DML中使用最多的语句,查询一般是将SELECT语句转化为内部语法树,然后查询优化器根据规则将语法树转化为有效的等价的形式,最后生成执行计划,下面举例说明(http://www.xinx.sdnu.edu.cn/sfzx/jpsykc/wh/wh04.html):

1 SELECT  Student.Sname
2     FROM    Student, SC
3     WHERE  Student.Sno=SC.Sno
4     AND     SC.Cno='2';

这条含有JOIN的SELECT语句首先转化为内部的语法树,形式如下:

语法树然后转化为关系代数语法树,形式如下:

通过查询优化器,对查询进行优化,这里用到了关系代数的优化,后面再讲。可以将SC.CNO='2'的选择操作符降到低层,如下所示:

有时需要一系列操作作为一个整体的单位进行执行,事务的概念便被提出来了,如银行转帐操作就是一个事务。事务具有ACID的性质,为了保证事务的这些特性,需要日志和恢复系统,当DBMS遇到故障时,可以根据日志做一些REDO和UNDO操作,保证事务的原子性和持久性。同时事务之间可能有并发现象,并发可能导致脏读,不可重复读,幻读,导致这些的原因是对公共资源的操作存在交叉,于是需要对资源进行上锁,锁机制也是事务的一个模块。

一个基本的DBMS应该具有上述的几个模块,当然还有一些高级的模块,如数据库备份,权限管理等。

最后给出书中的一个模块划分图。



MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...