分布式数据库.docx

上传人:b****6 文档编号:3717668 上传时间:2022-11-24 格式:DOCX 页数:13 大小:266.40KB
下载 相关 举报
分布式数据库.docx_第1页
第1页 / 共13页
分布式数据库.docx_第2页
第2页 / 共13页
分布式数据库.docx_第3页
第3页 / 共13页
分布式数据库.docx_第4页
第4页 / 共13页
分布式数据库.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

分布式数据库.docx

《分布式数据库.docx》由会员分享,可在线阅读,更多相关《分布式数据库.docx(13页珍藏版)》请在冰豆网上搜索。

分布式数据库.docx

分布式数据库

分布式数据库系统2011-2012

1.分布式数据库和集中式数据库的差别主要有哪些?

数据分片的正确性判据是什么?

答:

1)分布式数据库和集中式数据库的差别主要表现在以下几个方面:

①在物理分布性方面:

分布式数据库中的数据不是存储在一个站点上,而是分散存储在由计算机网络联结起来的多个站点上,这是与集中式数据库的最大差别之一。

②在逻辑整体性方面:

分布式数据库中的数据逻辑上是互相联系,可以和分散在计算机网络不同结点上的数据库或文件的集合相区别,故有全局数据库(逻辑)和局部数据库(物理)的概念。

③在站点自治性方面:

分布式数据库各站点上的数据由本地的DBMS管理,完成本站点的应用。

集中式数据库虽然也可以把数据分散在不同的数据库中,但数据分布与应用程序没有直接联系。

④在数据独立性方面:

在集中式数据库中,数据独立性指数据的逻辑独立性与物理独立性。

在分布式数据库中,还增加了数据分布独立性,亦称分布透明性。

⑤在控制结构方面:

在集中式数据库中,对共享数据库的控制是集中的,并设有DBA负责监督和维护系统的正常运行.在分布式数据库中,数据的共享有两个层次,局部共享和全局共享。

⑥在数据冗余度方面:

在集中式数据库中,尽量减少冗余度是系统目标之一,在分布式数据库中却希望增加冗余数据,在不同的场地存储同一数据的多个副本。

⑦全局的一致性、可串行性和可恢复性:

分布式数据库中各局部数据库应满足集中式数据库的一致性、可串行性和可恢复性,除此以外还应保证数据库的全局一致性、并行操作的可串行性和系统的全局可恢复性。

2)数据分片的正确性判据:

若R={R1,R2,…,Rn},满足:

①完整性条件:

即如果a∈R,则必有a∈Ri,i=1,2,…,n

②可重构条件:

R=∪Ri(水平分片),或R=∞Ri(垂直分片)

③不相交条件:

Ri∩Rj=空集,i≠j,i,j=1,2,…,n(水平分片)

Ri∩Rj=主键属性,i≠j,i,j=1,2,…,n(垂直分片)

则数据分片正确。

2.将Student按系别水平分片,说明这种分片是满足正确性判剧的。

答:

1)将Student按系别水平分片如下:

Student1=SLdno=1Student

Student2=SLdno=2Student

Studen3=SLdno=3Student

2)从数据分片的正确性判剧来说明这种分片是满足正确性判剧的:

1完整性:

因为{dno=1}∈{dno={1,2,3}},{dno=2}∈{dno={1,2,3}},

{dno=3}∈{dno={1,2,3}},并且,Student集合中有且只有{dno=1},{dno=2}和{dno=3}这三个元素,满足完整性。

2可重构性:

因为,{dno={1,2,3}}={dno=1}∪{dno=2}∪{dno=3},

所以满足可重构性。

3不相交性:

因为,{dno=1}∩{dno=2}={dno=1}∩{dno=3}={dno=2}∩{dno=3}=空集

所以,限定语dno相斥,片段之间不相交,满足不相交性。

综上,这种分片是满足正确性判剧的

3答:

a.LEVEL1:

read(terminal,$sno)

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent

wheresno=$sno

write(terminal,$sname,$age,$dno,$type)

LEVEL2:

read(terminal,$sno)

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent1

wheresno=$sno

ifnot#FOUNDthen

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent2

wheresno=$sno

write(terminal,$sname,$age,$dno,$type)

LEVEL3:

