第十四章 分布式数据库系统


1. 什么样的数据库系统是分布式数据库系统?图14.1的系统配置在什么情况下只能算分散的数据库系统?在什么条件下才是分布式数据库系统?

正确答案: 答案要点: 分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力(称为场地自治),可以执行局部应用。同时,每个结点也能通过网络通信子系统执行全局应用。 分布式数据库定义的要点:分布性、逻辑整体性、自治性和协作性。 *解析: (1)分布性,数据库中的数据不是存储在同一场地上,这就可以和集中式数据库相区别。 (2)逻辑整体性,这些数据逻辑上是互相联系的,是一个整体,逻辑上如同集中数据库。 (3)自治性,分布数据库中每个结点上的DBMS具有独立处理的能力(如果没有连入网络,也是一个完整的DBMS)。 (4)协作性,分布数据库中各个结点上的DBMS能相互协调,执行全局应用。 答案要点: 《概论》图14.1中,如果用户既可以通过客户机对本地服务器中的数据库执行局部应用,也可以对两个或两个以上结点中的数据库执行全局应用,这样的系统是分布式数据库系统。不支持全局应用的系统不能称为分布式数据库系统,即只是分散的数据库系统。 (详细说明参见《概论》14.1.1)


2. 试述研制分布式数据库系统的目的和动机。

正确答案: 答案要点:研制分布式数据库系统的目的和动机,主要包括技术和组织两方面。  适应部门分布的组织结构,降低费用;  提高系统的可靠性和可用性;  充分利用数据库资源,提高数据库的利用率和共享程度;  逐步地扩展系统处理能力和系统规模。 (详细说明参见《概论》14.1.3)。


3. 试述分布式数据库系统的模式结构。

正确答案: 答案要点: 分布式数据库系统的模式结构可以分为两大部分:集中式数据库系统的模式结构和分布式数据库系统增加的模式级别,其中包括: (1)全局外模式,它们是全局应用的用户视图,是全局概念模式的子集。 (2)全局概念模式,它定义分布式数据库中数据的整体逻辑结构,使得数据如同没有分布一样。 (3)分片模式,定义片段以及全局关系到片段的映象。 (4)分布模式,定义片段的存放结点。分布模式的映象类型确定了分布式数据库是冗余的还是非冗余的。 (详细可参考《概论》图14.3分布式数据库系统的模式结构)。


4. 什么是数据分片?有几种分片方式?数据分片的目的是什么?有什么优点?

正确答案: 答案要点: 数据分片就是将数据表按照一定条件划分成若干子集,每个子集称为一个片段。 分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。 水平分片是指按一定的条件将关系表按行(水平方向)分为若干不相交的子集,每个子集为关系的一个片段。 垂直分片是指将关系按列(垂直方向)分为若干子集。垂直分片的各个片段都要包含关系的码。这样才能从各个片段重构原来的关系。 导出分片是指导出水平分片,即水平分片的条件不是本身属性的条件而是其他关系的属性的条件。 混合分片是指按上述三种分片方式得到的片段继续按另一种方式分片。 数据分片的优点是:数据不是按照关系而是按片段来存放,有利于更好地根据用户需求来组织数据的分布,也有利于控制数据的冗余度。


5.试述分布透明性的内容。

正确答案: 答案要点: 分布透明性包括分片透明性、位置透明性和局部数据模型透明性。 分片透明性指用户或应用程序只对全局关系进行操作而不必考虑关系的分片。当分片模式改变了,由于全局模式到分片模式的映象,全局模式不变,应用程序不必改写。 位置透明性指用户或应用程序不必了解片段的存储场地,当存储场地改变了,由于分片模式到分布模式的映象,应用程序不必改变。同时,若片段的重复副本数目改变了,数据的冗余度改变了,用户也不必关心如何保持各副本的一致性,这就是重复副本的透明性。 局部数据模型透明性指用户或用户程序不必了解局部场地上使用的是哪种数据模型。


6.什么是同构型D-DBMS? 什么是异构型D-DBMS?

正确答案: 答案要点: D-DBMS的同构和异构可以有三级:硬件级、操作系统级和局部DBMS级。其中最主要的是局部DBMS这一级,因为硬件和操作系统的不同将由通信软件处理和管理。所以,同构型D-DBMS定义为:在分布数据库系统中若每个结点的局部数据库具有相同的DBMS则成为同构型D-DBMS;若各结点的局部数据库具有不同的DBMS,则成为异构型的D-DBMS。 (详细说明参见《概论》14.2.4)


7.设在《概论》14.2.3节的分布式数据库系统例子中,还有全局关系SC(SNO,CNO,G),它具有两个导出分片SC_A,SC_B,分别存储理学院和文学院学生的选课记录。SC_A存放在场地4,SC_B存放在场地今有一个稍复杂的查询,从终端输入一个课程号,查找选修该课程的学生学号和姓名,并把它们显示在屏幕上。请写出具有不同层次分布透明性(类比例子中的三种情况)的应用程序。不必给出细节,只需写出算法思想。

