高级数据库复习笔记.docx
《高级数据库复习笔记.docx》由会员分享,可在线阅读,更多相关《高级数据库复习笔记.docx(28页珍藏版)》请在冰豆网上搜索。
高级数据库复习笔记
高级数据库复习笔记
2007年1月22日
10:
02
对照复习PPT摘下来的一些PPT内容
第一章、第二章
第一章
1、分布式数据库系统
定义:
物理上分散而逻辑上集中的数据库系统
特点:
物理分布性、逻辑整体性、站点自治性
分布式数据库系统的分类:
同构型、异构型、集中型、分散型、可变型
2、为什么需要OODB
新领域的应用需求...
3、事务处理
第二章
1、分布式数据库的体系结构
2、分布式数据库的问题
分布式DB设计;分布式查询处理;分布式并发控制;分布式数据库的可用性
3、分布数据独立与分布透明访问
分段透明;位置透明;本地映射透明;无透明
第三章、第四章
第三章DDB设计
1、DDB设计的两个问题
分段和分配
即:
如何分割数据及如何分配这些数据到不同站点
2、DDB设计目标
优化响应时间/吞吐量/费用/…
3、数据分段
分段原则:
假若有全局关系R被分段为子关系(片段)集合F={F1,F2,…,Fn}
则F满足完整性、不相交性、重构性
水平分段:
以关系自身的属性性质为基础,执行“选择”操作,将关系分割成若干个不相交的片段
导出分段:
从另一个关系的属性性质或水平分段推导出来
垂直分段:
通过“投影”操作把一个全局关系的属性分成若干组
4、数据分配简单模型
设所有的读、写、存储代价都是1,仅比较远程读写次数和单机存储代价,选一个最优的
仿照作业答案中的做法,可以画个表,写出个事务在各方案下的读写总次数来比较哪个较优。
一般只考虑远程读写,本地操作忽略。
文档来自于网络搜索
5、最佳适应方法
片段i在站点j被应用K执行,k在站点j上激活的频率乘以激活一次的读写总次数,计算一个最大值,片段i就应该存放在相应的站点j上文档来自于网络搜索
6、所有得益站点方法
假设片段i放在站点j上,计算所有应用对它读的次数和写的次数,如果读的次数比写的次数多,即Bij>0,那么就应该把i放在站点j上文档来自于网络搜索
第四章 分布式查询处理
1、全局查询:
涉及多个站点数据,优化复杂
局部查询:
只涉及本地.单个站点的数据,优化同集中式
2、查询变换
下推PJ(投影),SL(选择),上推UN;消除公共子表达式;将全局转换为段上查询;消除空关系;分组操作与聚集操作文档来自于网络搜索
第五章、第六章
第五章
1、基于半连接操作的连接操作
目标:
减少通讯量
执行步骤如下:
从S中选择B这一列,发送到siter Cost=C0+C1*Size(B)*Val(B[S])文档来自于网络搜索
在r站点执行SJ,费用为零,令R’=RSJA=BS (R和S在A=B的关系上做半连接)
发送R’到sites,费用Cost=C0+C1*Size(R)*Card(R’)
在r站点计算JN,费用为零。
总费用CSJ=2*C0+C1*((Size(B)*Val(B[S])+Size(R)*Card(R’))文档来自于网络搜索
2、基于半连接的优化
SJ不对称
(RSJS)JNS的费用CSJ
(SSJR)JNR的费用CSJ'
CSJ’=2*C0+C1((Size(A)*Val(A[R])+Size(S)*Card(S’))文档来自于网络搜索
比较CSJ与CSJ’,取最优者
3、SDD-1
算法思想:
计算SJ的得益和损失,循环计算各种可能的SJ情况,选一个得益最大或损失最小的SJ优化方案
4、直接查询优化
四种算法:
利用站点依赖信息的算法;分片与复制算法;站点依赖和数据复制结合算法;Hash划分算法
5、分段关系的连接
第六章面向对象模型
1、面向对象模型
借鉴面向对象的设计方法而建立的模型
2、面向对象方法
以客观世界中的客体为注视目标的方法
特点:
通过可构造的手段将客观世界表示出来,也即可以用有限的构造手段与有限的步骤建立一个客观世界的模型
3、面向对象数据模型
用对象与类结构以及类间继承与组合关系建立数据间的复杂结构关系
4、面向对象数据库管理系统
OODBMS必须满足两个基本条件:
支持核心的面向对象数据模型;支持传统数据库系统所具有的数据库特征
5、对象结构
结构主体由三种基本结构及其组合而成:
元组结构(tupe_structure);集合结构(set_structure);列表结构(list_structure)文档来自于网络搜索
6、类型的实例化
GOM类型的实例化过程
第一步说明对象变量 第二步执行赋值语句
第三步 对空对象的每个属性进行实际值的初始化工作
7、对象标识
标识对象的三种方法:
内容标识—关键字标识符;地址标识—物理对象标识符;逻辑对象标识符
8、持久性
持久性Persistence:
当程序的执行终止后,其创建的构件和数据仍然存在
GOM中持久化构件:
对象类型;对象实例;变量
一个对象实例的持久化可以采用以下几种途径:
按类型持久:
一个持久化类型的实例可以自动确认为持久的
按创建持久:
将持久操作与初始化操作绑定,即将持久对象与临时对象采用不同的初始化子
提供一个持久化操作,即用显式的持久化操作将对象持久化。
即将持久化声明延迟到对象创建之后
按引用声明持久:
仅对一个(或多个)对象显式的声明为持久对象(根对象)。
其他对象的持久化定义为沿着根对象的引用链进行持久化扩展文档来自于网络搜索
第七章、第八章
第七章对象行为说明
1、操作分类
实例的构造,销毁:
该类操作属函数操作,将返回一个新的对象实例OID
可细分为两类:
原始构造:
通过创建函数创建特定类型的新实例例:
matrix$create(i)
一般构造:
通过执行某些计算而创建新实例。
即新实例是对老实例的运算过程中产生的
实例状态的查询:
该类操作称为观测函数(observerfunction),它返回一个相应对象的内部状态文档来自于网络搜索
转换操作:
该类操作是一个过程,它将按照参数内容改变被激活的对象的内部状态
转换操作会改变DB的状态,因此,设计该类操作时必须考虑DB的一致性状态维护问题
2、类型相关操作
操作说明:
declare:
->[code]文档来自于网络搜索
操作定义子句:
define[“(“”)”]is
begin
end
3、对象封装
为了保证对象状态转换的一致性,必须对所有的转换操作进行必要的封装。
将可能造成不一致的转换操作私有化,或者,将其增加了维护状态一致性的操作后再放到public序列中文档来自于网络搜索
4、重载
提供了在同一个名字空间下,语义相关但操作内容不同的操作名的重用。
要求参数类型和个数不同
5、自由操作
用户在类型框架外定义的与类型无关的操作。
Persistentdeclaredistance:
Vertex,Vertex→float CodeFreeDistanceCode;文档来自于网络搜索
DefineFreeDistanceCode(p,q)is
returnp.distance(q);
自由操作的实现最终是调用类型相关操作来构建
第八章联系的实现
1、联系的类型
对象类型间通过属性的引用建立了对象实例间的联系。
二元联系中,二个对象间的联系语义有1:
1,1:
N,N:
1,N:
M
2、不同类型的实现方法
第九章、第十章
第九章 继承
1、对继承概念的需求:
2、继承含有三方面语义:
特化/泛化的抽象语义;子类型是父类型的一个扩展;可替换性语义(Substitutability)
3、继承的操作重定义
重定义用refine标识,对操作体进行重写,即定义子类型自己的操作版本
重定义的作用:
既支持了操作的继承,又支持了子类型的特殊需求
从当前接受者对象的直接类型开始,沿着继承的层次结构中指向根ANY的路径进行搜索,所遇到的第一个操作的实现体被执行文档来自于网络搜索
第十章多态
1、多态操作需求
在数据库概念上,有许多操作,例如查询操作,需要一个通用的独立于类型的格式,从而增加了软件设计的灵活性和可复用性文档来自于网络搜索
2、多态操作的分类
特定的(adhoc)多态:
即是普通的重载操作
包含多态:
允许一个特定类型的操作可以作用在子类型对象上
有界多态:
多态的一般化描述,一个操作可以定义在多种类型上
对表结构类型长度计算的多态操作
polymorphdeclarelength(\ListType<=):
\ListType||->int文档来自于网络搜索
codepolyLength;
definepolyLengthis
varitem:
\ElementType;
I:
int:
=0;
begin
foreach(iteminself)
I:
=I+1;
returnI;
enddefinepolyLength;
第十一章、第十二章
第十一章多重继承与多重置换
1、多重继承--子类从一个以上的超类继承属性和方法
2、多重替代--不同类型对象之间的相互替代
3、多重继承二义性
操作(OP)的歧义--操作冲突
操作冲突解决方案:
方法一
定义优选权,允许用户指定继承的优先权
用户通过对Supertype子句中超类型队列来指定优先权
方法二--显式重命名
对所继承的同名的操作,分别在当前子类型中重新命名
TypeOTSupertypesOT1(renamesoptoop1)
…
OTm-1(renamesoptoopm-1)
OTm,
is …
方法三
重定义操作,对op进行重新精化
4、多重置换的瑞士军刀例
typeSwissKnifeSupertypeKnifeis
body[
scissor:
Scissor];
fashionScissorviaself.scissor;
…
endtypeSwissKnife;
语句fashionScissorviaself.scissor的语义为只要瑞士军刀当作scissor看待,则所有的方法调用均转移到SwissKnife的Scissor部件文档来自于网络搜索
第十二章关联对象访问
1、二种查询语言GOMql、GOMsql
GOMql是基于关系语言QUEL在面向对象上的扩展
GOMsql是SQL在面向对象上的扩展
GOMQL怎么写?
不带参数的选择操作
多态选择操作说明为
Polymorphoverloadselect(\t1<={\t2}):
\t1||(\t2||->bool)->\t1文档来自于网络搜索
CodeselectNoParam
语义为
类型\t1:
是一个集合类型,其元素类型为\t2
Select操作的两个变元:
接受者类型为\t1,另一个变元是一个布尔函数,它对类型为\t2的对象进行选择,返回一个布尔型结果文档来自于网络搜索
Select语义:
对t1的元素用布尔函数进行筛选
例子
defineselectNoParam(selPred)is
varresult:
\t1;
candidate:
\t2;
begin
result.create;!
!
生成空结果集
foreach(candidateinself)
ifcandidate.selPredthenresult.insert(candidate);文档来自于网络搜索
returnresult;
enddefineselectNoParam
带参数的选择操作
该参数是为选择谓词服务的,所以需要在谓词函数中说明
由于在引用时,显然需要由Select来引用,因此,在Select的参数表中也要说明,规则如下:
polyoverloadselect(\t1<={\t2}):
\t1||(\t2||\t3->bool),\t3->\t1文档来自于网络搜索
语义:
其中类型\t3可以是任何类型,它的约束条件是Select的第三个参数类型\t3,必须与选择谓词所需一个参数类型一致文档来自于网络搜索
GOMSQL怎么写?
就是普通SQL,加上对象的概念
例子
Selectb.weightfrombinBrepwhereb.name=“cubo#5”文档来自于网络搜索
嵌套查询
SelectfFormfin
(selectb.facesfrombinBrepwhereb.weight>1000)文档来自于网络搜索
wheref.surface>10
selectan.someAttrfromaninsomeSet.A1.A2.….An
2、关联选择操作
函数联接利用引用链建立对象集合间的联接
当引用路径表达式中如果有集合属性,则需要连接
例
selectb.name,f.name
frombinBRep,finb.faces
wheref.surface>20文档来自于网络搜索
范围变量b与BRep类型对象集合捆绑,而b.faces寻找通过faces属性与b相关联的Face类集合文档来自于网络搜索
第十三章事务管理与恢复
1、事务概念
事务是访问或更新各种数据项的程序执行单元.
事务必须保证数据库的一致性
事务执行期间数据库可能不一致
当事务提交(commit)时数据库必须是一致的
事务性质:
原子性、一致性、持久性、独立性
事务状态:
活动、部分提交、失败、夭折、提交
2、事务代理
事务代理(Agent)应用在各个Site上执行的若干进程,称作应用在该Site上的代理。
代理可以执行应用程序员写的程序,也可以执行系统的原语函数,不同代理间通过报文实现通讯,根代理(RootAgent)应用启动Site上的代理。
文档来自于网络搜索
根代理所在的Site称作原发Site。
一般,根代理负责发系统原语,只有根代理可以请求创建新代理。
3、事务管理
目的:
事务能有效、可靠、并发的执行
DTM功能
保证分布式Trans(Trans就是事务)的特征,特别是原子性;支持分布式Trans执行的位置传递
LTM功能
保证本地Trans的特征;代替DTM把分布Trans的执行与恢复信息记入Log;接收并遵从本Site上DTM发来的Log原语,记入Log并执行之文档来自于网络搜索
Log原语
LocalBegin-Trans,Local-Commit,Local-Abort
4、分布式事务执行控制模型
主从模型LTM之间无通信
三角模型LTM之间有通信
层次控制模型LTM之间有通信,并且LTM还可再创建Agent,控制其它LTM执行
5、2PC
2PC通讯结构
集中式:
通讯只发生在协调者和参与者之间,参与者之间不交换信息
分层式:
协调者是在树根的DTM代理者,协调者与参与者之间的通讯不用直接广播的方法进行,而是使报文在树中上下传播。
每个DTM代理这是通信树的一个内部节点,它从下层节点除收集报文或向他们广播报文。
文档来自于网络搜索
线性:
参与者之间可以互相通信。
系统中的站点间要排序
分布式:
允许所有参与者在第一阶段相互通信,从而可以独立做出事务终止决定。
2PC故障恢复----大致只有三种情况:
如果已经“Complete”可以不做任何动作。
如果该故障会让协调者发生超时,一般会提交“全局撤消”,其他的重发一遍该消息文档来自于网络搜索
1站点故障
a>参与者在将“Ready”记录入Log之前故障
此时协调者达到超时,Abort发生。
站点(P)恢复时,重启动程序将执行Abort,不必从其他站点获取信息。
文档来自于网络搜索
b>当将“Ready”写入Log后,P故障
此时所有运行的站点都将正常结束事务(Commit/Abort)。
P恢复时,因为P已Ready,所以不可判定C的最终决定。
因此恢复时,重启动程序要询问C或其他站点。
文档来自于网络搜索
c>当C将“Prepare”写入Log,但“G-commit”/”G-abort”还没有写入是故障
所有回答“Ready”的P等待C恢复。
C重启动时,将重开提交协议,重发“Prepare”,于是P要识别重发。
文档来自于网络搜索
d>C在将“G-commit”/”G-abort”写入Log后,“Complete”没有写入前故障
收到命令的P正常执行,C重启动程序必须再次向所有P重发命令。
以前没有收到命令的P也必须等待C恢复,P要识别两次命令。
文档来自于网络搜索
e>“Complete”写入Log后故障
无任何动作发生
2报文丢失
a>从P发出的“Ready”/“Abort”报文丢失
C达到超时,整个事务执行“G-abort”。
该故障仅能被C识别,此时C认为P故障,但P并无故障,不需执行重启动程序。
文档来自于网络搜索
b>“Prepare”报文丢失
P等待,C得不到回答,结果同2.a>
c>“G-commit”/”G-abort”报文丢失
P处于不确定状态。
回答“Abort”的可以确定其工作,回答“Ready”的不行。
此时可以修改加入计时器,超时则申请重发命令。
文档来自于网络搜索
d>“Ack”报文丢失
C超时,可重发“G-commit”/”G-abort”命令,P无论是否有活动,都重发“Ack”报文
3网络分割
假设分成两组。
一组是协调者,一组是参与者。
于是从协调者看是参与者组故障,结果同1.a>,1.b>。
从参与者组看是协调者站点故障,动作如1.c>,1.d>。
文档来自于网络搜索
第十四章数据库并发控制
1、并发控制问题
更新丢失、不可重读/不一致分析、读脏数据
2、调度
事务:
读ri(x)和写wi(x)动作序列
冲突动作:
读写冲突、写读冲突、写写冲突
r1(A)w2(A)w1(A)
w2(A)r1(A)w2(A)
调度:
事务动作的执行序列
串行调度
一个事务的第一个动作是在另一个事务的最后一个动作完成后开始.即调度中事务的各个操作不会交叉,每个事务相继执行文档来自于网络搜索
如果一个调度是冲突等价于某个串行调度,则该调度称为冲突可串。
也就是说,该调度可以通过一系列非冲突动作的交换操作使其成为串行调度
调度等价:
S1与S2等价,也就是说,对于冲突操作,,Oi
先序图
调度S的先序图P(S)是一个有向图,其中
节点:
S中的事务
边:
Ti->Tj是图中的一条边,当且仅当
存在 p属于Ti,q属于 Tj使得
p,q冲突,并且p
可串性理论:
调度S冲突可串,当且仅当其先序图P(S)是无环图
3、锁
数据按两种模式加锁:
互斥(X)模式.如果数据项既可以读也可以写.则要用lock-X申请X模式锁
共享(S)模式.如果数据项只可以读.则要用lock-S申请S模式锁.
4、基本2PL协议
事务的执行中Lock的管理分成两个阶段
上升阶段(生长阶段)--获取Lock阶段 收缩阶段--释放Lock阶段
2PL可以保证事务执行的可串性
5、死锁管理
死锁预防:
使引起死锁的必要条件不成立
预先占据所有需要的全部资源
所有资源排序,按资源序列申请
预先确定存取,将所有并发事务排序,按需存取数据
事务退出已占有的资源
死锁检测分布式检测:
即检测死锁时循环等待的圈
各站点都生成等待图,然后传到一个站点上,传送的顺序从EX开始按->方向
对每次接收到的信息,执行如下对LWFG的修改:
对报文中的每个事务,若LWFG中不存在,则将其加入
从EX节点开始,按照报文所给的信息,建立一个到下一个事务的边,在新的LWFG中寻找不含EX的Loop,若存在,则检测到死锁文档来自于网络搜索
6、时间戳调度
基本时间戳:
每个Trans在原发Site激活时接受一时间戳TS(T),Trans申请的每个读/写操作都具有该Trans的时间戳,对每个数据项x,记下其WTM(x)和RTM(x)文档来自于网络搜索
令TS是事务对x进行读操作时的时间戳,若TS否则,执行,将RTM(x)=max{RTM(x),TS}
令TS是事务对x进行写操作时的时间戳,若TS否则,执行,WTM(x)=max{WTM(x),TS}
保守时间戳
多版本时间戳
7、乐观方法
事务的三个阶段:
读段、验证段、写段
利用数据项和事务时间戳(更新表验证)
只使用事务时间戳(读/写集验证)
第十五章可靠性
1、故障类型
软故障与硬故障
软故障间歇性(intermittent)和瞬变性(transient)故障
硬故障指永久性故障,错误设计等
2、可靠性与可用性
可靠性:
对系统行为遵从某种权威性规格要求的一种度量。
指在一给定时间间隔内不产生任何失败的概率。
可靠性通常用于描述那些不能修复的系统。
文档来自于网络搜索
可用性:
对系统行为遵从某种权威性规格要求的一种度量。
指在给定的时间点系统可以运行的概率。
通常用于描述哪些可以修复的系统文档来自于网络搜索
3、容错
设计一种使系统识别出可能会发生的错误方法。
在系统中建立一种机制,使错误在造成系统故障之前就会被检测出来,并能被清除或得到补偿文档来自于网络搜索
4、可靠性协议
非阻断协议:
允许Trans在非失效的Site终结,而不必等待失效Site的恢复,从而改进Trans的响应时间文档来自于网络搜索
终结协议:
终结协议确定了未失效Site如何处理该失效事件
独立的恢复协议:
如何在发生失效时终结Trans,而不必求助于其它Site,可以减少恢复时需要交换的信息文档来自于网络搜索
局部可靠性协议,分布式可靠性协议
5、2PC协议的阻断和终结
2PC是阻断的
2PC协议是终结协议的条件:
至少有一个Site已收到结果命令(该Site可以告知其它参与者)
没有一个参与者收到命令,并且只有协调者Site故障(可以新造协调者)
6、非阻断的3PC协议
3PC中超时的处