2 distributed

38
ΚΑΤΑΝΕΜΗΜΕΝΕΣ ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ 7 ΚΑΤΑΝΕΜΗΜΕΝΕΣ ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ Π. ΒΑΣΙΛΕΙΑ∆ΗΣ 2.1 ΓΕΝΙΚΑ Μια κατανεμημένη βάση δεδομένων (distributed database) μπορεί να οριστεί σαν μια ομάδα από λογικά συνδεόμενες βάσεις δεδομένων που είναι διεσπαρμένες σε ένα δίκτυο υπολογιστών. Ένα κατανεμημένο σύστημα διαχείρισης βάσεων δεδομένων (distributed DBMS) μπορεί να οριστεί σαν ένα πρόγραμμα που επιτρέπει τη διαχείριση μιας κατανεμημένης βάσης δεδομένων με τρόπο που να κάνει την κατανομή της διαφανή στους χρήστες [OV91]. Οι δύο αυτοί ορισμοί δίνουν μια πρώτη εικόνα για το τι μπορεί να είναι το αντικείμενο αυτού του κεφαλαίου. Ο προσεκτικός αναγνώστης θα διαπιστώσει ότι η έμφαση κρύβεται στις εκφράσεις "λογικά συνδεόμενες βάσεις δεδομένων" και "διαφανής κατανομή". Μια κατανεμημένη βάση δεδομένων δεν είναι ένα σύνολο τοπικών βάσεων που βρίσκονται τυχαία διεσπαρμένες σε ένα δίκτυο και επικοινωνούν μεταξύ τους. Υπάρχει αφενός μια λογική συνοχή των τοπικών βάσεων και αφετέρου ένας τρόπος επερώτησής τους χωρίς ο χρήστης/προγραμματιστής να πρέπει να γνωρίζει την εσωτερική δομή της κατανομής. Η ανάγκη του τεμαχισμού μιας βάσης δεδομένων και της κατανομής της γεωγραφικά στο δίκτυο προέκυψαν ιστορικά από την ανάγκη των μεγάλων οργανισμών να εκμεταλλεύονται το σύνολο των δεδομένων τους που βρίσκεται αποθηκευμένα σε διάφορα τοπικά μηχανογραφικά συστήματα. Συνοπτικά, οι λόγοι που καθιέρωσαν τα κατανεμημένα συστήματα σαν μια αποδεκτή και χρησιμοποιούμενη στην πράξη, τεχνολογία, μπορούν να περιγραφούν αδρά ως εξής: οργανωτικοί και οικονομικοί λόγοι, καθώς αποδείχθηκε, πολλές φορές στην πράξη ότι η συντήρηση κατανεμημένων συστημάτων μπορεί να είναι πιο αποδοτική από τη συντήρηση ενός κεντρικού συστήματος,

Upload: fordcell

Post on 24-Nov-2015

8 views

Category:

Documents


4 download

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