read(terminal,$sno)

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent1atsite1

wheresno=$sno

ifnot#FOUNDthen

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent1atsite2

wheresno=$sno

ifnot#FOUNDthen

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent2atsite3

wheresno=$sno

ifnot#FOUNDthen

Selectsname,age,dno,typeinto$sname,$age,$dno,$type

fromStudent2atsite4

wheresno=$sno

write(terminal,$sname,$age,$dno,$type)

b.答:

LEVEL1:

UpdateStudent

Setdno=2

Wheresno=060138

LEVEL2:

(sno为主键)

Selectsnameinto$SNAMEfromstudent1

Wheresno=060138

If#FOUNDthen

Updatestudent1

Setdno=2

Wheresno=060138

Else

Updatestudent2

Setdno=2

Wheresno=060138

LEVEL3:

Selectsnameinto$SNAMEfromstudent1atsite1

Wheresno=060138

If#FOUNDthen

Updatestudent1atsite1

Setdno=2

Wheresno=060138

ElseSelectsnameinto$SNAMEfromstudent1atsite2

Wheresno=060138

If#FOUNDthen

Updatestudent1atsite2

Setdno=2

Wheresno=060138

ElseSelectsnameinto$SNAMEfromstudent2atsite3

Wheresno=060138

If#FOUNDthen

Updatestuden2atsite3

Setdno=2

Wheresno=060138

Else

Updatestuden2atsite4

Setdno=2

Wheresno=060138

4答:

因为分片原则是:

完备性,可重构性,不相交性。

这里:

P1vP2=true

Reconstruction

P1=!

P2

这两个断言可能不满足上述原则,原因是不能保证职位就只有manager和programmer这两个,故此应修改如下:

P1:

title=“manager”

P2:

title≠“manager”;

这样就满足了上述要求。

5答:

连接图如下:

Emp1

Emp2pay1

Emp3pay2

Emp4

这里采用partitionedgraph部分连接,可采用半连接方式进行查询优化,采用半连接可以减少站之间的数据输出量,但同时要增加通信次数和本地处理时间。

所以一般需要在全连接与半连接之间进行连接。

6.设:

C0=0,C1=1。

所有可选的Semi-Join:

Semi-Join

Selectivity

Benefit

Cost

P1:

RNSJB=BU

(P1)=20/50=0.4

0.6*(3+4+25)*5,000=96,000

4*20=80

P2:

RNSJA=AS

(P2)=20/100=0.2

0.8*(3+4+25)*5,000=128,000

3*20=60

P3:

UNSJB=BR

(P3)=1

-

4*50=200

P4:

UNSJC=CS

(P4)=5/10=0.5

0.5*(4+2+20)*100=1,300

2*5=10

P5:

SNSJA=AR

(P5)=1

-

3*100=300

P6:

SNSJC=CU

(P6)=1

-

2*10=20

选P2先做,对R的影响:

card(R)=0.2*5,000=1,000

n=5,000r=1,000mB=50mE=500

R

A

B

E

Size

3

4

25

Val

20

50

500

剩下的Semi-Join:

Semi-Join

Selectivity

Benefit

Cost

P1:

RNSJB=BU

(P1)=20/50=0.4

0.6*(3+4+25)*1,000=19,200

4*20=80

P3:

UNSJB=BR

(P3)=1

-

4*50=200

P4:

UNSJC=CS

(P4)=5/10=0.5

0.5*(4+2+20)*100=1,300

2*5=10

P5:

SNSJA=AR

(P5)=1

-

3*20=60

P6:

SNSJC=CU

(P6)=1

-

2*10=20

选P1先做,对R的影响:

card(R)=0.4*1,000=400

n=1,000r=400mA=20mE=500

R

A

B

E

Size

3

4

25

Val

20

20

300

剩下的Semi-Join:

Semi-Join

Selectivity

Benefit

Cost

P3:

UNSJB=BR

(P3)=1

-

4*20=80

P4:

UNSJC=CS

(P4)=5/10=0.5

0.5*(4+2+20)*100=1,300

2*5=10

P5:

SNSJA=AR

(P5)=1

-

3*20=60

P6:

SNSJC=CU

(P6)=1

-

2*10=20

选P4先做,对U的影响:

card(U)=0.5*100=50

