《数据库复习》黄炜杰201230590051Ch1.【数据库发展的3个阶段】(1)第一代数据库系统:层次和网状数据库系统(2)第二代数据库系统:关系数据库系统(3)新一代数据库系统【层次、网状数据库共同特点】(1)支持三级模式的体系结构(2)用存取路径来表示数据之间的联系(3)独立的数据定义语言(4)导航的数据操纵语言,需要用户了解做什么,还要指出怎么做。【关系数据库】关系数据库是以关系模型为基础的。关系模型组成成分:1)数据结构2)关系操作3)数据完整性【关系数据库的局限】(1)模型过于简单,不便于表达复杂的嵌套需求。(2)支持基本数据类型有限,不能支持程序设计中的许多数据结构。(3)编程语言与操作语言分离,存在阻抗失配问题。【新一代数据库特征】(1)应支持数据管理、对象管理和知识管理,以支持面向对象数据模型为主要特征(2)必须保持或继承第二代数据库系统的技术(3)必须对其他系统开放:支持数据库语言标准,网络上支持标准网络协议,具有良好的可移植性、可连接性、可扩展性和可操作性【数据库的发展】主要表现在三个方面:1)数据模型的发展2)数据库技术与其他技术相结合3)面向领域的数据库新技术【数据模型的发展】(1)对传统的关系模型(1NF)进行扩充,引入了少数构造器,称为复杂数据模型(2)一种是偏重于结构的扩充,如表达“表中表”(3)一种是侧重于语义的扩充,如支持关系之间的继承,关系上定义函数和运算符(4)增加全新的数据构造器和数据处理原语,以表达复杂的结构和丰富的语义(5)面向对象的数据模型(6)XML数据模型【数据库技术与其他相关技术相结合】分布式数据库系统、并行数据库系统、知识库系统和主动数据库系统、多媒体数据库系统、模糊数据库系统等、移动数据库系统等、Web数据库等【面向领域的数据库新技术】1)工程数据库2)空间数据库【NoSQL】non-relational或NotOnlySQL。它是一种非关系松散数据存储类型,被称为结构化存储。其核心思想是CPA理论、最终一致性、BASE模型。(结构化存储,不要求每一行都有一样的列字段,典型储存形式为key-value)(1)CPA理论:对于一个分布式服务,不可能同时满足一致性(Consistency,节点间数据一致性)、可用性(Avaliability,满足一定性能)和分区容忍性(PartitionTolerance,节点间通讯失效时仍提供服务)这三个需求,最多只能同时满足其中两个。(关系型CA、非关系型AP)(2)最终一致性:过程松,结果紧,最终结果必须保持一致性。(3)BASE模型:基本可用、软状态/柔性事务、最终一致性(牺牲高一致性,获得可用性和可靠性)优点:1)灵活的数据模型2)弹性扩展3)经济性(高并发读写;对海量数据的高效率读写;高扩展性和高可用性)缺点:1)数据完整性不够2)缺乏商业支持(NoSQL很难实现数据的完整性。缺乏强有力的技术支持。开源数据库从出现到用户接受需要一个漫长的过程。关系型数据库在设计时更能够体现实际。)产品:Cassandra,Dynamo,BigTable,MongoDB现状、前景:NoSQL现在有很多成熟的产品被广泛应用在社交网站和电子商务上;NoSQL在某些应用上绝对是趋势,但是就目前来看肯定还有点问题,毕竟走向成熟总有过程。【一致性】强一致性:A先写入新值,系统保证后续A、B的读操作获取最新值。最终一致性:A先写入新值,在一定时间内系统不能保证后续A、B的读内系统不能保证后续A、B的读操作获取最新值,但是它们最终能获取到最新值。【信息集成】研究的主要集成对象是传统的异构数据库系统,可分为:1)数据仓库方法:★★(什么是数据仓库)数据仓库就是面向主题的、集成的、稳定的、时变的数据集合★★,用来支持经营管理的决策制定过程。困难:缺乏组织、效率低。要求:面向主题、集成、稳定以及随时间变化。2)包装器/中介器方法:是目前比较流行的建立信息集成系统的方法。方法的核心是中介模式。【数据库技术研究热点及适用场合】(1)信息集成:研究的主要集成对象是传统的异构数据库系统(2)数据流管理:研究连续的、近似无限的、时变的、有序的且快速流动的数据元素组成的无限序列,测量和监控复杂的动态的现象,如大气情况等(3)微小型数据库:一个只需很小的内存来支持的数据库系统内核(4)DBMS的自适应管理:数据库的最终目标是所有的调整均由DBMS自动完成(5)移动数据库:移动数据库是能够支持移动式计算环境的数据库,其数据在物理上分散而逻辑上集中★★【NoSQL优点】★★(1)数据单元间一般没有模型的限制(2)允许弹性扩展(3)采用分布式和集群技术,通过廉价的服务器组合实现系统整体的高性能Ch2.★★【RDBMS的层次结构】★★(1)应用层:处理各种各样的数据库应用,是RDBMS与用户/应用程序的界面层。(2)语言翻译处理层:处理数据库语言,如SQL;向上提供的数据接口是元组的集合。(3)数据存取层:处理单个元组,把集合操作化为单记录操作并执行。(4)数据存储层:处理数据页和系统缓冲区【语言处理层】任务:把用户在各种方式下提交给RDBMS的数据库语句转换成对RDBMS内层可执行的基本存取模块的调用序列。DDL、DCL语句处理过程:1)把它翻译成内部表示2)存储在系统的数据字典中【数据库查询一般过程】(1)首先是对数据操作语言DML语句进行查询分析,包括语法,词法和语义分析,看语法是否符合规范,是否存在(2)进行查询检查,通过数字字典查看要操作的表定义和项是否存在,是否具有操作该命令的权限等,进行相应的视图转换;(3)查询分析,对查询语句进行查询优化,包括代数优化和存取路径选择优化(4)生成相应的查询计划,并执行之。【DML语句处理过程】转换成一串可执行的存取动作,称为一个逐步绑定(bind)的过程。绑定时间:(1)编程时:已淘汰(2)执行时:解释方法,系统效率高,数据独立性差(3)执行前:预编译方法,数据独立性高,执行效率差【解释方法】特点:执行前,DML语句都以原始字符串的形式保存;执行时,解释程序完成束缚过程,然后予以执行优点:数据独立性好、灵活、应变性好缺点:效率比较低适用:交互式SQL【预编译方法】特点:用户提交DML语句后,运行前对它进行翻译处理;保存产生的执行代码;运行时取出执行代码加以执行优点:效率比较高缺点:应用规划失效【重编译方法】特点:某些成分改变而使某些程序失效时,再对其执行一次编译。将受影响的编译结果置“无效”标志,在其被执行时才进行自动重编译。优点:既拥有了编译时进行束缚所带来的高效率,又具备了执行时束缚带来的数据独立性【数据存取层】数据存取层介于语言处理层和数据存储层之间,它向上提供单元组接口,向下则以系统缓冲区的存储器接口作为实现基础。任务:(1)提供一次一个元组的查找插入删除修改•提供次个元组的查找、插入、删除、修改等基本操作(2)提供元组查找所循的存取路径以及对存取路径•提供元组查找所循的存取路径以及对存取路径的维护操作,如对索引记录的查找、插入、删除修改若索引是采用B+树则应提供B+除、修改。若索引是采用B+树,则应提供B+树的建立、查找、删除、修改等功能(3)对记录和存取路径的封锁解锁操作•对记录和存取路径的封锁、解锁操作日志文件的登记和读取操作(4)其他辅助操作,如扫描、合并/排序,其操作对象有关系、有序表、索引等【数据存储层】功能--存储管理:缓冲区管理、内外存交换、外存管理【缓冲区】作用:提供DBMS的设备独立性,使得外存设备的变更不会对DBMS造成影响;通过异步读写,包括预先读和延迟写来提高数据存取效率组成:内存、许虚存大小管理:一定要适当,太大会占据内存空间,太小需要频繁缺页掉页,造成“抖动”,影响效率查找算法:顺序查找算法、折半查找算法、hash查找算法淘汰算法:LRU最近最少使用算法、FIFO先进先出算法、时钟算法、系统控制法、混合算法【数据库物理组织】数据组织优劣标准:存储效率高,节省存储空间;存取效率高,速度快,代价小存储数据:数据描述、数据本身、数据之间的联系、存取路径数据字典(DD)的组织:1)数据量比较小2)使用频繁数据及数据联系的组织:1)网状、层次数据库:邻接法和链接法2)关系数据库:表存取路径的组织:1)网状、层次数据库:数据之间的联系2)关系数据库:B树类文件结构和Hash文件结构★★【Oracle体系结构】★★组成部分:(1)存储结构:由逻辑存储、物理存储组成(2)内存结构:由SGA、PGA组成(3)进程结构:由用户进程和Oracle进程组成Oracle数据库服务器由实例、数据库组成。实例包括:1)内存结构2)进程结构。数据库(存储部分)包括:1)控制文件2)数据文件3)重做日志文件实例只能打开一个数据库,一个数据库可以有多个实例【启动数据库三个步骤】(1)创建并启动与数据库对应的实例。(2)为实例加载数据库。(3)将数据库置为打开状态。启动数据库必须先用管理员权限连接【存储结构—逻辑结构】逻辑结构包括:模式对象、表空间段区数据块表空间是最大逻辑单位,块是最小逻辑单位。【数据块】对应一个或多个操作系统物理块,由块头(标题、表目录、行目录)和存储区(空闲区、行数据区)组成。管理方式:(1)自动段空间管理(2)手工管理:PCTFREE:可用空间小于该值时,不允许插入。PCTUSED:可用空间小于PCTUSED,当已用空间小于PCTUSED之后才能恢复插入。【表空间】一个表空间只属于一个数据库每个表空间由一个或多个数据文件组成每个数据库至少有一个表空间—系统表空间。创建表的条件:1)用户在表空间有配额2)用户有创建表的权限【模式对象】包括表、视图、索引、序列、同义词。序列:自动产生唯一的数字,是一个共享对象,主要用于创建主键值。同义词:是一个对象的另一个名字,用于简化对对象的访问。【物理存储结构】(1)控制文件每个orcale数据库都有一个控制文件,是一个较小的二进制文件,用于描述数据库结构。包括名称和建立时间、数据文件和重做日志文件的名称及其位置、日志记录序列码。(2)数据文件物理存储Oracle数据库数据的文件,特点:1)每一个数据文件只与一个数据库相联系2)一个表空间可包含一个或多个数据文件3)一个数据文件只能属于一个表空间(3)重做日志文件记录用户对数据库的所进行的修改操作,当数据库中的数据遭到破坏时,可以用这些日志修复数据库。由重做条目构成,主要功能是记录对数据的操作,在恢复操作中恢复重做日志信息的过程叫做前滚。每个数据库至少需要两个重做日志文件,Oracle以循环方式向重做日志文件写入【内存结构】由两种内存区域组成:系统全局区(SGA):在实例启动时分配是实例基本组件可由所有服务进程和后台进程共享程序全局区(PGA):在服务进程启动时分配,此区域是每个服务进程和后台进程所私有的;即每个进程都有一个属于自己的PGA【SGA】由几个内存结构组成:共享池:库缓存用于存储最近使用的SQL语句;数据字典缓存用于存储最近使用数据定义。数据高速缓存用于存储从数据文件读出的数据块副本。通过两个列表管理:待写列表(Writelist):记录脏缓冲区最近最少使用列表(LRUlist):记录可用缓冲区、锁定缓冲区以及还没被转入待写列表的脏缓冲区(包含MRU和LRU端,执行全表扫描时,数据加入到LRU而非MRU,因为数据只是暂时需要的)重做日志缓存SGA内一块被循环使用的缓冲区,用来保存还没有写到磁盘的redo日志内容。主要用于恢复,以重做条目(redoentry)的形式进行存储。大型池(可选)供一次性大量的内存分配使用。主要用于Ol备份与恢复操作I/O服务进程及并行执行缓存所需的存储空间.减少这些操作给共享池带来的负担。Java池(可选)供各会话内运行的Java代码及JVM内的数据使用的【进程结构】可以被分为两大类:用户进程:当用户运行一个应用程序或Oracle工具时启动。用户通过用户进程与Oracle实例建立的连接,用户进程通过服务进程和DBserver通信。Oracle进程: