39
Sistemas Distribuídos Transações Vinícius Fernandes Soares Mota DECSI/ICEA UFOP 1

Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Sistemas Distribuídos

Transações

Vinícius Fernandes Soares Mota

DECSI/ICEA UFOP 1

Page 2: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Transações

• Transação: Unidade lógica de trabalho • abrange um conjunto de operações de manipulação de dados que

executam uma única tarefaConecta ao Banco de Dados

Começa transação

Operações de consulta/atualização

...

Finaliza transação

Começa transação

Operações de consulta/atualização

...

Finaliza transação

Desconecta

DECSI/ICEA UFOP

2

Page 3: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

parcialmente efetivada

Transações

• Exemplo: Um banco de dados...

• Transição de Estados de Execução

ativa efetivada

encerradafalha

begin (start) transaction

end

transaction commit

abort

(rollback)

read,

write

abort

(rollback)

DECSI/ICEA UFOP

3

Page 4: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Transações

• O que acontece se a energia acabar no meio de uma transação, ou se houver um problema com o disco?

• O que acontece quando duas transações executam simultaneamente manipulando o mesmo dado?

Pode ocorrer a um estado inconsistente...

DECSI/ICEA UFOP

4

Page 5: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Transações –Propriedades ACID

• Atomicidade

• Consistência

• Isolamento

• Durabilidade

DECSI/ICEA UFOP

5

Page 6: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Transações –Propriedades ACID• Atomicidade: ou todas as operações de uma transação

têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada).

• Consistência: uma transação deve provocar uma transição do sistema de um estado consistente para outro estado consistente.

• Isolamento: a execução de uma transação não deve interferir na execução de nenhuma outra transação

• Durabilidade: uma vez completada, a transação é registrada em algum meio de armazenamento permanente

DECSI/ICEA UFOP

6

Page 7: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Operações em uma conta bancária usados numa transação

• deposit(amount)• deposita amount na conta

• withdraw(amount)• retira amount da conta

• getBalance() -> amount• retorna o balance da conta

• setBalance(amount)• Altera balanço da conta

• Transação T:• a. withdraw(100);• b. deposit(100);• c. withdraw(200);• b. deposit(200);

DECSI/ICEA UFOP

7

Page 8: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Operações no coordenador da transação• openTransaction() -> trans;

• Inicia nova transação e divulga um TID (idendificador de transação) único.

• closeTransaction(trans) -> (commit, abort);• Finaliza uma transação: um commit significa que a

transação foi efetuada com sucesso; um abort indica que ela não foi completada.

• abortTransaction(trans);• aborta a transação.

DECSI/ICEA UFOP

8

Page 9: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Ciclos de vida de uma transação

DECSI/ICEA UFOP

Bem sucedida Abortada pelo Cliente Abortada pelo Servidor

openTransaction openTransaction openTransactionoperação operação operaçãooperação operação peração

Servidor aborta

transação

operação operação ERRO em operaçãoReportado ao cliente

closeTransaction abortTransaction

9

Page 10: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Controle de Concorrência

• Execução Serial (sequencial):

• Execução Intercalada:

tempot2t1 t3

AB

tempot2t1 t3

A

B

A

B

t4 t5

DECSI/ICEA UFOP

10

Page 11: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Controle de Concorrência

• Execução Serial (sequencial): diversas transaçõesexecutadas em sequência• deixa a base de dados em estado correto e consistente

• Execução Intercalada: comandos de diversas transaçõessão intercalados• pode levar a inconsistências

Isolamento Concorrência Chance de inconsistências

Serial

Intercalada

DECSI/ICEA UFOP

11

Page 12: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Execução Serial X Intercalada

• Execução serial• estado inicial correto e consistente estado final correto e

consistente

DECSI/ICEA UFOP

12

Page 13: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Execução Serial X Intercalada

• Execução Intercalada• Toda execução serial é consistente

• Mas uma execução intercalada só é consistente se for igual aoresultado de uma execução em sequência (em ordemconhecida)• esta execução é dita serializável

DECSI/ICEA UFOP

