18) Quali
proprietà hanno le transazioni?
Proprietà (ACID)
- Atomicità (a fronte di
guasti)
- Consistenza (solo stati corretti)
- Isolation (serializzabilità
degli accessi, sempre per preservare la consistenza)
- Durability (permanenza)
Le primitive sono di questo tipo:
- Sender: sendTransRequest(header,argomenti,risultato),
dove l’header contiene sender, receiver, servizio, Transaction ID ed altre
cose.
- Receiver: getTransRequest(sorgente, listaArgomenti),
e poi replyTrans(header, listaRisultati)
Dal punto di vista generale, le primitive del
tipo ‘beginTransaction’ ed ‘endTransaction’ in ambiente concentrato, corrispondono
alla richiesta (beginTransaction) ed alla risposta (endTransaction) nel distribuito.
Possibili errori:
- sendTransRequest e replyTrans perduti
- nodo in crash o non più raggiungibile
Conseguenti azioni di recovery:
- sender: time-out e ritrasmissioni
- receiver: uso di TID per non rifare azioni già fatte
Conseguenti semantiche:
- exactly-once per azioni non
idempotenti
- at-least-once per azioni idempotenti