Lauraldib (discussão | contribs)
Lauraldib (discussão | contribs)
Linha 49: Linha 49:


== Exemplos ==
== Exemplos ==
• Exemplo 1
Em um banco, a transação T1 transfere R$100,00 de uma conta A para uma conta B. A transação deverá seguir a seguinte ordem: Primeiramente é feita uma leitura da conta A, a retirada dos R$100,00, e alteração (escrita) em A. Em seguida, é feita a leitura da conta B, o depósito (soma) dos R$100,00 para enfim alterar (escrever) a conta B.
Para que não haja inconsistência, somente após a conclusão e confirmação de que não houve erro em nenhuma das etapas, a transação será finalizada e poderá ser visualizada por outro usuário do banco de dados.
Caso ocorra algum erro, todas as etapas são anuladas e nenhuma é salva no banco de dados.
• Exemplo 2:
Um banco de dados de uma universidade está sendo acessado pelos usuários X e Y ao mesmo tempo.  O usuário X está fazendo uma consulta dos nomes dos alunos em ordem alfabética, matriculados em cada curso. O usuário Y está realizando a matrícula de dois novos alunos que acabaram de chegar à universidade.
Para garantir que não haja inconsistência nos dados consultados pelo usuário X, a transação (cadastro) realizada pelo usuário Y só será finalizada e salva no SGBD quando Y completar todas as etapas exigidas durante o cadastramento. Dessa forma, a consulta realizada por X deverá ser feita ANTES ou DEPOIS que Y finalizar o cadastramento.


----
----


== Referências ==
== Referências ==

Edição das 22h46min de 6 de maio de 2015

Transação

Uma transação é uma sequência de operações executadas como uma única unidade lógica de trabalho que deve mostrar quatro propriedades, designadas pelas iniciais ACID (atomicidade, consistência, isolamento e durabilidade).

Atomicidade: Ou todas as operações da transação são executadas no banco de dados ou nenhuma será. Assegurar a atomicidade de uma transação é responsabilidade do SGBD, mais especificamente, do Componente de Gerenciamento de Transações e Recuperador de Falhas.

Consistência: Transação executada isoladamente deve preservar a consistência do banco de dados. Esta é responsabilidade do programador.

Isolamento: Modificações feitas por transações simultâneas devem ser isoladas das modificações feitas por qualquer outra transação simultânea. Uma transação reconhece os dados no estado em que estavam antes de outra transação simultânea tê-los modificado ou reconhece os dados depois que a segunda transação tiver sido concluída, mas não reconhece um estado intermediário. Isso é chamado serializabilidade porque resulta na capacidade de recarregar os dados iniciais e reexecutar uma série de transações de modo que os dados obtidos estejam no mesmo estado em que estavam depois que as transações originais foram executadas. Assegurar o isolamento é de responsabilidade do Controlador de Concorrência.

Durabilidade: Depois que uma transação tiver sido concluída, seus efeitos ficam permanentemente no sistema. As modificações persistem até mesmo no caso de uma queda do sistema. Assegurar a durabilidade é responsabilidade do componente do SGBD chamado de Recuperador de Falhas.


Escalonamento

Um escalonamento é uma lista de ações de um conjunto de transações. Representa uma sequência de execução que deve conservar a mesma ordem de execução das ações das transações presentes nele.

Escalonamento completo: O escalonamento insere, para todas as transações, as ações de abort ou commit.

Escalonamento serial: O escalonamento não intercala as ações de transações diferentes.

Escalonamento equivalente: Para qualquer estado da base de dados, o efeito de executar um primeiro escalonamento é idêntico ao efeito de executar um segundo escalonamento.

Escalonamento serializável: Escalonamento equivalente a alguma execução serial das transações.


Log de Transações

Podemos entender por logs de transação sendo este um arquivo no qual o SQL Server armazena um registro com todas as transações realizadas e dados que foram modificados no banco de dados com o qual o arquivo de log possa estar associado. Isso é bem necessário para que em casos que o SQL Server seja desligado inesperadamente, como uma falha da instância ou mesmo hardware, o log de transação é utilizado para recuperar o banco de dados, com a integridade dos dados.




Bancos Transacionais

• Oracle Database;

• Microsoft SQL Server;

• IBM DB2;

• Postgre SQL;

• Borland Interbase / Firebird;



Exemplos

• Exemplo 1

Em um banco, a transação T1 transfere R$100,00 de uma conta A para uma conta B. A transação deverá seguir a seguinte ordem: Primeiramente é feita uma leitura da conta A, a retirada dos R$100,00, e alteração (escrita) em A. Em seguida, é feita a leitura da conta B, o depósito (soma) dos R$100,00 para enfim alterar (escrever) a conta B.

Para que não haja inconsistência, somente após a conclusão e confirmação de que não houve erro em nenhuma das etapas, a transação será finalizada e poderá ser visualizada por outro usuário do banco de dados.

Caso ocorra algum erro, todas as etapas são anuladas e nenhuma é salva no banco de dados.


• Exemplo 2:

Um banco de dados de uma universidade está sendo acessado pelos usuários X e Y ao mesmo tempo. O usuário X está fazendo uma consulta dos nomes dos alunos em ordem alfabética, matriculados em cada curso. O usuário Y está realizando a matrícula de dois novos alunos que acabaram de chegar à universidade. Para garantir que não haja inconsistência nos dados consultados pelo usuário X, a transação (cadastro) realizada pelo usuário Y só será finalizada e salva no SGBD quando Y completar todas as etapas exigidas durante o cadastramento. Dessa forma, a consulta realizada por X deverá ser feita ANTES ou DEPOIS que Y finalizar o cadastramento.


Referências

<< http://www.ic.unicamp.br/~geovane/mo410-091/Ch16-GerTrans_pt.pdf >>, Acesso em 05/05/2015

<< http://www.inf.unioeste.br/~clodis/BDII/BDII_Modulo_1.pdf >>, Acesso em 05/05/2015

<< https://technet.microsoft.com/pt-br/library/ms190612(v=sql.105).aspx >>, Acesso em 05/05/2015

<< http://paginas.unisul.br/edson.thizon/PDF/apostila_bd2.pdf >>, Acesso em 06/05/2015

<< http://www.wiki.ifba.edu.br/ads/tiki-download_file.php?fileId=425 >>, Acesso em 06/05/2015