一、简答题(每题6分,共30分)
(一)分布式数据库系统概念、特点、作用
1.分布式数据库系统的概念
分布式数据库系统是物理上分散而逻辑上集中的数据库系统,它使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通常是集中式数据库系统)连接起来,共同组成一个统一的数据库系统。分布式数据库系统可以看成是计算机网络技术和数据库系统技术相结合的产物。
2.分布式数据库系统的特点P7
优势:
1.适合分布式数据管理,能有效地提高系统性能。
2.系统经济性和灵活性好,可利用现有的设备和系统,省时省力投资少。
3.系统的可用性和可靠性强,容错能力高。
缺点:
1.系统设计复杂
2.系统处理和维护复杂
3.数据的安全性和保密性较难控制
4.经验不足,系统不很完善。
3.分布式数据库系统的作用P7
分布式数据库系统是地理上(或物理上)分散而逻辑上集中的数据库系统。适合于分散型组织结构的任何信息系统,如:航空公司订票系统、陆、海、空军事指挥系统、CIMS制造业、银行通存通兑系统和连锁配送系统等等。分布式数据库系统有效地适应了地理上分散的、网络环境下的、逻辑上统一的分布式数据管理需求。
(1)优势
1.适合分布式数据管理,能有效地提高系统性能:分布式数据库系统由网络中多个分布于不同场地上的数据处理节点组成,每个节点类似于一个集中式数据库系统,具有局部自治性和全局协调一致性的特点。同时,系统可并行、协调地对数据进行有效处理,达到提高系统总体处理能力、系统吞吐率和系统响应速度的目的。另外,可利用分布式数据库系统的局部特性,尽量减少访问其他场地数据库中的数据,提高数据的安全性。
2.系统经济性和灵活性好:同由大型计算机支持的集中式数据库相比,分布式数据库系统具有更高的性价比和实施灵活性。并且分布式数据库系统可利用现有的设备和系统,省时省力投资少,系统具有可扩展性,建设成本低,灵活性高。
3.系统的可用性和可靠性强:分布式数据库系统资源和数据分布在物理上不同的场地上,为系统所有用户共享,并允许存储数据副本,数据具有一定冗余度。当在个别场地或个别通信链路发生故障时,不会导致整个系统崩溃。系统的局部故障也不会引起全局失控,系统的容错能力强。
(2)问题
1.系统设计复杂:分布式数据库的分片设计和分配设计依赖于系统的应用需求,并且影响系统的性能、响应速度及可用性等。分布式数据库的查询处理和优化、事务管理、故障恢复和并发控制,以及元数据管理等,都需要分布式处理。因此,与集中式系统相比,分布式数据库系统的设计更加复杂。
2.系统处理和维护复杂:系统具有分布式结构和分布式处理特性,当涉及分布式场地上的数据时,需要统一实时处理数据,并保证数据的一致性。同时,需要全局统一实现分布式调度和并发执行,以及故障发生后的分布式恢复。可见,分布式数据库系统的处理远比集中式数据库系统的处理复杂。
3.数据的安全性和保密性较难控制:分布式数据库系统中,不同场地的局部数据库系统具有一定程度的场地自治性,因而,不同场地的管理员可以采用不同的安全措施,这就难以保证全局数据的安全性。另外,分布式数据库系统需要通过通信网络传输控制消息和数据,必须保证消息和数据在网络通信过程中的安全性。
(二)分布式查询处理与优化的层次结构
书上P120 PPT第五章
查询的处理过程是从全局关系到片段关系,最后再到实际操作的副本关系。
- 查询分解:将类似SQL语言描述的查询语句转换为由关系代数表达式所描述的逻辑查询计划。
- 数据局部化:根据分布式数据库的分片模式,将全局模式下的逻辑查询计划转换为在各场地上的片段查询。
- 查询存取优化:选择接近“最优”的查询策略,将分片查询的逻辑查询计划转化为带有分片间通信操作符的查询策略。
- 局部查询优化:基于局部模式上的逻辑查询计划,选择最优的物理查询计划。
(三)分布式数据库的设计方法(两种策略) 书上59页
Top-Down: 是系统从无到有的设计与实现过程,适于新设计一个数据库系统。
Bottom-UP: 适用于已存在许多数据库系统,并将它们集成为一个数据库的设计过程。
1.Top-Down设计过程:
从需求分析开始,进行概念设计、模式设计、分布设计、分片设计、分配设计、物理设计以及性能调优等一系列设计过程。
第一步:系统需求分析。首先根据用户的实际应用需求进行需求分析,形成系统需求说明书。
第二步:根据系统需求说明书中的数据管理需求进行概念设计,得到全局概念模式,如E-R模型。同时依据系统说明书中的应用需求进行视图设计,得到相应的外模式定义。
第三步:根据全局概念模式和外模式定义进行分布设计,包括数据分片和分配设计,得到局部概念模式以及全局概念模式到局部概念模式的映射关系。
第四步:根据局部概念模式实现物理设计,包括片段存储、索引设计等。
第五步:进行系统调优:确定系统设计是否最好地满足系统需求,可能需要进行多次反馈,以使系统能最佳地满足用户需求。
2.Bottom-Up设计过程
有关异构数据库集成方法中,有基于集成器或包装器的数据库集成策略和基于联邦的数据库继承策略等,构建模式间映射关系的基本方法主要有两种:GAV(Global As View)方法和LAV(Local As View)方法。
此处只介绍一种基于集成器的多数据库集成系统的设计过程:
- 各异构数据库系统经过相应的包装器转换为统一模式的内模式。
- 集成器将各内模式集成为全局概念模式,集成过程中需要定义各内模式到全局模式的映射关系以及解决模式间的异构问题。
- 全局概念模式即为采用Bottom-Up设计策略设计的分布式数据库系统的全局概念模式。
(四)分片的定义与作用 书上60页
定义:数据分片是将全局数据进行逻辑划分和实际物理分配的过程。全局数据由分片模式定义分成各个片段数据,各个片段数据由分配模式定义存储在各场地上。
分片模式:定义从全局模式到片段模式的映射关系。
作用:
1.减少网络传输量,将频繁访问的数据分片存储在尽可能近的场地上。
2.增大事务处理的局部性。
3.提高数据的可用性和查询效率。
4.使负载均衡。减少数据访问瓶颈,提高整个系统效率。
(五)分布式事务的概念与特点 书上P235
P231事务概念:事务是由若干个为完成某一任务而逻辑相关的操作组成的操作序列,是保证数据库正确性的基本逻辑单元。一个事务由开始标识begin_transaction、数据库操作和结束标识commit或abort三部分组成。
P233事务的基本特性ACID
A原子性:事务所包含的操作要么全做,要么全不做。
C一致性:事务执行的结果必须是使数据库从一个一致性状态变化到另一个一致性状态,而不会停留在某种不一致的中间状态上。
I隔离性:一个事务的执行既不能被其它事务干扰,同时也不能干扰其它事务。
D耐久性:事务一旦被提交,它对数据库的更改将是永久性的。
分布式事务概念:从宏观上来看,分布式事务是由一系列分布在多个场地上执行的数据库操作所组成的。分布式事务是指分布式数据库应用中的事务,也称为全局事务。(分布式事务是典型的嵌套事务)
子事务概念:一个分布式事务在执行过程中被分解为若干场地上的独立执行的操作序列,即一个分布式事务在某个场地上操作的集合。
分布式事务的特性:分布式事务同样具有ACID四个特性,不仅要保证各个子事务的ACID特性,还要对子事务进行协调,以保证全局事务的ACID特性。
(六)分布式事务的提交协议 P238
两段提交协议、2PC协议:是为了实现分布式事务提交而采用的协议。
基本思想:它将全局事务的提交分别为决定阶段和执行阶段。
基本流程:
- 决定阶段:由协调者向各个参与者发出“预提交Prepare”命令,然后等待恢复,若所有的参与者返回“准备提交Ready”应答,则该事务满足提交条件。如果至少有一个子事务返回“准备废弃Abort”应答,则该事务不能提交。
- 执行阶段:协调者把在决定阶段做出的决定发送给参与者。如果协调者向各个参与者发“提交Commit”命令,各个参与者执行提交;如果协调者向各个参与者发出“废弃Abort”命令,各个参与者执行废弃,取消对数据库的修改。无论是“提交”还是“废弃”,各参与者执行完毕后都要向协调者返回“确认”(Ack)应答,通知协调者执行结束。
两阶段协议存在的问题:
如果在两段提交协议执行的过程中出现了协调者故障或网络故障,使得参与者不能及时收到协调者发送的“提交”命令时,那么参与者将处于等待状态,直到获得所需要的信息后才可以做出决定。在故障恢复前,事务进入了阻塞状态。
如果参与者一直收不到协调者的命令,则事务将始终处于阻塞状态而挂在相应的执行场地上,所占用的系统资源也不能被其他事务利用。事务阻塞降低了系统的可靠性和可用性。
三段提交协议、非阻塞的提交协议:
概念:针对两阶段的问题提出来的新的协议,减少事务阻塞的发生,提高了系统效率。
基本流程:
①投票表决阶段:由协调者向各个参与者发“预提交”(Prepare)命令,然后等待回答。每个参与者根据自己的情况进行投票,若参与者可以提交,则向协调者返回“赞成提交”(Ready)应答,否则向协调者发送“准备废弃”(Abort)应答。②准备提交阶段:若协调者收到的应答中存在“准备废弃”(Abort)应答,则向各个参与者发“全局废弃”(Abort)命令,各个参与者执行废弃,执行完毕后向协调者发送“废弃确认”(Ack)应答。相反地,若协调者收到的应答均为“赞成提交”(Ready)应答,则向各个参与者发“准备提交”(Prepare-to-Commit)命令, 然后等待回答,如果参与者已准备就绪,则向协调者返回“准备就绪”(Ready-to-Commit)应答。
③执行阶段:当协调者收到所有参与者的“准备就绪”(Ready-to-Commit)应答后,向所有参与者发送“提交”(Commit)命令,此时各个参与者已知道其他参与者均赞成提交,因此可以执行提交,提交后向协调者发送“提交确认”(Ack )应答。
两段和三段的区别P249:
- 经历的阶段不同:两段协议中是两个阶段:决定阶段、执行阶段。三段协议中是三个阶段:投票表决阶段、准备提交阶段、执行阶段。
- 参与者状态不同:两段协议中参与者有三种状态:准备提交状态ready、提交状态Commit、废弃状态Abort。三段协议中参与者有四种状态:赞成提交状态ready、准备提交状态Ready-to-Commit、提交状态Commit、废弃状态Abort。
- 在二段协议中,协调者故障或网络故障容易使得事务进入阻塞状态。而在三段协议中,当参与者在一定时间内没有收到协调者发来的命令时,可以启动恢复处理过程,从而达到避免事务堵塞的效果。
二、分片设计与查询优化(共计30分)
(1)依据业务场景进行分布式数据库设计,给出分片定义,并画出相应的分片树。(10分)
分片定义:需要写出来分片的关系代数的表达式
画出分片树(要用h v来标注,特别是在混合分片中)
(2)依据给定的应用需求,写出在全局模式上的SQL查询语句,并转换成相应的关系代数表达式,画出查询树。(20分)
- 进行分布式查询优化,画出优化后的查询树(全局查询优化树)
- 进行分片优化,画出优化后的分片查询树(片段查询优化树)
- 全局查询优化:
准则一:一元运算下移(选择、投影),二元运算上浮(连接)。
准则二:利用投影和选择的串接定律,缩减每一关系,减少关系尺寸。
(2)分片查询优化:
准则1:对于一元运算,根据一元运算的重复律,将叶子节点之前的选择运算作用于片段,如果不满足片段的限定条件,则置为空关系。
准则2:对于联接运算的树,若联接条件不满足,则将其置为空关系。
准则3:在查询树中,①U是二元操作要上浮;②∞下移,∪上浮
准则4:消去不影响查询运算的垂直片段。
三、分布式查询存取优化(每小题20分,共40分)
根据实际应用需求的场景,确定执行策略,在相应执行策略下,计算执行代价。