当前位置:文档之家› 高级数据库复习笔记

高级数据库复习笔记

高级数据库复习笔记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这一列,发送到site r Cost = C0+C1*Size(B)*Val(B[S])在r站点执行SJ, 费用为零,令R’=R SJA=B S (R和S在A=B的关系上做半连接)发送R’到site s, 费用 Cost = C0+C1*Size( R )*Card (R’)在r站点计算JN,费用为零。

总费用 CSJ=2*C0+C1*((Size(B)*Val(B[S]) + Size( R)* Card (R’))2、基于半连接的优化SJ 不对称(R SJ S) JN S 的费用CSJ( S SJ R) JN R 的费用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)一般构造:通过执行某些计算而创建新实例。

即新实例是对老实例的运算过程中产生的实例状态的查询:该类操作称为观测函数(observer function),它返回一个相应对象的内部状态转换操作:该类操作是一个过程,它将按照参数内容改变被激活的对象的内部状态转换操作会改变DB的状态,因此,设计该类操作时必须考虑DB的一致性状态维护问题2、类型相关操作操作说明:declare <OperationName>:<parameter Type List> -> <ResultType> [code <CodeName>]操作定义子句:define <codeName>[“(“<parameterlist>”)”] isbegin<Variable section><Operation Body>end3、对象封装为了保证对象状态转换的一致性,必须对所有的转换操作进行必要的封装。

将可能造成不一致的转换操作私有化,或者,将其增加了维护状态一致性的操作后再放到public序列中4、重载提供了在同一个名字空间下,语义相关但操作内容不同的操作名的重用。

要求参数类型和个数不同5、自由操作用户在类型框架外定义的与类型无关的操作。

Persistent declare distance: Vertex, Vertex → float Code FreeDistanceCode;Define FreeDistanceCode(p,q) isreturn p.distance(q);自由操作的实现最终是调用类型相关操作来构建第八章联系的实现1、联系的类型对象类型间通过属性的引用建立了对象实例间的联系。

二元联系中,二个对象间的联系语义有1:1,1:N,N:1,N:M2、不同类型的实现方法第九章、第十章第九章继承1、对继承概念的需求:2、继承含有三方面语义:特化/泛化的抽象语义;子类型是父类型的一个扩展;可替换性语义(Substitutability)3、继承的操作重定义重定义用refine标识,对操作体进行重写,即定义子类型自己的操作版本重定义的作用:既支持了操作的继承,又支持了子类型的特殊需求从当前接受者对象的直接类型开始,沿着继承的层次结构中指向根ANY的路径进行搜索,所遇到的第一个操作的实现体被执行第十章多态1、多态操作需求在数据库概念上,有许多操作,例如查询操作,需要一个通用的独立于类型的格式,从而增加了软件设计的灵活性和可复用性2、多态操作的分类特定的(adhoc)多态:即是普通的重载操作包含多态:允许一个特定类型的操作可以作用在子类型对象上有界多态:多态的一般化描述,一个操作可以定义在多种类型上对表结构类型长度计算的多态操作polymorph declare length(\ListType<=<ElementType>):\ListType||->intcode polyLength;define polyLength isvar item:\ElementType;I:int:=0;beginforeach (item in self)I:=I+1;return I;end define polyLength;第十一章、第十二章第十一章多重继承与多重置换1、多重继承--子类从一个以上的超类继承属性和方法2、多重替代--不同类型对象之间的相互替代3、多重继承二义性操作(OP)的歧义--操作冲突操作冲突解决方案:方法一定义优选权,允许用户指定继承的优先权用户通过对Supertype子句中超类型队列来指定优先权方法二--显式重命名对所继承的同名的操作,分别在当前子类型中重新命名Type OT Supertypes OT1(renames op to op1)…OTm-1(renames op to opm-1)OTm,is …方法三重定义操作,对op进行重新精化4、多重置换的瑞士军刀例type SwissKnife Supertype Knife isbody [scissor : Scissor ];fashion Scissor via self.scissor;…end type SwissKnife;语句fashion Scissor via self.scissor 的语义为只要瑞士军刀当作scissor看待,则所有的方法调用均转移到SwissKnife的Scissor部件第十二章关联对象访问1、二种查询语言GOMql、GOMsqlGOMql是基于关系语言QUEL在面向对象上的扩展GOMsql是SQL在面向对象上的扩展GOMQL怎么写?不带参数的选择操作多态选择操作说明为Polymorph overload select (\t1<={\t2}) :\t1 || ( \t2 || -> bool ) -> \t1Code selectNoParam语义为类型\t1:是一个集合类型,其元素类型为\t2Select操作的两个变元:接受者类型为\t1,另一个变元是一个布尔函数,它对类型为\t2的对象进行选择,返回一个布尔型结果Select语义:对t1的元素用布尔函数进行筛选例子define selectNoParam(selPred) isvar result: \t1;candidate: \t2;beginresult.create; !! 生成空结果集foreach (candidate in self)if candidate.selPred then result.insert(candidate);return result;end define selectNoParam带参数的选择操作该参数是为选择谓词服务的,所以需要在谓词函数中说明由于在引用时,显然需要由Select来引用,因此,在Select的参数表中也要说明,规则如下:poly overload select (\t1<={\t2}):\t1||(\t2||\t3 -> bool), \t3 -> \t1语义:其中类型\t3可以是任何类型,它的约束条件是Select的第三个参数类型\t3,必须与选择谓词所需一个参数类型一致GOMSQL怎么写?就是普通SQL,加上对象的概念例子Selectb.weight from b in Brep where =“cubo#5”嵌套查询Select f Form f in(select b.faces from b in Brep where b.weight>1000)where f.surface>10select an.someAttrfrom an in someSet.A1.A2.….An2、关联选择操作函数联接利用引用链建立对象集合间的联接当引用路径表达式中如果有集合属性,则需要连接例select , from b in BRep, f in b.faceswhere f.surface > 20范围变量b与BRep类型对象集合捆绑,而b.faces寻找通过faces属性与b相关联的Face类集合第十三章事务管理与恢复1、事务概念事务是访问或更新各种数据项的程序执行单元.事务必须保证数据库的一致性事务执行期间数据库可能不一致当事务提交(commit)时数据库必须是一致的事务性质:原子性、一致性、持久性、独立性事务状态:活动、部分提交、失败、夭折、提交2、事务代理事务代理(Agent)应用在各个Site上执行的若干进程,称作应用在该Site上的代理。

相关主题