n=100r=50mB=20mD=100

U

B

C

D

Size

4

2

20

Val

20

5

50

剩下的Semi-Join:

Semi-Join

Selectivity

Benefit

Cost

P3:

UNSJB=BR

(P3)=1

-

4*20=80

P5:

SNSJA=AR

(P5)=1

-

3*20=60

P6:

SNSJC=CU

(P6)=1

-

2*5=10

只有Cost没有Benefit,故停止。

选择收集数据的站点:

cost(Site1)=(3+2)*20+(4+2+20)*50=1,400

cost(Site2)=(3+4+25)*400+(4+2+20)*50=14,100

cost(Site3)=(3+4+25)*400+(3+2)*20=12,900

所以,选择Site1收集数据。

7

PairsofconflictingoperationinS1:

W2(x)

PairsofconflictingoperationinS2:

R3(y)

PairsofconflictingoperationinS3:

W2(x)

PairsofconflictingoperationinS4:

W2(x)

所以S1isconflictequivalenttoS3.

8答:

Execution1:

S1:

Ri(x)Rj(x)Wj(y)Wi(x)可串行化为:

TjTi

S2:

Ri(w)Rj(z)Wj(w)Wi(w)

∵S2中Ti、Tj为互相冲突的事务对,且在两个本地调度中的序不一致

∴execution1是不可串行的。

Execution2:

S1:

Ri(x)Rj(x)Wj(y)Wi(y)可串行化为:

TjTi

S2:

Wi(z)即为:

Ti

∴execution2可串行化为:

序列1:

Rj(x)Wj(y)Ri(x)Wi(z)Wi(y)

序列2:

Ri(x)Wi(y)Rj(x)Wj(y)Wi(z)

Execution3:

S1:

Ri(x)Rj(x)Wi(x)Wj(y)可串行化为:

TjTi

S2:

Ri(z)Rj(z)Wj(z)Wi(w)可串行化为:

TiTj

∴execution3可串行为:

可串行序列为:

Rj(x)Wj(y)Ri(x)Wi(x)Ri(z)Wi(w)Rj(z)Wj(z)

Execution4:

S1:

Ri(y)Rj(x)Wj(x)可串行化为:

TiTj或者TjTi(选择后者)

S2:

Wi(z)Ri(w)Rj(w)Wi(w)可串行化为:

TjTi

∴execution4可串行化为:

Ri(y)Rj(x)Wj(x)Rj(w)Ri(w)Wi(z)Wi(w)

Rj(w)Rj(x)Wj(x)Ri(w)Ri(y)Wi(z)Wi(w)

Rj(x)Rj(w)Wj(x)Ri(y)Ri(w)Wi(z)Wi(w)

Rj(x)Rj(w)Wj(x)Ri(w)Ri(y)Wi(z)Wi(w)

9:

1.

∵Ts(Ti)

∵Ts(Ti)>WTM(x)所以Ri(x)且RTM(x)=35

∵Ts(Ti)>=WTM(x)且Ts(Ti)>=RTM(x)所以Wi(x)且WTM(x)=35

∵Ts(Ti)>WTM(y)所以Ri(y)且RTM(y)=35

∵Ts(Ti)>=WTM(y)且Ts(Ti)>=RTM(y)所以Wi(y)且WTM(y)=35

再执行事务Tj

∵Ts(Tj)>WTM(x)所以Rj(x)且RTM(x)=40

∵Ts(Tj)>=WTM(x)且Ts(Tj)>=RTM(x)所以Wj(x)且WTM(x)=40

∵Ts(Tj)>WTM(y)所以Rj(y)且RTM(y)=40

∵Ts(Tj)>=WTM(y)且Ts(Tj)>=RTM(y)所以Wj(y)且WTM(y)=40

2.

∵Ts(Ti)

∵Ts(Ti)

再执行事务Tj

∵Ts(Tj)>WTM(x)Rj(x)且RTM(x)=40

∵Ts(Tj)>=WTM(x)且Ts(Tj)>=RTM(x)Wj(x)且WTM(x)=40

∵Ts(Tj)>WTM(y)Rj(y)且RTM(y)=40

∵Ts(Tj)>=WTM(y)且Ts(Tj)>=RTM(y)Wj(y)且WTM(y)=40

3.

