Architetture distribuite
BDE-ARC 1
BDE
Basi di dati distribuite
a
RETE :
LAN (Local Area Network)
WAN (Wide Area Network)
b
DBMS :
Sistema omogeneo
Sistema eterogeneo
SYBASE
ORACLE
DB2
CLIENT
BDE-ARC 2
BDE
Problemi delle basi di dati distribuite
•
•
•
•
Autonomia vs cooperazione
Trasparenza
Efficienza
Affidabilità
BDE-ARC 3
BDE
Autonomia e cooperazione
L'esigenza di autonomia:
- Portare competenze e controllo
laddove vengono gestiti i dati
- Rendere la maggior parte delle
applicazioni NON distribuite (!)
L'esigenza di cooperazione:
- Alcune applicazioni sono intrinsecamente
distribuite e richiedono l'accesso a
piu' basi di dati
BDE-ARC 4
BDE
Frammentazione dei dati
Scomposizione delle tabelle in modo
da consentire la loro distribuzione
proprieta':
- Completezza
- Ricostruibilita'
BDE-ARC 5
BDE
Frammentazione orizzontale
FRAMMENTI:
insiemi di tuple
FR1
FR2
COMPLETEZZA:
presenza
di tutte le tuple
FR3
RICOSTRUZIONE:
unione
BDE-ARC 6
BDE
Frammentazione verticale
FRAMMENTI:
insiemi di attributi
COMPLETEZZA:
presenza
di tutti gli attributi
FR1 FR2 FR3
RICOSTRUZIONE:
join sulla chiave
BDE-ARC 7
BDE
Esempio: conti correnti bancari
CONTO-CORRENTE (NUM-CC,NOME,FILIALE,SALDO)
TRANSAZIONE (NPROG, NUM-CC,DATA, OPERAZIONE,
AMMONTARE, CAUSALE)
CENTRO
FILIALE1
FILIALE2
FILIALE3
BDE-ARC 8
BDE
Frammentazione orizzontale principale
Ri = 
Pi
R
esempio:
 Filiale=1 CONTO-CORRENTE
