2 distributed

Post on 24-Nov-2015

8 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

2 Distributed

TRANSCRIPT

  • 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

top related