∵Ts(Ti)>Ts(Tj)先执行事务Tj

∵Ts(Tj)>WTM(x)Rj(x)且RTM(x)=35

∵Ts(Tj)>=WTM(x)且Ts(Tj)>=RTM(x)Wj(x)且WTM(x)=35

∵Ts(Tj)>WTM(y)Rj(y)且RTM(y)=35

∵Ts(Tj)>=WTM(y)且Ts(Tj)>=RTM(y)Wj(y)且WTM(y)=35

再执行事务Ti

∵Ts(Ti)>WTM(x)Ri(x)且RTM(x)=40

∵Ts(Ti)>=WTM(x)且Ts(Ti)>=RTM(x)Wi(x)且WTM(x)=40

∵Ts(Ti)>WTM(y)Ri(y)且RTM(y)=40

∵Ts(Ti)>=WTM(y)且Ts(Ti)>=RTM(y)Wi(y)且WTM(y)=40

 

找不到10和11

10

11

12.

ROOT_AGENT:

Read(Terminal,$AMOUNT,$FROM_ACC,$TO_ACC);

Write(log,trsID,“begin_transaction”);

Begin_transaction;

SelectAMOUNTinto$FROM_AMOUNT

FromACCOUNT

WhereACCOUNT_NUMBER=$FROM_ACC;

If$FROM_AMOUNT-$AMOUNT<0then

Begin

Write(log,trsID,”abort”);

abort;

end;

Elsebegin

UpdateACCOUNT

SetAMOUNT=AMOUNT-$AMOUNT

WhereACCOUNT_NUMBER=$FROM_ACC;

CreateAgent1;

Send(trsID,Agent1,$AMOUNT,$TO_ACC);

Write(log,trsID,”prepare”);

Send(trsID,Agent1,“prepare”);

Receive(trsID,Agent1,message,timeout,ok);

Ifok=falseormessage=“abort”then

Begin

Write(log,trsID,“glbal_abort”);

Send(trsID,Agent1,“abort”);

End;

Elsebegin

Write(log,trsID,“global_commit”);

Send(trsID,Agent1,”commit”);

Receive(trsID,Agent1,message,timeout,ok);

Write(log,trsID,“complete”);

Commit;

End;

End;

Agent1:

Receive(trsID,ROOT_AGENT,$AMOUNT,$TO_ACC);

Receive(trsID,ROOT_AGENT,message,timeout,ok);

Lock(trsID,tupleID,exclusive,timeout,ok);

Ifok=truethen

Begin

Write(log,trsID,“begin_transaction”);

Write(log,trsID,”ready”);

Send(trsID,ROOT_AGENT,“ready”);

End;

Elsebegin

Write(log,trsID,“abort”);

Send(trsID,ROOT_AGENT,“abort”);

Abort;

End;

Receive(trsID,ROOT_AGENT,message,timeout,ok);

Ifmessage=“abort”then

Begin

Write(log,trsID,“abort”);

Send(trsID,ROOT_AGENT,“ack”);

Abort;

End;

Elseifmessage=“commit”then

begin

write(log,trsID,“commit”);

send(trsID,ROOT_AGENT,“ack”);

UpdateACCOUNT

SetAMOUNT=AMOUNT+$AMOUNT

WhereACCOUNT_NUMBER=$TO_ACC;

Unlock(trsID,tupleID);

End;

13.

一个调度S中,各个事务的操作执行时不叠加(即一个接着一个发生),则这个调度是串行的(serial)。

一个调度Sc是可串行的(serializable),当且仅当Sc冲突等价于一个串行调度。

这种可串行化通常称为冲突等价可串行化。

若一个并发执行的所有事务都遵守2PL,则这些事务的所有并发调度策略都是可串性化的。

2PL是可串行化的充分条件,不是必要条件。

所以可以满足可串行化。

2pl和乐观算法的根本不同是,2pl是悲观算法的一种锁协议算法,2pl在对任何数据进行读写之前,事务要先获得对该数据的封锁。

乐观算法,可以利用锁协议,也可以利用时间戳协议,所有用户读取数据时不锁定数据,当一个用户更新数据时,系统将进行检查,查看该用户读取数据后其他用户是否又更改了该数据。

如果其他用户更新了数据,将产生一个错误。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1