2 distributed
DESCRIPTION
2 DistributedTRANSCRIPT
-
7
.
2.1 (distributed database)
. (distributed DBMS) [OV91].
. " " " ". . / .
.
, , , : , ,
,
-
8
, ,
, , ,
, , ,
. , ,
.
. : .
(administrators) , . .
.
. , ( - ) -, , .
, , .
, , , , .
, ( - - ) , , . .
2.2
, . , , : . , . , [CP84].
-
9
2.2.1 2.1
. .
1
2
1 2
1
2 ...
2.1
(global schema).
, . , . ( ) (global relations).
, , (fragments). , (fragmentation schema). , [CP84] , . , , Ri i R.
. , , . , . (allocation schema).
-
10
, - . R j (physical image) R j, Rj. (copy of a fragment) Ri j Rij.
, , (local mapping schema) .
. : .
: (fragmetnation transparency) (location transparency). , . " " .
. , . (local mapping transparency) .
. , . , . , , (replication transparency).
.
2.2.2
: (horizontal fragmentation) (vertical fragmentation). , , , . , :
1. (completeness). ( ).
2. (reconstruction). . , ,
-
11
.
3. (disjointness). , ( , , ). .
2.2.3 (horizontal fragmentation)
(tuples) ( , , ). (selection) .
PROJECT (PNUM, NAME, BUDGET, CITY)
PROJECT1 = CITY='ATH' PROJECT PROJECT2 = CITY='SAL' PROJECT , :
CITY PROJECT, ,
PROJECT = PROJECT1 PROJECT2 ,
. , (XOR) .
, , . , ,
DEPT_TASK (EMPNUM, PNUM, ROLE) EMPNUM PROJECT PNUM. DEPT_TASK . , CITY DEPT_TASK. :
DEPT_TASK1 = DEPT_TASK >< PNUM = PNUM PROJECT1 DEPT_TASK2 = DEPT_TASK >< PNUM = PNUM PROJECT2 semi-join1 DEPT_TASK1
DEPT_TASK . (derived fragmentation). :
1 semi-join >< : R >< A = B S = (R >< A = B S)
-
12
DEPT_TASK PROJECT ( ).
. DEPT_TASK
PROJECT . , - .
2.2.4 (vertical fragmentation)
. ( join) . , :
EMP (EMPNUM, NAME, SALARY, TAX, MGRNUM, DEPTNUM)
EMP1 = EMPNUM, NAME, MGRNUM, DEPTNUM EMP EMP2 = EMPNUM, SAL, TAX EMP
EMP = EMP1 >< EMPNUM = EMPNUM EMP2
EMPNUM EMP. . , , , .
, , EMPNUM, .
, , . , , . ( ) - - , .
2.2.5 (mixed fragmentation)
. .
EMP (EMPNUM, NAME, SALARY, TAX, MGRNUM, DEPTNUM) :
EMP1 = DEPTNUM 10 EMPNUM, NAME, MGRNUM, DEPTNUM EMP EMP2 = 10 < DEPTNUM 20 EMPNUM, NAME, MGRNUM, DEPTNUM EMP EMP3 = DEPTNUM > 20 EMPNUM, NAME, MGRNUM, DEPTNUM EMP
-
13
EMP4 = EMPNUM, NAME, SAL, TAX EMP :
EMP = (EMP1,EMP2, EMP3) >< EMPNUM = EMPNUM (EMPNUM, SAL, TAX EMP4)
2.2. , (fragmetation tree), , .
EMP
EMP4
EMP1 EMP2 EMP3
2.2
2.3
: top-down bottom-up2. , - , , ( ) .
top-down , . 2.3 [OV91] top-down .
2 bottom-up . [CP84], [OV91] .
-
14
Interface
Feedback Feedback
2.3 Top-down
' ,
. : interface (conceptual design). , . , : , , , ,
-
15
. interface .
(global conceptual schema) , . .
(local conceptual schemata). , .
, , . .
, : .
2.3.1
. , "" . . , ( ), . . , ( ) . .
, - - , ( ). , (primary), (derived), .
' , . , [CP84].
R . (simple predicate) :
= (minterm predicate) y P, P , , . :
-
16
y = AND (pi*), pi P, pi* = pi pi* = pi, y false (fragment) . , pi P P, pi . , pi - , .
P = {p1, p2, ..., pn} . , P , P (complete) (minimal). P P, . P , , , .
. : R: , P: : P': : F: (f: P'). begin
pi P, .. pi R ; P' := {pi}; P := P - {pi}; F := {fi}; { pi} do
begin pj .. pj fj P' ; P' := P' {pj}; P := P - {pj}; F := F {fj}; if pk P' then begin
P' := P' - {pk}; F := F - {fk};
end-if until P'
end. P',
P. ,
-
17
(.. , .)
, , [CP84].
. .., 2
4004 . . , - ;- . : . , . , , . , . , , . :
EMP (EMPNUM, NAME, SALARY, TAX, MGRNUM, DEPTNUM) DEPT (DEPTNUM, NAME, AREA, MGRNUM) DEPT_TASK(DEPTNUM, TNUM, ROLE, BUDGET) TASK (TNUM, NAME, PROGRESS, CITY)
' , TASK. , ,
'KAST', 'RHO', 'ATH' . . :
SELECT NAME, PROGRESS FROM TASK WHERE TNUM = $1;
. , 80%. . . :
p1: CITY = 'KAST' p2: CITY = 'RHO'
{p1, p2} . :
q1: CITY = 'KAST' AND CITY = 'RHO' q2: CITY = 'KAST' AND NOT (CITY = 'RHO') q3: NOT (CITY = 'KAST') AND CITY = 'RHO' q4: NOT(CITY = 'KAST') AND NOT (CITY = 'RHO')
q1 q4 . ,
CITY = 'KAST' => (CITY = 'RHO') CITY = 'RHO' => (CITY = 'CAST')
-
18
q2, q3 p1, p2 {p1, p2} .
query CITY, , TNUM CITY.
TASK : TASK1 = CITY='KAST' TASK TASK2 = CITY='RHO' TASK
DEPT : .
( ).
. , .
: p1: CITY = 'KAST' p2: CITY = 'RHO' p3: CITY = 'ATH' p4: AREA = 'NORTH' p5: AREA = 'SOUTH'
DEPTNUM 1 10, 11 20 21 30. :
p1: DEPTNUM < 10 p2: 10 < DEPTNUM < 20 p3: DEPTNUM > 20 p4: AREA = 'NORTH' p5: AREA = 'SOUTH'
( ) :
q1: DEPTNUM < 10 q2: 10 < DEPTNUM < 20 AND AREA = 'NORTH' q3: 10 < DEPTNUM < 20 AND AREA = 'SOUTH' q4: DEPTNUM > 20
, DEPT : DEPT1 = DEPTNUM 10 DEPT DEPT2 = 10 < DEPTNUM 20 AND AREA = 'NORTH' DEPT DEPT3 = 10 < DEPTNUM 20 AND AREA = 'SOUTH' DEPT DEPT4 = DEPTNUM > 20 DEPT
, . (distributed join) . , R S, R S. , Ri Sj.
-
19
(join graph). G (, ) R S , . 2.4 .
(total) (reduced) . : (partitioned)
. (simple)
. 2.4 .
R1
R2
R3
S1
S2
()
R1
R2
R3
S1
S2
()
R1 S1
R2 S2
R3 S3
()
2.4
, joins ( ).
, semi-join , . , :
. DEPT_TASK.
DEPT_TASK: (
DEPT_TASK >
-
20
( DEPT_TASK >< TNUM = TNUM TASK1 DEPT_TASK2 = DEPT_TASK >< TNUM = TNUM TASK2
DEPT_TASK1 = DEPT_TASK >< DEPTNUM = DEPTNUM DEPT1 DEPT_TASK2 = DEPT_TASK >< DEPTNUM = DEPTNUM DEPT2 DEPT_TASK3 = DEPT_TASK >< DEPTNUM = DEPTNUM DEPT3 DEPT_TASK4 = DEPT_TASK >< DEPTNUM = DEPTNUM DEPT4 semi-join
. . , , , semi-joins - .
. , , . . , .
, (greedy) . , (split approach) , (grouping approach) , .
( ) (replication). . , , .
, , , . , , .
. EMP.
EMP:
/ ( NAME, SAL, TAX)
-
21
( NAME, MGRNUM DEPTNUM)
EMP : EMP1 (EMPNUM, NAME, SALARY, TAX) EMP2 (EMPNUM, NAME, MGRNUM, DEPTNUM)
(EMPNUM) . , NAME. , , . , , , , .
, , EMP2 DEPT. , EMP:
EMP1 (EMPNUM, NAME, SALARY, TAX) EMP2 (EMPNUM, NAME, MGRNUM, DEPTNUM)- EMP3 = EMP2 >< DEPTNUM = DEPTNUM DEPT1 EMP4 = EMP2 >< DEPTNUM = DEPTNUM DEPT2 EMP5 = EMP2 >< DEPTNUM = DEPTNUM DEPT3 EMP6 = EMP2 >< DEPTNUM = DEPTNUM DEPT4
semi-join .
2.3.2
(fragment allocation) , . : , , .
, (best fit): . , .
, , , : "" (all benefitial sites)
. .
(additional replication) ( ) .
, , [CP84]. . :
-
22
i j k fkj k j rki k i uki k i nki k i (nki = rki +
uki)
(
). Ri . j :
Bij = k fkj nki Ri j Bij .
"" Ri . i j :
Bij = k fkj rki - C k j' j fkj' uki To C ( - ). Ri Bij . Bij , .
, . ' , , , . di Ri Fi Ri , :
(di) = (1 - 21 - di) Fi ,
Ri. i j:
Bij = k fkj rki - C k j' j fkj' uki - (di)
, . Ri r, Rs Rt s t . :
-
23
As At s t Rs Rt . .
1 r Rs Rt. , , r.
2 r Rs Rt. ( ) s t.
3 r, s, t Rs Rt. ( r, s t).
:
Bist = kAs fks nki + kAt fkt nki - kA1 fkr nki - kA2 2 fkr nki - kA3 j r, s, t fkj nki
(nki). nki rki + C uki.
, Ri r, Rs Rt s t . , : As s
Rs Rs . At.
2 r ( Rs Rt).
3 r, s, t Rs Rt.
.
2.4
,
. , , . , . , (global queries) (fragment queries)
-
24
. (, ). , [CP84].
2.4.1
. . , . , , . , :
NAME, DEPTNUM DEPTNUM = 15 EMP DEPTNUM = 15 NAME, DEPTNUM EMP
(operator tree). .
TNUM, ROLE CITY = 'RHO' (TASK >< DEPT_TASK) 2.5:
EMPNUM, ROLE
CITY='RHO'
>
-
25
, . , , , . U , R.
U1 U2 R U2 U1 R
R1 B R2 R2 R1
R1 B (R2 B R3) (R1 R2) B R3
U R U1 U2 R
U(R1) B U(R2) U(R1 R2) . ,
. , , . [OV91], [CP84] . , :
1. .
. :
A1 F2 R = F2 A1 R, Attr(F2) A1 2. .
.
R1 >
-
26
(R1 R2) >< (S1 S2) = (R1 >< S1) (R1 >< S2) (R2 >< S1) (R2 >< S2)
,
( R1, R2, S1, S2 R, S R >< S).
2.4.2
. (canonical expression), , . : . ( , , ).
. , , . , , . , , . , 2.6 2.7, . 2.5
TNUM, ROLE
>
-
27
TNUM, ROLE
CITY='RHO'
>< DEPT_TASK), TASK1 TASK2, .
2. , . , TASK1, TNUM CITY='RHO'(TASK1), .
3. ( ), . , CITY='RHO' (TASK2) CITY='RHO'CITY='KAST' (TASK), . (, , ).
-
28
4. , , ( ). , , .
5. -, . , DEPTNUM < 10 AREA = NORTH, , AREA = SOUTH DEPT_TASK DEPTNUM < 10.
6. semi-joins joins, .
semi-joins
(join) ,
. , , , . semi-join , .
, , , semi-join. , . R S [OV91]:
R >
-
29
>
-
30
, :
(bytes) S# 4 P# 4 QTY 10
SNAME 96 PNAME 196
, , 4
S >< SP >< P (
) (). .
semi-join. ' semi-join,
. , S, SP P. , : S (S#, SNAME) 6
4+96=100 bytes. , S 6x100 bytes=600 bytes. SP (S#, P#, QTY) 8
4+4+10=18 bytes. , SP 8x18 bytes=144 bytes. P (P#, PNAME) 6
4+196=200 bytes. , P 6x200 bytes=1200 bytes. S JOIN SP JOIN P, R,
8 : R(S#, SNAME, P#, PNAME, QTY)3. 4+96+4+196+10=310 bytes. , R 8310 bytes=2480 bytes.
, S >< SP >< P 4, , ( R) 4 . R, , . CR= 2480 bytes.
, 1 2 3, , 2480 bytes, .
, , S, SP P 4 , .
3 R(S#, SNAME, P#, PNAME, S#, P#, QTY). , .
-
31
S, SP P 4, 600+144+1200=1944 bytes.
S >< SP
S >< SP. : ' S# SP 2 1. semi-join S'. , 4, S', SP, P . SP 4, semi-join 1. , :
2, S# SP. : F = S#(SP). F 3 : s1, s2, s3. 1, S. , 34=12 bytes.
1, join S S# 2, : S'= F >< S. S' 3(4+96)=300 bytes.
, S 1 4, 300 bytes. S >< SP, 1 4 S, .
, , SP 2 4 (144 bytes) P 3 4 (1200 bytes).
, 4, R = S' >< SP >< P. , S >< SP, : 12+300+144+1200=1656 bytes.
, semi-joins S# P# SP 3
S#, P#. , S# S P# P 6 . S# P# S, SP P, , S# P#, SP.
, : i) S# SP 2
F=S#(SP), C1=12 bytes, 1. ii) , P# SP 2
G=P#(SP), C1=12 bytes, 3. iii) F=S >
-
32
vii), G, C3=600 bytes, 3 F" >
-
33
2.5.1
. 2.9 [OV91]
. monitor . monitor : (transaction manager) (scheduler). . . - - (recovery managers). , .
. monitor , monitor , , .
Begin_transaction,
Read, Write,Commit, Abort
monitor
2.9 monitor
2.5.2
(serializability), , - -, , . , .
-
34
(schedule) ( -local schedule) (global schedule). , . , . . , [OV91],
, x :
1: Read(x)
x := x + 5 Write(x) Commit
2: Read(x) x := 10 * x Write(x) Commit
.
: S1 = {R1(x), W1(x), C1, R2(x), W2(x), C2} S2 = {R2(x), W2(x), C2, R1(x), W1(x), C1}
( ), , . x 1. , 60, 15, .
, . (one-copy serializable).
x x1, x2, ..., xn. x (logical data) (physical data). , . , , , read once/write all (ROWA).
2.5.3
. . - - , :
-
35
(optimistic) , . (pessimistic) . , .
, : (lockings), (timestamps). , . , .
, , , . , (lock manager). : (centralized locking),
.
(primary copy locking) , . .
(decentralized locking), . . , , .
2.5.4
(2 Phase Locking - 2PL). O : read-lock (Shared - S) write-lock (eXclusive -X). , read-lock . , , write-lock . (lock) . O 2 Phase Locking, : , , . .
1 2 . 2 , ( 1, 2, 2 ):
-
36
S X S X
,
(physical locking) (logical locking). , . , . , , , , : , . , ' . .
, , . 2PL . .
2.10 . (. [OV91]).
Monitor
1.
2.
3.
4.
5.
2.10
bottleneck ,
-
37
. , , .
, . . "" (, ) . . , , .
- . ' , ' .
, 2PL , . . , , . . , bottleneck , , . 2.11 2PL .
Monitor
1.
3.
2.
4.
2.11 2PL
2.6
(COMMIT & RECOVERY OF DISTRIBUTED TRANSACTIONS)
.
-
38
, .
2.6.1
:
1. . , , (abort) (divide by zero, ). , (rollback) .
2. . , - (.. ) . . , .
3. . , . (media failures). . ' , .
2.6.2 -
(log). : ( undo)
, (commit) ,
( redo) , (.. buffers ).
: . , : (tupleID) record record .
,
-
39
. . write-ahead log, . write-ahead log : ,
. ,
. ,
(checkpoints) . (.. ) , , . : records
buffers
. ,
, .
, log . backup . , .
2.6.3
. , monitors : begin_transaction, read, write, abort, commit, recover. begin_transaction, read write (.. ROWA). , , . , ( monitor, ) (coodinator) . monitors , .
: (termination) . , , , . , , , .
-
40
- 2 Phase Commit (2PC)
, : .
, , , .
, .
, (2 Phase Commit - 2PC) . To 2PC (commit) . ( , ). 2PC , :
' , record "begin_transaction" ( ). , "prepare" "WAIT". "prepare" . , record "ready", "vote-commit" "READY". , , record "ABORT" "vote-abort" . , , . . , "" . , . , "commit" record , "global-commit" record "COMMIT". , "abort" record , "global-abort" "ABORT". . "end-of-transaction" record . 2.12.
-
41
preparevote-abort/
vote-commitglobal-abort/
global-commitaborted/
commited
2.12 2 Phase Commit - 2PC
2PC (centralized 2PC)
. (. [OV91]) 2PC (distributed 2PC). , , "prepare" . , (, ).
preparevote-abort/
vote-commitglobal-abort/
global-commit
2.13 2PC ,
. , , , "" . 2PC , ( veto)
-
42
. (. [OV91]), timeouts. , :
1. . , timeout, . , , timeout, - , .
2. "ready" record . timeout , . , .
3. "ready" record "READY" . , . , .
4. "prepare" record "global_commit" record . . , "prepare" ( ) . "prepare", .
5. "global_commit" record , "end-of-transaction" record. .
6. . , , 2 3, , 4 5.
, , , . , 2PC. :
( , , )
. : 2PC
. , , ( ). ( ) . [OV91].
-
43
, .
2.7
[OV91] M.T. Ozsu, P. Valduriez. Principles of Distributed Database Systems. Prentice-
Hall, 1991 [CP84] S. Ceri, G. Pelagatti. Distributed Databases -Principles and Systems. McGraw-
Hill, 1984 [Oz93] T. Ozsu, "Transaction models and transaction management in object-oriented
database systems", NATO Advanced Study Institute, Object-Oriented Database System, Kusadasi Turkiye, August 1993
-
44