Transacoes em banco de dados pt1

18
Transações e Transações e Gerenciamento de Gerenciamento de Transações em Bancos Transações em Bancos de Dados de Dados Tradução do Orignal em Ingles de Svetlin Tradução do Orignal em Ingles de Svetlin Nakov Nakov National Academy for Software Development National Academy for Software Development academy.devbg.org Tradução e Adaptação:Vinicius Augustus Paluch Tradução e Adaptação:Vinicius Augustus Paluch Versão Original disponível em : http://www.slideshare.net/nakov/svetlin-nakov-database- Versão Original disponível em : http://www.slideshare.net/nakov/svetlin-nakov-database- transactions transactions

description

Tradução (parcial) da apresentação criada por Svetlin Nakov.

Transcript of Transacoes em banco de dados pt1

Page 1: Transacoes em banco de dados   pt1

Transações e Transações e Gerenciamento de Gerenciamento de

Transações em Bancos Transações em Bancos de Dadosde Dados

Tradução do Orignal em Ingles de Svetlin NakovTradução do Orignal em Ingles de Svetlin Nakov

National Academy for Software DevelopmentNational Academy for Software Development

academy.devbg.org

Tradução e Adaptação:Vinicius Augustus PaluchTradução e Adaptação:Vinicius Augustus PaluchVersão Original disponível em : http://www.slideshare.net/nakov/svetlin-nakov-database-transactions Versão Original disponível em : http://www.slideshare.net/nakov/svetlin-nakov-database-transactions

Page 2: Transacoes em banco de dados   pt1

AgendaAgendaAgendaAgenda

• O que são Transações?O que são Transações?

• Conceito ACID de TransaçõesConceito ACID de Transações

• Problemas de ConcorrênciaProblemas de Concorrência

• Técnicas de controle concorrênciaTécnicas de controle concorrência

• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)

• Bloqueio Otimista e PessimistaBloqueio Otimista e Pessimista

• DeadlocksDeadlocks

• Transações e RecuperaçãoTransações e Recuperação

• O que são Transações?O que são Transações?

• Conceito ACID de TransaçõesConceito ACID de Transações

• Problemas de ConcorrênciaProblemas de Concorrência

• Técnicas de controle concorrênciaTécnicas de controle concorrência

• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)

• Bloqueio Otimista e PessimistaBloqueio Otimista e Pessimista

• DeadlocksDeadlocks

• Transações e RecuperaçãoTransações e Recuperação

Page 3: Transacoes em banco de dados   pt1

Agenda (2)Agenda (2)Agenda (2)Agenda (2)

• Transações na Linguagem SQLTransações na Linguagem SQL

• Niveis de Isolamento de TransaçõesNiveis de Isolamento de Transações

• Onde e Quando usar TransaçõesOnde e Quando usar Transações

• Transações na Linguagem SQLTransações na Linguagem SQL

• Niveis de Isolamento de TransaçõesNiveis de Isolamento de Transações

• Onde e Quando usar TransaçõesOnde e Quando usar Transações

Page 4: Transacoes em banco de dados   pt1

O que são O que são Transações?Transações?

Page 5: Transacoes em banco de dados   pt1

TransactionsTransactionsTransactionsTransactions

• TransaçõesTransações são sequência de Ações são sequência de Ações ((Operações de Banco de DadosOperações de Banco de Dados)) que são que são executadas como “um conjunto”executadas como “um conjunto”::

• Ou todas são executas com sucessoOu todas são executas com sucesso

• Ou Nenhuma delasOu Nenhuma delas

• ExemploExemplo

• Um banco transfere dinheiro entre duas Um banco transfere dinheiro entre duas contas contas ((saque saque + + depositodeposito))

• Se qualquer uma das operações falhar, a Se qualquer uma das operações falhar, a trasferência será canceladatrasferência será cancelada

• TransaçõesTransações são sequência de Ações são sequência de Ações ((Operações de Banco de DadosOperações de Banco de Dados)) que são que são executadas como “um conjunto”executadas como “um conjunto”::

• Ou todas são executas com sucessoOu todas são executas com sucesso

• Ou Nenhuma delasOu Nenhuma delas

• ExemploExemplo

• Um banco transfere dinheiro entre duas Um banco transfere dinheiro entre duas contas contas ((saque saque + + depositodeposito))

• Se qualquer uma das operações falhar, a Se qualquer uma das operações falhar, a trasferência será canceladatrasferência será cancelada