CONTO2 =  Filiale=2 CONTO-CORRENTE
CONTO3 =  Filiale=3 CONTO-CORRENTE
CONTO1 =
BDE-ARC 9
BDE
Frammentazione orizzontale
derivata
Si = S  Ri
esempio:
TRANS1 = TRANSAZIONE  CONTO1
TRANS2 = TRANSAZIONE  CONTO2
TRANS3 = TRANSAZIONE  CONTO3
BDE-ARC 10
BDE
Allocazione dei frammenti
CENTRO
CONTO1
TRANS1
CONTO2
TRANS2
CONTO3
TRANS3
CONTO1
CONTO2
CONTO3
TRANS1
TRANS2
TRANS3
FILIALE 1
FILIALE 2
FILIALE 3
BDE
BDE-ARC 11
Livelli di trasparenza
Modalita’ per esprimere interrogazioni
offerte dai DBMS commerciali:
LIVELLI: FRAMMENTAZIONE
ALLOCAZIONE
LINGUAGGIO
BDE-ARC 12
BDE
Trasparenza di frammentazione
QUERY :
estrarre il saldo del conto corrente 45
SELECT SALDO
FROM CONTO-CORRENTE
WHERE NUM-CC=45
BDE-ARC 13
BDE
Trasparenza di allocazione
IPOTESI : Allocazione incerta,
probabilmente alla filiale 1
SELECT SALDO FROM CONTO1
WHERE NUM-CC=45
IF (NOT FOUND) THEN
( SELECT SALDO FROM CONTO2
WHERE NUM-CC=45
UNION
SELECT SALDO FROM CONTO3
WHERE NUM-CC=45 )
BDE
BDE-ARC 14
Trasparenza di linguaggio
SELECT SALDO FROM CONTO1@1
WHERE NUM-CC=45
IF (NOT FOUND) THEN
( SELECT SALDO FROM CONTO2@2
WHERE NUM-CC=45
UNION
SELECT SALDO FROM CONTO3@3
WHERE NUM-CC=45 )
BDE-ARC 15
BDE
Efficienza
• Ottimizzazione delle query
• Modalita' di esecuzione
- seriale
- parallela
BDE-ARC 16
BDE
Esecuzione seriale
CENTRO
CONTO2
CONTO3
CLIENT
CONTO1
FILIALE1
BDE-ARC 17
BDE
Esecuzione parallela
CLIENT
CONTO1
CONTO2
CONTO3
FILIALE1
FILIALE2
FILIALE3
BDE-ARC 18
BDE
Protocolli di
commit
BDE-ARC 19
BDE
Transazioni distribuite
BEGIN TRANSACTION
UPDATE CONTO1@1
SET SALDO=SALDO + 500.000
WHERE NUM-CC=45;
UPDATE CONTO2@2
SET SALDO=SALDO - 500.000
WHERE NUM-CC=35;
COMMIT-WORK
END TRANSACTION
BDE-ARC 20
BDE
Transazioni distribuite
CLIENT
45
+ 500.000
35
FILIALE1
- 500.000
FILIALE2
BDE-ARC 21
BDE
Proprieta' ACIDe
dell’esecuzione distribuita
• Isolamento
se ciascuna
sottotransazione e' a due
fasi la transazione e'
globalmente serializzabile
• Persistenza
se ciascuna
sottotransazione gestisce
correttamente i log, i dati
sono globalmente
persistenti
• Consistenza
se ciascuna
sottotransazione
preserva l'integrita'
locale i dati sono
globalmente consistenti
• Atomicita'
e' il principale problema
delle transazioni
distribuite
BDE-ARC 22
BDE
Guasti in un sistema distribuito
• Caduta di nodi
• Perdita di messaggi
• Interruzione della rete
MSG
BDE-ARC 23
BDE
Protocolli distribuiti
e perdita di messaggi
A: SEND(B,MSG)
B:
RECEIVE(MSG)
SEND(A,ACK)
A: RECEIVE(ACK)
BDE-ARC 24
BDE
Commit a due fasi
Protocollo per garantire l'atomicita' di
sotto-transazioni distribuite
Protagonisti
- un coordinatore (Transaction Manager, TM)
- molti partecipanti (Resource Manager, RM)
Come un matrimonio
- fase uno: dichiarazione di intenti
- fase due: dichiarazione del matrimonio
BDE
BDE-ARC 25
Record nel log del coordinatore
a PREPARE: identita' dei partecipanti
b GLOBAL COMMIT/ABORT: decisione
c COMPLETE: termine del protocollo
Record nel log del partecipante
a READY: disponibilita' al commit
b LOCAL COMMIT/ABORT: decisione ricevuta
BDE-ARC 26
BDE
Fase 1
C: WRITE-LOG(PREPARE)
SET TIME-OUT
SEND (Pi,PREPARE)
Pi: RECEIVE(C,PREPARE)
IF OK THEN WRITE-LOG(READY)
MSG=READY
ELSE MSG=NO
SEND (C,MSG)
BDE-ARC 27
BDE
Fase 2
C: RECEIVE(Pi,MSG)
IF TIME-OUT OR ONE(MSG)=NO
THEN WRITE-LOG(GLOBAL-ABORT)
DECISION=ABORT
ELSE WRITE-LOG(GLOBAL-COMMIT)
DECISION=COMMIT
SEND(Pi,DECISION)
Pi: RECEIVE(C,DECISION)
IF COMMIT THEN WRITE-LOG(COMMIT)
ELSE WRITE-LOG(ABORT)
SEND (C,ACK)
C: RECEIVE(Pi,ACK)
WRITE-LOG(COMPLETE)
BDE-ARC 28
BDE
Diagramma del commit a due fasi
PREPARE
coordinatore
GLOBAL
DECISION
COMPLETE
t
MSG
PREPARE
DECISION
ACK
partecipante
t
READY
LOCAL
DECISION
BDE-ARC 29
BDE
Protocollo 2PCommit con time-out e
finestra di incertezza
Prepare
Global Decision
time-out 1
Complete
time-out 2
TM
prepare
msg
ready
msg
Ready
decision
msg
ack
msg
Local Decision
RM
Finestra di incertezza
BDE-ARC 30
BDE
Incertezza
• Un RM dopo essersi dichiarato “ready” perde la
sua autonomia e attende la decisione del TM. Un
guasto del TM lascia l’RM in uno stato di
incertezza, in cui tutte le risorse acquisite con
lock sono bloccate.
• L’intervallo tra la scrittura dei record ready e
commit o abort è chiamato finestra di incertezza.
Il protocollo è progettato per minimizzare la sua
durata.
BDE-ARC 31
BDE
Complessità del protocollo
Deve poter gestire tutti i guasti:
- caduta del coordinatore
- caduta di uno o più partecipanti
- perdite di messaggi
I protocolli di recovery sono svolti dai TM o RM dopo i
guasti; ristabiliscono uno stato finale corretto
BDE-ARC 32
BDE
Perdita di messaggi
• La perdita dei messaggi di “prepare” o
“ready” sono indistinguibili; in entrambi i
casi scatta il time-out sul TM e viene
deciso un “global abort”.
• La perdita dei messaggi “decision” or
“ack” sono pure indistinguibili. In
entrambi i casi scatta il time-out sul TM
e viene ripetuta la seconda fase.
BDE-ARC 33
BDE
Recovery dei partecipanti
• Viene svolto con ripresa a caldo; per ogni transazione
dipende dall’ultimo record (azione) nel log:
– Se è una azione generica oppure un “abort” tutte le
azioni sono disfatte; se è un “commit”, le azioni
vengono rifatte;
– Se è un “ready”, il guasto è accaduto durante il
commit a due fasi; il partecipante è in dubbio circa
l’esito della transazione.
• Durante il protocollo di ripresa a caldo, si collezionano
tutte le transazioni in dubbio; di esse si chiede l’esito ai
rispettivi TM (richiesta di recovery remota).
BDE-ARC 34
BDE
Recovery del coordinatore
• Quando l’ultimo record nel log è un “prepare”, il
guasto del TM può essere la causa di un blocco di
qualche RM. Il TM ha due opzioni:
– Scrivere “global abort” sul log, e comunicare
decisione ripetendo la seconda fase del protocollo
di commit a due fasi
– (Ripetere la prima fase, provando a raggiungere
un commit globale)
• Quando l’ultimo record è la una “decisione globale”,
alcuni RM potrebbero essere bloccati. Il TM deve
ripetere la seconda fase del protocollo,
ricomunicando la decisione.
BDE-ARC 35
BDE
Protocollo di “abort presunto”
• E’ una ottimizzazione, usata da tutti i sistemi
commerciali:
– Se un TM riceve una richiesta di “remote
recovery” da un RM in dubbio di cui non ha
traccia, risponde per default che la
transazione ha fatto un “global abort”
BDE-ARC 36
BDE
Ottimizzazione “read-only”
• Quando un RM svolge solo operazioni
di lettura,
– Risponde read-only al messaggio di
prepare message e esce dal protocollo.
– Il TM ignora tutti gli RM “read-only” nella
seconda fase del protocollo.
BDE-ARC 37
BDE
Standardizzazione del protocollo
Standard X-open Distributed Transaction
Processing (DTP):
- commit a 2 fasi con ottimizzazioni
- molti DBMS sul mercato
BDE-ARC 38
BDE
Scarica

commit