分布式数据库文档格式.docx

上传人:b****6 文档编号:16622484 上传时间: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

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:

fromStudent1

ifnot#FOUNDthen

fromStudent2

LEVEL3:

read(terminal,$sno)

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

fromStudent1atsite1

fromStudent1atsite2

fromStudent2atsite3

fromStudent2atsite4

b.答:

LEVEL1:

UpdateStudent

Setdno=2

Wheresno=060138

LEVEL2:

(sno为主键)

Selectsnameinto$SNAMEfromstudent1

If#FOUNDthen

Updatestudent1

Else

Updatestudent2

LEVEL3:

Selectsnameinto$SNAMEfromstudent1atsite1

Wheresno=060138

Updatestudent1atsite1

Setdno=2

Wheresno=060138

ElseSelectsnameinto$SNAMEfromstudent1atsite2

Updatestudent1atsite2

Wheresno=060138

ElseSelectsnameinto$SNAMEfromstudent2atsite3

Updatestuden2atsite3

Setdno=2

Else

Updatestuden2atsite4

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:

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

选P1先做,对R的影响:

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

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

300

SNSJA=AR

选P4先做,对U的影响:

card(U)=0.5*100=50

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

U

C

D

2

5

只有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)<

W1(x),W2(x)<

R3(x),W2(x)<

R1(x),W1(x)<

R3(x),W1(x)<

R2(x),W2(y)<

R3(y)

PairsofconflictingoperationinS2:

R3(y)<

W2(y),W1(x)<

W2(x),R3(x)<

W2(x),W2(x)<

R1(x)

PairsofconflictingoperationinS3:

R1(x),W2(x)<

R3(x),R3(x)<

W1(x),W2(y)<

PairsofconflictingoperationinS4:

R3(x),W2(y)<

R3(y),W1(x)<

R3(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:

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

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:

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

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:

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

TiTj或者TjTi(选择后者)

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

∴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(Tj)所以先执行事务Ti

∵Ts(Ti)>

WTM(x)所以Ri(x)且RTM(x)=35

=WTM(x)且Ts(Ti)>

=RTM(x)所以Wi(x)且WTM(x)=35

∵Ts(Ti)>

WTM(y)所以Ri(y)且RTM(y)=35

=WTM(y)且Ts(Ti)>

=RTM(y)所以Wi(y)且WTM(y)=35

再执行事务Tj

∵Ts(Tj)>

WTM(x)所以Rj(x)且RTM(x)=40

=WTM(x)且Ts(Tj)>

=RTM(x)所以Wj(x)且WTM(x)=40

WTM(y)所以Rj(y)且RTM(y)=40

=WTM(y)且Ts(Tj)>

=RTM(y)所以Wj(y)且WTM(y)=40

2.

Ts(Tj)先执行事务Ti

∵Ts(Ti)<

WTM(x)拒绝该操作,事务退出

WTM(x)Rj(x)且RTM(x)=40

=RTM(x)Wj(x)且WTM(x)=40

WTM(y)Rj(y)且RTM(y)=40

=RTM(y)Wj(y)且WTM(y)=40

3.

Ts(Tj)先执行事务Tj

WTM(x)Rj(x)且RTM(x)=35

=RTM(x)Wj(x)且WTM(x)=35

WTM(y)Rj(y)且RTM(y)=35

=RTM(y)Wj(y)且WTM(y)=35

再执行事务Ti

WTM(x)Ri(x)且RTM(x)=40

=WTM(x)且Ts(Ti)>

=RTM(x)Wi(x)且WTM(x)=40

WTM(y)Ri(y)且RTM(y)=40

=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;

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;

Write(log,trsID,“abort”);

Send(trsID,ROOT_AGENT,“abort”);

Abort;

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

Ifmessage=“abort”then

Send(trsID,ROOT_AGENT,“ack”);

Elseifmessage=“commit”then

begin

write(log,trsID,“commit”);

send(trsID,ROOT_AGENT,“ack”);

UpdateACCOUNT

SetAMOUNT=AMOUNT+$AMOUNT

WhereACCOUNT_NUMBER=$TO_ACC;

Unlock(trsID,tupleID);

13.

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

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

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

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

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

所以可以满足可串行化。

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

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

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

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

当前位置:首页 > 外语学习 > 英语学习

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

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