13

Page 14: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Controle de concorrência

•Problemas de Execução Intercalada1. Problema da atualização perdida2. Recuperações inconsistentes

DECSI/ICEA UFOP

14

Page 15: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problema da perda de atualização (lost update problem)

DECSI/ICEA UFOP

Transaction T :

balance = b.getBalance();

b.setBalance(balance*1.1);

a.withdraw(balance/10)

Transaction U:

balance = b.getBalance();

b.setBalance(balance*1.1);

c.withdraw(balance/10)

balance = b.getBalance(); $200

balance = b.getBalance(); $200

b.setBalance(balance*1.1); $220

b.setBalance(balance*1.1); $220

a.withdraw(balance/10) $80

c.withdraw(balance/10) $280

Lin

ha d

o t

em

po

a = $100 b = $200 c = $300

15

Page 16: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problema de recuperações incosistentes

DECSI/ICEA UFOP

Lin

ha d

o t

em

po

a = $200 b = $200

Transaction V :

a.withdraw(100)

b.deposit(100)

Transaction W:

aBranch.branchTotal()

a.withdraw(100); $100

total = a.getBalance() $100

total = total+b.getBalance() $300

total = total+c.getBalance()

b.deposit(100) $300

16

Page 17: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Equivalência Serial

Se cada uma de várias transações tem o efeito correto quando executada sozinha, podemos inferir que, se essas transações forem executadas uma por vez, em alguma ordem, o efeito combinado também será correto

DECSI/ICEA UFOP

Uso da equivalência serial como critério para uma execução

concorrente correta evita a ocorrência de atualizações perdidas e

recuperações inconsistentes.

17

Page 18: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Equivalência serial

• Todos os acessos a um dado devem ser serializados em relação às transações.

• Protocolos de controle de concorrência devem serializar as transações.

• Soluções para concorrência de transações:• Travamento com controle distribuído de deadlocks: dado escrito por

uma transação é atravado até o final da transação.• Controle otimista de concorrência: supõe-se que não ocorrerá

conflito. Na hora do commit, verifica-se problemas de concorrência. Uma das transações envolvidas no problema deve dar um abort.

• Rótulos de tempo: cada trasação tem um tempo associado e os dados tem o tempo do último acesso armazenado. Transações abortam quando descobrirem que executaram uma operação tarde demais (por exemplo, perderam uma atualização).

DECSI/ICEA UFOP

18

Page 19: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Equivalência Serial

DECSI/ICEA UFOP

Lin

ha d

o t

em

po

Transaction T:

balance = b.getBalance()

b.setBalance(balance*1.1)

a.withdraw(balance/10)

Transaction U:

balance = b.getBalance()

b.setBalance(balance*1.1)

c.withdraw(balance/10)

balance = b.getBalance() $200

b.setBalance(balance*1.1) $220balance = b.getBalance() $220

b.setBalance(balance*1.1) $242

a.withdraw(balance/10) $80

c.withdraw(balance/10) $278

Do exemplo de atualização perdida

19

Page 20: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Equivalência Serial

DECSI/ICEA UFOP

Lin

ha d

o t

em

po

Como solucionar o problema de recuperações

inconsistentes por equivalência serial?

Transaction V :

a.withdraw(100)

b.deposit(100)

Transaction W:

aBranch.branchTotal()

a.withdraw(100); $100

total = a.getBalance() $100

total = total+b.getBalance() $300

total = total+c.getBalance()

b.deposit(100) $300

20

Page 21: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Equivalência Serial

DECSI/ICEA UFOP

Lin

ha d

o t

em

po

Como solucionar o problema de recuperações

inconsistentes por equivalência serial?

Transaction V :

a.withdraw(100);

b.deposit(100)

Transaction W:

aBranch.branchTotal()

a.withdraw(100); $100

b.deposit(100) $300

total = a.getBalance() $100

total = total+b.getBalance() $400

total = total+c.getBalance()...

21

Page 22: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Regras para conflito das operações read e write

Operações que dependem da ordem em que foram executas