Page 6: Transacoes em banco de dados   pt1

RollbackRollback

CommitCommit

A TransactionA TransactionA TransactionA Transaction

LeituraLeitura GravaçãoGravação

GravaçãoGravaçãoSituação Situação InicialInicial

(Durável)(Durável)

Situação FinalSituação FinalDurável e Durável e

consistenteconsistente

Coleção de Coleção de leituras e leituras e gravaçõesgravações

Page 7: Transacoes em banco de dados   pt1

Transactions BehaviorTransactions BehaviorTransactions BehaviorTransactions Behavior

• Transações garantem a consistência e Transações garantem a consistência e intregridade do banco de dadosintregridade do banco de dados• Todas as modificações da transação são Todas as modificações da transação são

“temporárias”“temporárias”

• Modificações seão “persistidas” apenas Modificações seão “persistidas” apenas após o Commitapós o Commit

• A qualquer momento (Antes do commit) A qualquer momento (Antes do commit) as modificações podem ser canceladas as modificações podem ser canceladas através de um Rollbackatravés de um Rollback

• Todas as operações são executadas Todas as operações são executadas como uma unidades ( ou nenhuma será)como uma unidades ( ou nenhuma será)

• Transações garantem a consistência e Transações garantem a consistência e intregridade do banco de dadosintregridade do banco de dados• Todas as modificações da transação são Todas as modificações da transação são

“temporárias”“temporárias”

• Modificações seão “persistidas” apenas Modificações seão “persistidas” apenas após o Commitapós o Commit

• A qualquer momento (Antes do commit) A qualquer momento (Antes do commit) as modificações podem ser canceladas as modificações podem ser canceladas através de um Rollbackatravés de um Rollback

• Todas as operações são executadas Todas as operações são executadas como uma unidades ( ou nenhuma será)como uma unidades ( ou nenhuma será)

Page 8: Transacoes em banco de dados   pt1

Transactions: ExamplesTransactions: ExamplesTransactions: ExamplesTransactions: Examples

Saque R$100Saque R$100Saque R$100Saque R$100

1.1. Ler PoupançaLer Poupança

2.2. Saldo Poupança =Saldo Poupança =Saldo atual - 100Saldo atual - 100

3.3. Ler Saldo Ccorr.Ler Saldo Ccorr.

4.4. Saldo Ccorr. =Saldo Ccorr. =Saldo Anterior+ Saldo Anterior+ 100100

5.5. Gravar Saldo Gravar Saldo PoupançaPoupança

6.6. Gravar saldo Gravar saldo Ccorr.Ccorr.

1.1. Ler o saldo atualLer o saldo atual

2.2. Saldo = Saldo Saldo = Saldo atual - Saque atual - Saque

3.3. Registrar SaldoRegistrar Saldo

4.4. Entregar DinheiroEntregar Dinheiro

Transferência R$100Transferência R$100Transferência R$100Transferência R$100

Page 9: Transacoes em banco de dados   pt1

What Can Go Wrong?What Can Go Wrong?What Can Go Wrong?What Can Go Wrong?

• Algumas operações falhamAlgumas operações falham

• Ex., Flahas de Software, comunicação, Ex., Flahas de Software, comunicação, Banco de Dados ou HardwareBanco de Dados ou Hardware

• InterferÊncia entre transaçõesInterferÊncia entre transações

• O que acontece se multiplas alterações O que acontece se multiplas alterações forem feitas na mesma conta?forem feitas na mesma conta?

• Parte dos dados é perdida … Parte dos dados é perdida …

• Comunicação falha entre o Saque e o Comunicação falha entre o Saque e o Depósito.Depósito.

• Algumas operações falhamAlgumas operações falham

• Ex., Flahas de Software, comunicação, Ex., Flahas de Software, comunicação, Banco de Dados ou HardwareBanco de Dados ou Hardware

• InterferÊncia entre transaçõesInterferÊncia entre transações

• O que acontece se multiplas alterações O que acontece se multiplas alterações forem feitas na mesma conta?forem feitas na mesma conta?

• Parte dos dados é perdida … Parte dos dados é perdida …

• Comunicação falha entre o Saque e o Comunicação falha entre o Saque e o Depósito.Depósito.

Page 10: Transacoes em banco de dados   pt1

Transações ACIDTransações ACID

Page 11: Transacoes em banco de dados   pt1