正确答案: 情况1 若系统具有分片透明性,则 Scanf(″% s″,Scnumber); / * 从终端读入课程号到变量Scnumber中 */ EXEC SQL SELECT Sno,Sname INTO :SNO, :NAME / * SNO,NAME为程序变量 * / FROM SC,Student / * 在全局关系SC,Student中查找 * / WHERE SC.Cno =:Scnumber AND SC.Sno=Student.Sno; Printf(″% s,% s″,SNO,NAME); / * 把SNO,NAME输出在屏幕上 * / 情况2 若系统具有位置透明性,但不具有分片透明性,则 Scanf(″% s″,Scnumber); EXEC SQL SELECT Sno,Sname INTO :SNO, :NAME FROM SC_A,S_A WHERE SC_A.Cno =:Scnumber AND SC_A.Sno=S_A.Sno; If(! FOUND){ EXEC SQL SELECT Sno,Sname INTO :SNO, :NAME FROM SC_B,S_B WHERE SC_B.Cno =:Scnumber AND SC_B.Sno=S_B.Sno; } Printf(″% s,% s″,SNO,NAME); 情况3 若系统只具有局部数据模型透明性,不具有位置透明性(当然也就不具有分片透明性),则 Scanf(″% s″,Scnumber); EXEC SQL SELECT Sno,Sname INTO :SNO,:NAME FROM SC_A AT Site4, S_A AT Site1 / * 先在场地4的片段SC_A和场地1的片段S_A中查找* / WHERE SC_A.Cno =:Scnumber AND SC_A.Sno=S_A.Sno; If(! FOUND){ EXEC SQL SELECT Sno,Sname INTO :SNO,:NAME FROM SC_B AT Site5,S_B AT Site2 / * 再在场地5的片段SC_B和场地2的片段S_B中查找*/ /*也可以在场地5的片段SC_B和场地3的片段S_B中查找* / WHERE SC_B.Cno =:Scnumber AND SC_B.Sno=S_B.Sno; } Printf(″% s,% s″,SNO,NAME);


8.对14.3.1节的例子中介绍的六种策略改用下列估算值后分别计算通信时间: 红色零件数=1000, 北京供应商的装运单=10000。

正确答案: 策略1 把关系P传送到场地A,在A地进行查询处理,所以, T[1]=1+105×100/104 =103秒(16.7分) 策略2 把关系S,SP传到场地B,在B地执行查询处理,所以 T[2]=2+(104+106)×100/104≈10 100秒(2.8小时) 策略3 在场地A连接关系S和SP,选出城市为北京的元组(104个)然后对这些元组中的每个元组的Pno,询问场地B看此零件 是否红色。所以共问答104次,由于不是传送数据,只是消息的问答,所以 T[3]=2×104s (5.6小时) 策略4 在场地B选出红色零件的元组(103个),然后对每一个元组逐一检查A站,看北京供应商的装运单中是否有这个零件装运单(若有则选出SNO)每做这样一次检查包括2次消息,共问一答103次,所以 T[4]=2×103s (33.3分) 策略5 在场地A选出北京的供应商的装运单把结果送到场地B,在场地B完成最后处理,所以 T[5]=1+(104×100)/104≈101秒 (1.68分) 策略6 在场地B的关系 P 中选出红色的元组(1000个),把结果送到场地A完成最终处理。所以 T[6]=1+(1000×100)/104=11秒


9.试述下列概念:两段提交协议(2PC);分布事务的原子性;全局死锁。

正确答案: 答案要点: 2PC:2PC把一个分布事务的事务管理分为协调者和参与者。 2PC的第一阶段:协调者向所有参与者发出“准备提交”信息。如果某个参与者准备提交,就回答“就绪”信息,否则回答“撤销”信息。参与者在回答前,应把有关信息写入自己的日志中。协调者在发出准备提交信息前也要把有关信息写入自己的日志中。如果在规定时间内协调者收到了所有参与者“就绪”的信息,则将作出提交的决定,否则将作出撤销的决定。 2PC的第二阶段:协调者将有关决定的信息先写入日志,然后把这个决定发送给的所有的参与者。所有参与者收到命令之后首先往日志中写入“收到提交(或撤销)”决定的信息,并向协调者发送“应答(ACK)”消息,最后执行有关决定。协调者收到所有参与者的应答消息后,一个事务的执行到此结束,有关日志信息可以脱机保存。 分布事务的原子性:分布事务的原子性就应该是:组成一个全局事务的所有子事务要么一致地全部提交,要么一致地全部滚回。 全局死锁:全局事务执行时发生的涉及两个以上场地上的死锁。


10.在分布式数据库系统中,对多副本的封锁有几种解决方法?

正确答案: 处理多副本的封锁可采取如下几种方法: (1)对写操作,要申请对所有副本的X锁。对于读操作,只要申请对某个副 本的S锁。 (2)无论是写操作还是读操作都要对多数(大于半数)副本申请X锁或S锁。 (3)规定某个场地上的副本为主副本,所有的读写操作均申请对主副本的封锁。


11. 分布式数据库系统有什么特点?

正确答案: 答案要点: 分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它是具有自己的性质和特征的系统。  数据独立性:除了数据的逻辑独立性与物理独立性外,还具有数据分布独立性亦称分布透明性。  集中与自治相结合的控制结构:各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时又有集中控制机制,协调各局部DBMS的工作,执行全局应用。  数据可以适当冗余以提高系统的可靠性、可用性和性能。  全局的一致性、可串行性和可恢复性。分布式数据库系统中各局部数据库应满足集中式数据库的一致性、并发事务的可串行性和可恢复性。除此以外还应保证数据库的全局一致性、全局并发事务的可串行性和系统的全局可恢复性。 (详细说明参见《概论》14.1.2)。