DECSI/ICEA UFOP

Operações das váriastransações

Conflito Razão

read read Não Porque um par de operações de leitura não

dependem da ordem em que foram executadas

read write Sim A ordem altera o resultado final

write write Sim A ordem altera o resultado final

22

Page 23: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Erro de leitura (dirty read) quando a transação T aborta

DECSI/ICEA UFOP

Transaction T:

a.getBalance()

a.setBalance(balance + 10)

Transaction U:

a.getBalance()

a.setBalance(balance + 20)

balance = a.getBalance() $100

a.setBalance(balance + 10) $110

balance = a.getBalance() $110

a.setBalance(balance + 20) $130

commit transaction

abort transaction

23

Page 24: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Erro de leitura (dirty read) quando a transação T aborta

DECSI/ICEA UFOP

Transaction T:

a.getBalance()

a.setBalance(balance + 10)

Transaction U:

a.getBalance()

a.setBalance(balance + 20)

balance = a.getBalance() $100

a.setBalance(balance + 10) $110

balance = a.getBalance() $110

a.setBalance(balance + 20) $130

commit transaction

abort transaction

Resultado: O Objeto considerou o valor de 110 que nunca foi persistido de verdade!!!!

24

Page 25: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problemas de Execução Intercalada

• Ex: Leitura inválida (Dirty Read):

T1 T2

Read(A)Write(A+100)

abort

Read(A)Write(A 0)

commit

tem

po

Exemplo 1:

• Transação T1: deposita R$100,00na conta A.

• Transação T2: saca tudo de A.

• T1 é cancelada

DECSI/ICEA UFOP

25

Page 26: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problemas de Execução Intercalada

• Ex: Leitura inválida (Dirty Read):

T1 T2

Read(A)Write(A+100)

abort

Read(A)Write(A 0)

commit

tem

po

Exemplo 1:

• Transação T1: deposita R$100,00na conta A.

• Transação T2: saca tudo de A.

• T1 é cancelada

Resultado: foi possível sacar R$ 100,00 a mais.

DECSI/ICEA UFOP

26

Page 27: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problemas de Execução Intercalada

• Ex: Leitura inválida (Dirty Read):

T1 T2

Read(A)Write(A-100)

Read(B)Write(B+100)

abort

Read(A)Write(A+1%)

Read(B)Write(B+1%)

commit

tem

po

Exemplo 2:

• Transação T1: transfereR$100,00 da conta A para aconta B.

• Transação T2: incrementa A e Bem 1% (juros).

DECSI/ICEA UFOP

27

Page 28: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problemas de Execução Intercalada

• Ex: Leitura inválida (Dirty Read):

T1 T2

Read(A)Write(A-100)

Read(B)Write(B+100)

abort

Read(A)Write(A+1%)

Read(B)Write(B+1%)

commit

tem

po

Exemplo 2:inicialmente A = 500 e B = 600• resultado esperado: T1 (rollbacked)seguido de T2 é A = 505 (A+1%) e B =606 (B+1%)

• no entanto, com T1 e T2 em paralelo,o que se tem é: A = 404 (A - 100 + 1%)e B = 707 (B+100 + 1%)

DECSI/ICEA UFOP

28

Page 29: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problemas de Execução Intercalada

• Ex: Leitura inválida (Dirty Read):

T1 T2

Read(A)Write(A-100)

Read(B)Write(B+100)

abort

Read(A)Write(A+1%)

Read(B)Write(B+1%)

commit

tem

po

Exemplo 2:A = 500 e B = 600• resultado esperado: T1 (rollbacked)seguido de T2 é A = 505 (A+1%) e B =606 (B+1%)

• no entanto, com T1 e T2 em paralelo,o que se tem é: A = 404 (A - 100 + 1%)e B = 707 (B+100 + 1%)

Dirty read

Dirty read

DECSI/ICEA UFOP

29

Page 30: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Problemas de Execução Intercalada

• Ex: Leitura inválida (Dirty Read):

T1 T2

Read(A)Write(A-100)

Read(B)Write(B+100)