Propriedade das Propriedade das TransaçõesTransaçõesPropriedade das Propriedade das TransaçõesTransações

• SGDBs possuem suporte imbutido à SGDBs possuem suporte imbutido à TransaçõesTransações

• ACID Siginifica:ACID Siginifica:

• AAtomicidadetomicidade

• CConsistenciaonsistencia

• IIsolamentosolamento

• DDurabilidadeurabilidade

• SGDBs possuem suporte imbutido à SGDBs possuem suporte imbutido à TransaçõesTransações

• ACID Siginifica:ACID Siginifica:

• AAtomicidadetomicidade

• CConsistenciaonsistencia

• IIsolamentosolamento

• DDurabilidadeurabilidade

Page 12: Transacoes em banco de dados   pt1

AtomicidadeAtomicidadeAtomicidadeAtomicidade

• AtomicidadeAtomicidade significa que significa que

• Transações são execudas como uma Transações são execudas como uma UNIDADEUNIDADE

• SGDB garante que todas as transações SGDB garante que todas as transações são executadas ou desfeitassão executadas ou desfeitas

• ExemplosExemplos

• Transferência de valores entre contasTransferência de valores entre contas

• Ou o Depósito+Saque são registrados com Ou o Depósito+Saque são registrados com sucesso ou nenhum dos dois serásucesso ou nenhum dos dois será

• Em caso de falha o BD permanece Em caso de falha o BD permanece inalteradoinalterado

• AtomicidadeAtomicidade significa que significa que

• Transações são execudas como uma Transações são execudas como uma UNIDADEUNIDADE

• SGDB garante que todas as transações SGDB garante que todas as transações são executadas ou desfeitassão executadas ou desfeitas

• ExemplosExemplos

• Transferência de valores entre contasTransferência de valores entre contas

• Ou o Depósito+Saque são registrados com Ou o Depósito+Saque são registrados com sucesso ou nenhum dos dois serásucesso ou nenhum dos dois será

• Em caso de falha o BD permanece Em caso de falha o BD permanece inalteradoinalterado

Page 13: Transacoes em banco de dados   pt1

ConsistenciaConsistenciaConsistenciaConsistencia

• ConsistencConsistencia ia significa que:significa que:• O Banco de dados está consitente (íntegro) O Banco de dados está consitente (íntegro)

antes e depois da transaçãoantes e depois da transação

• Apenas dados válidos foram gravadosApenas dados válidos foram gravados

• A Transação não pode quebrar regras de A Transação não pode quebrar regras de integridade e respeita:integridade e respeita:• Chaves primárias, estrangeiras e únicasChaves primárias, estrangeiras e únicas

• ExemploExemplo• Transação não pode encerrar com chave Transação não pode encerrar com chave

duplicadaduplicada

• ConsistencConsistencia ia significa que:significa que:• O Banco de dados está consitente (íntegro) O Banco de dados está consitente (íntegro)

antes e depois da transaçãoantes e depois da transação

• Apenas dados válidos foram gravadosApenas dados válidos foram gravados

• A Transação não pode quebrar regras de A Transação não pode quebrar regras de integridade e respeita:integridade e respeita:• Chaves primárias, estrangeiras e únicasChaves primárias, estrangeiras e únicas

• ExemploExemplo• Transação não pode encerrar com chave Transação não pode encerrar com chave

duplicadaduplicada

Page 14: Transacoes em banco de dados   pt1

IsolamentoIsolamentoIsolamentoIsolamento

• Isolamento Isolamento significa quesignifica que• Multiplas transações simultâneas não afetam umas Multiplas transações simultâneas não afetam umas

as outrasas outras• Transações não enxergam dados não Transações não enxergam dados não

COMMITADOS.COMMITADOS.• O Nível de isolamento define o quanto uma O Nível de isolamento define o quanto uma

transação “enxerga” alterações das outrastransação “enxerga” alterações das outras• Read committed, read uncommitted, repeatable Read committed, read uncommitted, repeatable

read, serializable, etc.read, serializable, etc.

• ExemploExemplo• Gerentes podem ver transferências entre contas Gerentes podem ver transferências entre contas

(débito ou crédito) mas não as 2 operações.(débito ou crédito) mas não as 2 operações.

• Isolamento Isolamento significa quesignifica que• Multiplas transações simultâneas não afetam umas Multiplas transações simultâneas não afetam umas

as outrasas outras• Transações não enxergam dados não Transações não enxergam dados não

