这个考试非常理论,分为数据库技术和操作系统两部分,每部分50分,各超过30分合格。考试中我遇到的大部分是原题,小部分没见过,整体不难,在市场上也没什么认可度,好在便宜,需要资料可自取。
数据库原理概述数据是信息的语义解释是错的,数据是信息的载体,信息是数据的内涵,是数据的语义解释。
信息的价值与其准确性、及时性和可靠性有关。
数据库设计分为6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。
数据库系统中硬件平台:包括计算机和网络设备,网络设备结构形式主要有单机集中方式、客户机/服务器方式、浏览器/服务器方式
扩展标记语言(XML)被认为是在各种类型数据库和Web页面之间交换数据的主要标准。XML把文件系统中使用的模型概念与数据库建模概念结合在一起。
概念模型应具备这些特点:有丰富的语义表达能力;易于交流理解;易于变动;易于向各种数据模型转换。
物理结构设计:存储记录的格式设计、存储方法设计、存取方法设计
数据库系统一般由数据库、操作系统、数据库管理系统、应用程序、数据库管理员和数据库用户构成。
数据库管理系统包括:存储管理器、查询处理器、事务管理器
DBMS是系统软件,不是应用软件。支持对持久存储的大量数据进行高效存取,支持以看起来是原子和独立于其他事务的方式并发地执行持久的事务。
逻辑层模型,也称结构数据模型,主要描述数据的逻辑存储结构,数据结构和完整性约束。传统的逻辑模型(层次、网状、关系)是基于记录的模型,面向对象、对象-关系数据模型是基于对象的模型。
1968年,IBM公司推出的数据库管理系统IMS是基于层次模型实现的。
1974年,Boyce和Chamberlin提出SQL,1975年至1979年IBM公司的San Jose Research Laboratory研制了关系数据库管理系统的原型系统System R,并实现了这种语言。
外模式对应试图和部分基本表
模式对应基本表
内模式对应存储文件
文件系统由应用程序自己控制。
数据库系统由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。
DBMS提供这些数据控制功能:
- 支持数据的多视图
- 支持数据共享和多用户事务处理
- 具有可控的冗余
- 提供数据库数据的安全性保护,限制非授权的访问
- 为程序对象提供持久性存存储
- 提供高效查询处理的存储结构,支持高效数据查询和优化
- 提供数据库备份和恢复功能
- 提供定义和确保数据库完整性检查
- 提供多用户界面
- 可缩短程序开发时间
数据库管理员职责:
- 确定函数库的信息内容和结构
- 确定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束
- 监控数据库的使用和运行
- 数据库性能改进
- 定期对数据库进行重组或重构
数据库技术研究领域包括:数据库设计和方法、工具、理论;数据模型、建模、CA数据库设计方法、设计规范和标准。数据库存储设备的研究不属于数据库技术研究领域。
数据库理论研究包括:关系的规范化理论;关系数理论;数据库逻辑演绎和知识推理、并行算法;演艺数据库、知识库和数据仓库。
数据模型和数据库系统的模式结构在用户看来,关系模型中的数据逻辑结构是一张二维表。二维表的表头称为关系模式,表中内容成为关系实例。并不是任何二维表都能表示一个关系。
每个关系仅有一种关系模式。
关系模型中常用的关系操作包括:投影、选择、连接、除、并、交、差,以及查询操作和插入、删除、更新操作。关系操作通过关系语言实现,特点是高度非过程化。
数据库模型只涉及到型的描述,不涉及具体的值,反映的是数据的结构与其联系。
概念数据模型包括:E-R模型、扩充的E-R模型(EER模型)、面向对象模型、谓词模型。
E-R模型一般与关系模型关联,EER模型与对象-关系模型关联。
逻辑模型:层次模型、网状模型、关系模型、面向对象模型、对象-关系模型。
局部E-R成为全局E-R可额能存在3类冲突:属性冲突、结构冲突、命名冲突
实体性之间一对一联系不仅存在两个实体型之间,存在每一个实体至多和另一个实体集中的一个实体有联系。
一个1:n联系可以转换成一个独立的关系模式,也可以与联系的n端实体所对应的关系模式合并。
关系数据模型和关系数据库系统
关系数据库中不允许表中有表。其属性的数据类型以技术性的个数是相对固定的。
关系代数、元组关系和与关系演算均是抽象的查询语言,这些抽象的语言与具体的DBMS中实现的实际语言并不完全相同。关系演算语言包括元组关系演算语言和域关系演算语言。关系代数为关系模型定义了一组操作。关系演算为关系查询提供了一个更高级的描述性表示法。
关系数据模型中,分量指元组中的一个属性值。
如果在关系的一个码中,移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键,超码的子集不是码。
不包含在任何一个候选码中的属性为非主属性。
基于传统集合论的关系操作并、交、差、广义笛卡儿积四种操作都是二元操作,交、并和差需要满足相容性条件。并、差、笛卡尔积、投影和选择5种操作可以用来表达任何其他的关系操作。并、交、差、笛卡儿积都可看成元组的集合,操作是从行(水平)方向来进行。
笛卡尔积:设R和S分别是r元和s元关系,定义R和S的笛卡尔积是一个r+s元元组的集合,每一个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元祖。若R有k1个元组,S有k2个元组,则笛卡尔积有k1*k2个元组。
不能用基本关系代数操作表示的请求类型是在数据库的值集上指定数学聚集函数。
集合的差与除不满足交换律,集合的并与交满足交换律、结合律。自然连接满足交换和结合律。
一元的专门关系操作
选择π、投影σ
二元的专门关系操作
连接:等值连接、自然连接(取消重复列)
自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。
扩展的关系操作
广义投影、赋值、外连接、半连接、聚集、外部并
外部并操作是为了用于两个不满足相容性条件的关系得到它们元组的并集而开发的。
广义投影是对投影的扩展。对关系R的投影操作,是在R的若干属性列上的投影,而对关系R的广义投影,是在若干算式表达式上的投影。
选择运算对并、交、差运算具有分配律,投影运算对并运算具有分配律。
数据操纵包括:Insert、Update和Delete
数据控制包括:Grant、Revoke
数据定义包括:Creat、Drop和Alter
insert可以插入多行数据。
关系语言分为3类:关系代数语言、关系演算语言以及兼具两者特点的语言。他们的共同点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够独立使用,也可以嵌入高级语言使用。
数据定义语言是对数据库的结构进行描述,包括外模式、模式、内模式,数据库完整性定义,安全保密的定义(如用户口令、级别、存取权限等),索引的定义,视图的定义等,不包括用户界面形式定义。这些定义存储在数据字典中,是DBMS运行的基本依据。
DROP TABLE CASCADE|RESTRICT
选择级联方式,则在删除基本表示,该表的数据、表定义本身及在该基本表上所创建的视图和索引也将随之消失。
SQL中,外模式对应视图和部分基本表
模式对应基本表
内模式对应存储文件
一个表可以有若干个索引,索引页存放在存储文件中,一个基本表可以跨一个或多个存储文件,一个存储文件可存放一个或多个基本表。
存储文件的逻辑结构组成了SQL数据库的内模式,内模式是数据库物理结构和存储方式的描述。
外模式描述的是数据库数据的局部逻辑结构。同一个外模式可以被某一个用户的多个应用程序所使用,但一个应用程序只能使用一个外模式。
三级抽象模式在数据库系统中都存储于数据库系统的数据字典中,是数据字典的基本内容
对视图的一切操作最终要转换为对基本表的操作;在多个表上使用连接操作定义的连接视图一般是不允许修改的;带有基本数据经过计算派生出的虚拟列的带表达式的视图一般是不可修改的;视图有助于提高数据的逻辑独立性。
视图上无法再定义基本表。视图一经定义,就可以与基本表一样被查询,也可以在一个视图上再定义新的视图,但对视图的修改操作有一定限制,视图的删除是指从数据字典删除视图的定义。
一个基本表上最多只能建立一个聚簇索引。
在视图创建的SQL语句中,with check option指,在试图进行修改时,保证修改的行满足视图定义中子查询的条件表达式
Z=U-X-Y,多值依赖有这些特性:
若X→→Y,则X→→Z,即多值依赖具有对称性。
若X→Y,则X→→Y,即函数依赖可看做多值依赖的特殊情况。
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。
平凡的多值依赖与非平凡的多值依赖:
若X→→Y,而Z为空集,则称X→→Y为平凡的多值依赖;若Z不为空,则称其为非平凡的多值依赖。
关系模式R(X,Y,Z),属性X、Y、Z之间没有任何函数依赖关系,则XY→→Z一定成立,R肯定属于BCNF,但不一定属于4NF。
关系模式R(X,Y),没有关于数据依赖的任何信息,则X→→Y一定成立,R肯定属于4NF。
完整性检查,如果是被参照关系插入,不需要考虑参照完整性约束,如果是参照完整性约束,检查插入行在外码属性上的值是否已经在相应被参照关系的主码属性值中存在。
关系数据模型的完整性约束主要包括:实体完整性约束、参照完整性约束、用户定义完整性约束。
其中实体完整性约束和参照完整性约束是关系模型必须满足的完整性约束条件,应由关系数据库管理系统DBMS自动支持。
用户定义完整性约束主要是域完整性约束,也包括一些其他的特殊约束。
取值范围包括静态定义和动态定义。与完整性约束还包括定义属性间的依赖关系,这包括函数依赖和多值依赖。一般域完整性是在单个关系上指定的,而某些特殊约束虽然不是参照完整性约束,但也需要在两个关系上指定。
数据约束描述数据结构中数据间的语法和语义关联,包括相互制约与依存关系以及数据动态变化的规律,以保证数据的正确性、有效性和相容性。
关系数据库标准语言SQLALTER TABLE 语句
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
SQL ALTER TABLE 语法
如需在表中添加列,请使用下列语法:
ALTER TABLE table_name ADD column_name datatype
要删除表中的列,请使用下列语法:
ALTER TABLE table_name DROP COLUMN column_name
Grant语句
Grant 权限|ALL On 对象名 To 用户 Public|With Grant Option
Like通配符
| 通配符 | 说明 |
| _ | 与任意单个字符匹配 |
| % | 与包含一个或多个字符串匹配 |
| [] | 与特定范围(例如[a-d]或特定集例如[abcdef])中的任意字符串匹配 |
| [^] | 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。 |
规范化理论可以应用到数据库设计的不同阶段中。在概念设计阶段,可以指导规范化E-R图中的实体。最重要的应用是在数据库逻辑结构的设计阶段,当E-R模型向关系转换完成后,注意检查各个关系模式,如果某些关系模式未达到应用所要求的规范化程度,则进行关系模式的分解。并未提供判断关系数据库管理系统的优劣的理论标准。
SQL的数据类型可以分为4类:
- 预定义数据类型
- 构造数据类型:由特定的保留字和与定义数据类型而成,如用REF定义的引用类型、用ROW定义的行类型、用ARRAY定义的聚合数据类型等
- 用户定义数据类型
- 大对象类型
数据定义语言:用来创建数据库的各种对象,包括数据库模式、表、视图、索引、域、触发器、自定义类型鞥,游标、访问权限不用create。
关系操作通过关系语言实现,关系语言的特点是高度非过程化,关系操作的特点是集合操作方式,即操作的对象和操作的结果都是集合。非过程化是指:用户不必请求DBA为它建立特殊的存取路径,存取路径的选择由DBMS的优化机制来完成。用户不必求助于循环和递归来完成数据的重复的操作。用户不能指明查询中使用什么索引?
美国国家标准局ANSI首次颁布SQL语言的美国标准是在1986年,成为SQL86。
SQL语言既是自含式语言,又是嵌入式语言。
SQL与数据库程序设计嵌入式SQL与主语言之间的通信方式有SQL通信区、主变量、游标
把SQL语句中使用的主语言程序变量简称为主变量或共享变量。SQL语句执行后,系统要反馈给应用程序的表明或属性名,这些信息被送到SQL的通信区SQLCA。使用游标技术来协调SQL查询语言和主语言程序。
存储过程的优点:
1.减少重复工作,增强软件的模块化程度
2.减少客户与服务器之间的数传输和通信代价,提高巡行效率
3.增强视图所提供的建模能力,检查断言和触发器所不能处理的复杂约束
关系数据库的规范化理论和数据库设计预定义数据类型包括数值型(整数类、短整数类、浮点数类、双精度浮点数类、浮点数类型)、字符串型、位串行、时间型、布尔型
平凡的函数依赖
定义: 在Y函数依赖于X函数的基础上,即X → Y 时,如果Y ⊂ X,那么称X → Y 是平凡的函数依赖,如果有Y ⊂ X ,那么X → Y 一定成立。
在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0→Y,则称Y对X部分函数依赖。
函数依赖是语义范畴的概念,只能根据语义来确定函数依赖。
如果选择条件为等值比较,则顺序索引和散列索引皆可利用。
如果选择条件为非等值比较,则只能利用顺序索引。
顺序索引能有效地支持点查询和范围查询,散列查询能有效支持点查询,但不支持范围查询。
Armstrong公理系统设关系模式R,其中U为属性集,F是U上的一组函数依赖,那么有如下推理规则:
① A1自反律:若Y⊆X⊆U,则X→Y为F所蕴含;
② A2增广律:若X→Y为F所蕴含,且Z⊆U,则XZ→YZ为F所蕴含;
③ A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含。
根据上面三条推理规则,又可推出下面三条推理规则:
④ 合并规则:若X→Y,X→Z,则X→YZ为F所蕴含;
⑤ 伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含;
⑥ 分解规则:若X→Y,Z⊆Y,则X→Z为F所蕴含。
关系模式设计不当会引起:数据冗余、更新异常、插入异常、删除异常。
插入异常:码值的一部分为空的元组不能插入到关系中。
存储管理器的重要模块:存储管理、缓冲区管理、索引/文件/记录管理器
查询处理器重要模块:DDL编译器、查询编译器、执行引擎
事务管理器重要模块:事务管理、日志和恢复、并发控制
DBMS管理的重要内存结构:缓冲区、锁表
视图的属性列或全部省略,或全部指定;对视图的查询转换为对基本表的查询的过程成为视图的消解。
规范化理论最主要的应用是在数据逻辑结构设计阶段,当E-R模型向关系转换完成后,逐一检查转换得到的各个关系模式,如果某些关系模式未达到应用所要求的规范化程度,则进行关系模式的分解。规范化理论不但对关系模型数据库的设计有重要意义,而且对其他模型数据库的设计也有重要指导意义。
BCNF的讨论范围不仅涉及函数依赖,还涉及多值依赖?错误
判断一个关系模式是否属于BCNF,只需要考察每个非平凡函数依赖X→Y的决定因素X是否包含码即可。
数据库系统实现技术数据库管理系统是在操作系统支持下的一个复杂的功能强大的系统软件,而非应用软件。
调度S和S',满足以下3个条件,则称它们是等价的。
1.对于每个数据项Q,若事务Ti在调度S中读取了Q的初始值,那么在调度S'中Ti也必须读取Q的初始值。
2.对于每个数据项Q,若事务Ti在调度S中执行了read(Q)并且读取的值是由Tj产生的,则在调度S'中Ti读取的值也必须由Tj产生。
3,对于每个数据项Q,若在调度S中有事务执行了最后的write(Q)操作,则在调度S'中该事务也必须执行最后的write(Q)操作。
确保单个事物的一致性是对该事务进行编码的应用程序员的责任。保证原子性、持久性是DBMS事务管理器中故障恢复机制的责任。并发控制部件保证事务隔离性,即确保事务并发执行后的系统状态与这些事务以某种次序一个接一个地执行后的状态是等价的。
在数据库系统中,一般由系统自动进行加锁和解锁,而不是由应用程序员在程序中进行。
查询处理之前,系统必须对用SQL查询语句进行分析,形成语法分析树,用它来表达查询和它的结构;系统在将语法分析树转换为关系代数表示之前还需要进行预处理。用定义视图的关系代数表达式来替换对视图的引用。
系统需为逻辑查询计划的每一个操作符选择具体的实现算法,并选择这些操作符的执行顺序,逻辑查询计划被转化为物理查询计划。
高速缓冲存储器和主存储器属于易失性存储器,第二级和第三级存储器是非易失性村乎其,包括快闪存储器、磁盘存储器、磁带存储器。在数据库系统中,不需要考虑高速缓冲存储器的存储管理。主存储器是用于存放可被CPU直接处理的数据的存储介质,如果发生电源故障或系统崩溃,其中内容通常会丢失。
最常用的联机存储设备包括磁盘存储器。
磁盘存储器:扇区是从磁盘读出和写入信息的最小单位。
磁带和自动光盘机为第三级存储或脱机存储。
系统故障恢复:
1.从后往前扫描日志,构造undo-list和redo-list;
2.从后往前重新扫描日志,对undo-list中每个事务Ti的每个日志记录执行undo操作;
3.从前往后重新扫描日志,并对redo-list中每个事务Ti的每个日志记录执行redo操作。
利用更新日志的改前值可以进行undo操作,撤销已做的修改操作,将数据项恢复到修改前的旧值;利用更新日志中的改后值可进行redo操作,重新已完成的操作,将数据项置为修改后的值。
必须先把日志记录写到外存的日志文件中,再把相应的数据库修改写到外存数据库中。
事务故障恢复的步骤:
反向扫描日志,查找该事务的更新操作。
对该事务每个更新操作执行undo操作,即将日志记录中改前值写入数据。
如此处理下去,直至读到该事务的开始日志,则事务故障恢复结束。
如果没有检查点,系统故障恢复原则是要检查整个日志,太耗时,解决方法是周期性地对日志做检查点。
在主站点技术中心,所有的识别副本都被保留在相同站点上,对这种方法的一种改进是主站点带有一个备份站点,另一个方法是主副本方法,各项数据的识别副本可以被存储在不同站点上。对数据项的加锁与该数据项的识别副本相关,并且所有的加锁和解锁请求都被传输到包含那个副本的站点上。许多不同的方法都基于统一思想,区别是对识别副本的选择。
主站点技术所有的锁都在主站点上存取,但数据项本身可以在它们所在的任何站点上存取。
分布式DBMS中大量存在但在集中式DBMS环境中碰不到的问题:
处理多个副本、分布式提交(两阶段提交协议)、分布式死锁、单个站点的故障和通信链路故障等。
两阶段提交协议经常用于解决一致性问题。
B+树是顺序索引结构,是平衡的多路查找树,上面各层结点中的关键码均是下一层相应结点中最小关键码的复写。对于m阶B+树:
1.每个结点至多有m个子女,除根和叶结点外,至少有m/2个子女
2.根节点至少有两个子女
3.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
4.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
5.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
B+树的优势:
1.单一节点存储更多的元素,使得查询的IO次数更少。
2.所有查询都要查找到叶子节点,查询性能稳定。
3.所有叶子节点形成有序链表,便于范围查询。
查询处理
系统同在将语法分析树转换为关系代数表达式之前还需进行预处理:视图扩展、语义检查
系统需要为逻辑查询计划的每个操作符选择具体的实现算法,并选择这些操作符的执行顺序,逻辑查询计划被转化为物理查询计划。
查询处理的代价可用资源使用情况进行度量,包括磁盘存取、执行一个查询所用CPU时间、在并行/分布式数据库系统中的通信开销等。可简单地用磁盘块I/O次数来度量磁盘上存取数据的代价。
查询优化:逻辑查询计划选择、物理查询计划选择
查询优化器利用等价规则将一个表达式转换成逻辑上等价但执行效率更高的另一个表达式。查询优化系统在进行表达式转换时常常使用一些启发式规则。物理查询计划选择中,系统常采用基于代价的查询计划选择方法。
物理查询计划中需要给出查询如何被执行的细节,不仅要指明要执行的查操作,而且指明这些操作执行的顺序、执行每步所用的算法、获得所存储数据的方式、数据从一个操作传递给另一个操作的方式等。
当数据库系统中的程序需要磁盘上的块时,它向缓冲区管理器发出请求,如果这个块已经在缓冲区中,缓冲区管理器将这个快在主存储器的地址传给请求者如果这个块不在缓冲区中,缓冲区管理器首先在缓冲区中为这个块分配空间,如果需要的话,会把其他块移出主存储器,为这个新块腾出空间。
缓冲块大小与磁盘块大小相同,缓冲区管理必须做出的关键选择是当一个新近要求的块需要一个缓冲块时,应该将什么块淘汰出缓冲池,这就是缓冲区替换策略。
分布式、对象-关系、NoSQLL分布式数据库看起来完全像非分布式系统一样,操作并不是会更复杂。分布式系统所有问题是内部的,实现级别的问题。
分布式数据库的特点
1.各种透明层次
分布透明性或网络透明性:指用户能从网络的操作细节中解脱出来,它可以分为位置透明性和命名透明性。
位置透明性指用于执行任务的命令对于数据的位置和发出命令系统的位置来说是独立的。
命名透明性意味着对象一旦被命名,就可以在没有附加说明的情况下,无二义地存取该命名对象。
复制透明性:为获得更好的可用性、更高的性能和可靠性,数据的副本会存储在多个网络站点上,复制透明性使用户不知道有副本的存在。
分片透明性:水平分片将关系分割成元组,即分区;垂直分片将关系分割成子关系,每个垂直分片包含主键。分片透明性使用户不必知道分片和片段的存在。
2.增加了可靠性和可用性
3.提高了性能
4.更容易扩展
缺点:太复杂
分布式数据库的设计技术
数据分片
水平分片、垂直分片
满足完备性原则、可重构原则、不相交原则
查询处理使用半连接操作,将关系从一个站点传输到另一个站点前减少该关系中原则的数量。
分布式数据库系统的并发控制和恢复会遇到这些问题:
处理数据项的多个副本、分布式提交、分布式死锁
C/S数据库体系 表示层——应用层——数据库服务器层
B/S数据库体系
以Web服务器为中心
CGI公共网关接口和Web API存在很大不足:
1.用户界面受HTML语言的限制
2.Web服务器负载过重
3.HTTP协议的效率低
CGI作为一个独立的进程在Web服务器上运行,进程的创建和关闭都会严重消耗系统的资源,这是CGI最显著的缺陷。Web API的运行方式和CGI类似,但在执行时是动态加载到Web服务器进程内。
以应用服务器为中心
Web服务器和三层客户机/服务器结合
这种软件结构可分为:客户机浏览器、Web服务器、应用服务器、数据库服务器
存在2种解决方式:基于构件、基于脚本
基于构件:优点,大大降低Web服务器的负载,提高整个系统的响应速度。
基于脚本:优点,跨平台特性好,客户端只需要安装浏览器即可。
以数据库服务器为中心
将数据库服务器和http服务器紧密结合,生产效率提高。
分布式查询中,查询处理比较复杂,半连接比较有效,不可交换。
对象及对象-关系数据库
基于关系数据库系统的、以数据处理为主的传统的数据库应具有以下特点:结构统一、面向记录、数据项小、原子字段
对象有两个组成部分:状态(值)和行为 (操作)
对象数据库标准中,语言绑定涉及C++、Smalltalk和Java等面向对象的编程语言。
对象标识:ODB为存储在数据库中每一个独立的对象提供一个唯一的、由系统生成的对象标识符OID,OID对用户来说不可见,必须永远不变性。
对象结构:一个复杂的对象可通过类型构造器的嵌套,由别的类型得到。三种最基本的构造器是:原子、结构或元组、汇集。汇集包括集合、列表、包、数组和字典等。
元组类型构造器对应C和C++中的sruct结构,通常被称为结构化类型。
原子构造器包括对象模型内置的基本类型,与很多程序设计语言中的数据类型一样,如整数、串、浮点数、枚举类型、布尔类型等。
封装:对象的内部结构被隐藏,只有通过预先定义过的操作才能访问对象。对象的外部用户只能看到对象类型的接口。
继承:预先定义好的类型成为超类型,子类型会继承超类型的所有函数。
开发ODB系统的一个主要原因是为了表示复杂对象。
复杂对象:分为结构化和非结构化。以各种方式递归地使用类型构造器就可定义结构化的复杂对象,结构化复杂对象一般可看作一种层次机构,每一层的复杂对象和它的组件都存在两种引用语义,分别是属主语义is-part-of和引用语义is-associate-of。
非结构化需要大量存储空间的数据类型,如表示图像或大文本对象的数据类型。二进制大对象BLOB属于非结构化大对象。
结构化复杂对象和非机构化复杂对象的区别在于:结构化复杂对象的结构是通过重复应用面向对象DBMS提供的类型构造器定义的。
ODMG对象可用5个方面来描述:标识符、名称、生存期、结构(原子还是非原子)、创建
原子对象:任何用户已定义的对象。
多重继承的一般规则是:如果从某个超类型那里继承了函数,那就只集成了一次,这种情况下没有二义性,只有当两个超类型中的同名函数不相同时才会发生二义性。在多重继承里有多重处理二义性的方案,一种是创建子类型时检查是否有二义性,另一种是由系统默认选择一种函数实现,第三种是如果出现函数名的二义性,就不允许多重继承。
对象-关系数据库模型新特征包括:支持线性递归程序需操作、引入角色概念、支持用作主动规则的语法。
ODMG的标记方法使用了3个概念:接口、文字、类
接口:对一个对象类型的行为的详细说明,不可实例化。
类:对一个对象类型的行为(操作)和状态(属性)的详细说明,可实例化。
文字:文字实例具有结构化的值,无对象标识符,不包括封装操作。
ODL对象定义语言不是一种编程语言,它被设计成支持ODMG对象模型的语义结构,独立于任何特定的编程语言,主要用途是创建对象说明,即类和接口。
对象数据库与关系数据库概念设计的区别
1.如何处理联系。对象数据库以OID作为参照,关系数据库中元组中联系通过匹配值的属性指定。
2.如何处理继承。对象数据库可以使用继承机制获得映射,关系数据库中不存在内建的机制。
3.对象数据库涉及重要尽早指定操作,关系数据库可以延迟。
面向对象的程序设计语言OOPL中的对象只在程序执行过程中存在,称为临时对象。
面向对象数据库系统(OO)永远在二级存储器中存储持久对象,并允许多个程序和应用共享这些对象。一个数据库系统必须具有与一种或多种OO编程语言交互的接口,以便提供使对象持久化和共享对象的功能。
操作符重载:面向对象系统中的概念,指一个操作符可以被应用与不同对象类型的能力,在这种情况下,同一个操作符名可能应用于好几个不同的操作实现,这取决于它所应用的对象类型,这个特征也称为多态性。
NoSQL特点
可扩展性、可用性和最终一致性、复制模型、文件的共享、高性能的数据访问
在NOSQL中,为提高访问数据的性能,很多系统采用的是对对象的主码进行哈希或范围分区方式,通过主码值而不是复杂查询条件来访问数据对象。
特点:
不需要模式:很多语言都可以描述半结构化的数据库,如JSON、XML
不是特别强大的查询语言:CRUD操作,即Create、Read、Update、Delete,增加Search成为SCRUD。很多NOSQL系统不支持Join操作。
版本控制
NOSQL中的最终一致性:系统所有数据副本,在经过一段时间的同步后,最终能达到一个一致的状态。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。容忍后续部分或全部访问都看不到更新后的数据,则是弱一致性。经过一段时间要求能访问到更新后的数据,是最终一致性。
CAP原理:对一个分布式计算系统来说,不可能同时满足一致性、可用性和分区容忍性3个需求,最多满足2个。
base
基本可用 basically available(允许损失部分可用性)、软状态 soft state(允许系统中的数据存在中间状态)、最终一致性 eventually consistent(系统众多有数据副本,经过一段时间的同步后,最终能达到一个一致的状态)
NOSQL系统分类
键值存储数据库:DynamoDB、Voldemort
列存储数据库:BigTable、Hbase、Cassandra
文档型数据库:MongoDB、CouchDB
NOSQL在这些情况下比较适用:
1.数据模型比较简单
2.需要灵活性更强的IT系统
3.对数据库性能要求较高
4.不需要高度的数据一致性
5.对于给定key,比较容易映射到复杂值
DBMS软件不能直接处理对这些对象值的选择条件及其他操作。
数据技术的发展数据进入数据仓库之前可能的清洗和重新格式化,这一处理通常由行业中公认的抽取、转换和装载工具来执行。
DBMS安全性机制必须包括限制对数据库整体访问的规定,这个功能称为访问控制;对统计数据库安全性相应的控制措施称为推理控制;流控制防止信息向未授权用户流动;另一个控制措施是数据加密。
关系数据库有些问题难以处理,如:大量数据的写入处理,为数据表做索引或模式变更、字段不固定时的应用、对简单查询需要快速返回结果。
数据库应用及安全性以Web服务器为中心存在的不足:
用户界面受HTML语言的限制
Web服务器负载过重
HTTP协议的效率低
CGI和Web API的运行方式类似,但Web API在执行时动态加载到Web服务器进程内,效率较高。
数据操纵功能:支持用户使用表达能力强且易学易用的数据操纵语言(DML)或数据查询语言表达对数据所要求进行检索、插入insert、更新update和删除delete操作,高效地执行用户所表达的对数据库中数据的操作请求。
数据控制语言(DCL:Data Control Language)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、REVOKE等语句。
数据定义包括:create、drop、alter
星型模式由一个事实表和每个维对应的维表组成。雪花模式是星型模式的变形,它将星型模式中的维表通过规范化组织称层次结构。
并不是多维矩阵上的查询性能总是比关系数据模型上的查询性能要好,对于遵循维格式的数据,在多维矩阵上的查询性能比在关系数据模型上的查询性能好得多。
对于小基数的域,位图索引是数据仓库中用到的一种有效的索引技术。在星型模式中,维数据可以对事实表中的元组建立连接索引。
连接索引是为了维护外码与主码之间的联系而实用的一种索引。
DES:56位秘钥
AES:128、192、256位秘钥
可进行分类的算法有:决策树、Bayes、神经网络算法、支持向量机方法等
自主安全性机制:用于向用户授予特权
强制安全性机制:用于对多级安全性进行控制
为保证数据库的安全性,一般由4种控制措施:访问控制、推理控制、流控制和加密。
对于基于投票方法的分布式并发控制,在投票方法中,没有识别副本;加锁请求被发送到所有包含该数据项副本的站点上;每个数据项副本维护自己的锁,并且可以授予或拒绝他的加锁请求;投票方法被认为是真正的分布式并发控制方法,决策的职责在于所有涉及的站点。模拟研究表明,投票方法在站点间产生的信息通信量比识别副本方法产生的要高。
如果一个请求加锁的事务被大多数副本授予锁,它将持有该锁。
如果一个事务在特定的超时周期中没有收到大多数授予它锁的投票,它将取消它的请求。
可信计算机系统评估标准
TCSEC将计算机系统的安全划分为4个等级、8个级别
D类:最低保护等级,即无保护级。只包括D1一个级别, 安全等级最低,只为文件和用户提供 安全保护。
C类:自主保护级,主要通过身份认证、自主访问控制和审计等安全措施来保护系统,一般只适用于具有一定等级的多用户环境。
C1是初级的自主安全保护级,能够实现对用户和数据的分离,进行自主存取控制,保护或限制用户权限传播。
C2是安全产品的最低档次,提供受控的存取保护,将C1级的DAC(自主存取控制)进一步细化,以个人身份注册负责,并实施审计和资源隔离。C2系统具有C1系统中所有的安全性特征。典型例子:Windows 2000、Oracle 7。
B类:强制保护级,分为B1、B2、B3。如果用户没有与安全等级相连,系统就不会让用户存取对象,系统中主要数据结构必须携带敏感标记。使用形式化的安全验证方式保证系统中信息错误。
B1是标记安全保护级,对标记的主体和客体实施强制存取控制、审计等安全机制,被认为是真正意义的安全产品,如Trusted Oracle 7、Sybase公司的Secure SQL Server Version 11.0.6。
B2级是结构化保护级,建立形式化的安全策略模型并对系统内所有主体和客体实施DAC和MAC。
B3级是安全区域保护级,具有很强的监视委托管理访问能力和抗干扰能力。
A类安全等级,级别最高,为验证保护级,包含A1和超A1级。
A1在提供B3级保护的同时,给出系统的形式化设计说明和验证,以确信各安全保护真正实现。
超A1级在A1级基础上增加的许多安全措施,超过了目前技术发展。
关于SQL99
行和数组类型构造器用于指定复杂类型,也称为用户自定义类型。
行类型对应于元组(或结构)构造器,数组类型用于指定汇集。
SQL提供了类似于类定义的构造,用户可以通过该构造创建命名的用户自定义对象。增加了一些类型构造器类指定复杂对象,包括一种利用引用类型来制定对象标识的机制(用户自定义类型可以用作属性类型,也可以用于指定表的行类型)。
用户自定义类型可将操作放在声明的一部分,通过该机制可支持操作的封装.
提供继承机制。
只要签名相同,子类型可以重定义超类型中所定义的任何函数。
聚类 无监督
分类 有监督
BIRCH算法是 可用于大规模数据库的聚类算法