abort

Read(A)Write(A+1%)

Read(B)Write(B+1%)

commit

tem

po

Exemplo 2:Suponde que inicialmente A = 500 e B =600• resultado esperado: T1 (rollbacked)seguido de T2 é A = 505 (A+1%) e B =606 (B+1%)

• no entanto, com T1 e T2 em paralelo,o que se tem é: A = 404 (A - 100 + 1%)e B = 707 (B+100 + 1%)

Dirty read

Dirty read

Resultado: a transferência de R$ 100 de T1 foi sobrescrita e T2

considerou valores errados como base se cálculo de 1%. Ambos, A

e B estão errados.

DECSI/ICEA UFOP

30

Page 31: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Sobreleitura de valores não atualizados(uncommitted values)

DECSI/ICEA UFOP

Transaction T:

a.setBalance(105)

Transaction U:

a.setBalance(110)

$100

a.setBalance(105) $105

a.setBalance(110) $110

O que acontece se U for cancelada e T confirmada?

A=100

31

Page 32: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Sobreleitura de valores não atualizados(uncommitted values)

DECSI/ICEA UFOP

Transaction T:

a.setBalance(105)

Transaction U:

a.setBalance(110)

$100

a.setBalance(105) $105

a.setBalance(110) $110

O que acontece se U for cancelada e T confirmada?- O saldo fica de A fica $105

32

Page 33: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Sobreleitura de valores não atualizados(uncommitted values)

DECSI/ICEA UFOP

Transaction T:

a.setBalance(105)

Transaction U:

a.setBalance(110)

$100

a.setBalance(105) $105

a.setBalance(110) $110

O que acontece se U confirmada e depois T for cancelada ?

-

33

Page 34: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Sobreleitura de valores não atualizados(uncommitted values)

DECSI/ICEA UFOP

Transaction T:

a.setBalance(105)

Transaction U:

a.setBalance(110)

$100

a.setBalance(105) $105

a.setBalance(110) $110

O que acontece se U confirmada e depois T for cancelada ?

- T volta A para $100

34

Page 35: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Travas

• Método simples para forçar equivalência em série

• Servidor impede acesso a objeto travado

• Travamento de duas fases (two-phase locking).• A primeira fase de cada transação é uma fase de

crescimento, durante a qual as novas travas são adquiridas

• Na segunda fase, as travas são liberadas (uma fase de redução).

DECSI/ICEA UFOP

35

Page 36: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Travas

DECSI/ICEA UFOP

36

Transaction T:

balance = b.getBalance()

b.setBalance(bal*1.1)a.withdraw(bal/10)

Transaction U:

balance = b.getBalance()b.setBalance(bal*1.1)

c.withdraw(bal/10)

Operations Locks Operations Locks

openTransaction

bal = b.getBalance() lock B

b.setBalance(bal*1.1) openTransaction

a.withdraw(bal/10) lock A bal = b.getBalance() waits for T ’s

lock on B

closeTransaction unlock A, B

lock B

b.setBalance(bal*1.1)

c.withdraw(bal/10) lock C

closeTransaction unlock B, C

Page 37: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Compatibilidade de travas

Deve seguir as regras de conflito de operação:

1. Se uma transação T já executou uma operação de leitura sobre um objeto em particular, então uma transação concorrente U não deve escrever esse objeto até que T seja confirmada ou cancelada.

2. Se uma transação T já executou uma operação de escrita sobre um objeto em particular, então uma transação concorrente U não deve ler nem escrever esse objeto até que T seja confirmada ou cancelada.

DECSI/ICEA UFOP

37

Page 38: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Compatibilidade de travas

DECSI/ICEA UFOP

38

For one object Lock requestedread write

Lock already set none OK OK

read OK wait

write wait wait

Page 39: Sistemas Distribuídos · •Atomicidade: ou todas as operações de uma transação têm seus efeitos registrados no sistema ou então nenhuma delas é registrada (tudo-ou-nada)

Questões

DECSI/ICEA UFOP

Vinícius Fernandes Soares Mota

Transações

39