COMMITADOS.COMMITADOS.• O Nível de isolamento define o quanto uma O Nível de isolamento define o quanto uma

transação “enxerga” alterações das outrastransação “enxerga” alterações das outras• Read committed, read uncommitted, repeatable Read committed, read uncommitted, repeatable

read, serializable, etc.read, serializable, etc.

• ExemploExemplo• Gerentes podem ver transferências entre contas Gerentes podem ver transferências entre contas

(débito ou crédito) mas não as 2 operações.(débito ou crédito) mas não as 2 operações.

Page 15: Transacoes em banco de dados   pt1

DurabilidadeDurabilidadeDurabilidadeDurabilidade

• DurabilidadeDurabilidade significa quesignifica que

• Se uma transação é confirmada (COMMIT) ela Se uma transação é confirmada (COMMIT) ela será persistenteserá persistente• Não pode ser perdida nem desfeitaNão pode ser perdida nem desfeita

• Garantida através de LOGS de TRANSAÇÂO Garantida através de LOGS de TRANSAÇÂO e Backupe Backup

• ExemploExemplo

• Ápós concluida a transferência, a energia Ápós concluida a transferência, a energia falhafalha

• Ao retornar, os dados continuam íntegros e Ao retornar, os dados continuam íntegros e registrados conforme o momento registrados conforme o momento imediatamente anterior à falhaimediatamente anterior à falha

• DurabilidadeDurabilidade significa quesignifica que

• Se uma transação é confirmada (COMMIT) ela Se uma transação é confirmada (COMMIT) ela será persistenteserá persistente• Não pode ser perdida nem desfeitaNão pode ser perdida nem desfeita

• Garantida através de LOGS de TRANSAÇÂO Garantida através de LOGS de TRANSAÇÂO e Backupe Backup

• ExemploExemplo

• Ápós concluida a transferência, a energia Ápós concluida a transferência, a energia falhafalha

• Ao retornar, os dados continuam íntegros e Ao retornar, os dados continuam íntegros e registrados conforme o momento registrados conforme o momento imediatamente anterior à falhaimediatamente anterior à falha

Page 16: Transacoes em banco de dados   pt1

Transações ACID e Bancos de Transações ACID e Bancos de DadosDadosTransações ACID e Bancos de Transações ACID e Bancos de DadosDados

• Bancos transacionais mais popularesBancos transacionais mais populares

• Oracle DatabaseOracle Database

• Microsoft SQL ServerMicrosoft SQL Server

• IBM DB2IBM DB2

• PostgreSQLPostgreSQL

• Borland InterBase / FirebirdBorland InterBase / Firebird

• MySQL só será compatícel com ACID MySQL só será compatícel com ACID se substituir a engine de se substituir a engine de armazenamento!!!armazenamento!!!

• Bancos transacionais mais popularesBancos transacionais mais populares

• Oracle DatabaseOracle Database

• Microsoft SQL ServerMicrosoft SQL Server

• IBM DB2IBM DB2

• PostgreSQLPostgreSQL

• Borland InterBase / FirebirdBorland InterBase / Firebird

• MySQL só será compatícel com ACID MySQL só será compatícel com ACID se substituir a engine de se substituir a engine de armazenamento!!!armazenamento!!!

Page 17: Transacoes em banco de dados   pt1

Outras apresentações...Outras apresentações...Outras apresentações...Outras apresentações...

• Problemas de ConcorrênciaProblemas de Concorrência

• Técnicas de Controle de ConcorrênciaTécnicas de Controle de Concorrência

• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)

• Transações e Recuperação (Recovery)Transações e Recuperação (Recovery)

• Transações em linguagem SQLTransações em linguagem SQL

• Níveis de Isolamento de Transações Níveis de Isolamento de Transações

• Problemas de ConcorrênciaProblemas de Concorrência

• Técnicas de Controle de ConcorrênciaTécnicas de Controle de Concorrência

• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)

• Transações e Recuperação (Recovery)Transações e Recuperação (Recovery)

• Transações em linguagem SQLTransações em linguagem SQL

• Níveis de Isolamento de Transações Níveis de Isolamento de Transações

Page 18: Transacoes em banco de dados   pt1

AgradecimentosAgradecimentosAgradecimentosAgradecimentos

Tradução do Orignal em Ingles de Svetlin NakovTradução do Orignal em Ingles de Svetlin Nakov

National Academy for Software DevelopmentNational Academy for Software Development

academy.devbg.org