Baixe o app para aproveitar ainda mais
Prévia do material em texto
INSTITUTO SUPERIOR DE EDUCAÇÃO FRANCISCANO NOSSA SENHORA DE FÁTIMA CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Banco de Dados II Transações, Controle de Concorrência e Bloqueios. por Aurélio Guedes de Souza, Matrícula: 2013070004 Período: 3° Professor Claudio Lobo Brasília-DF 2014 Índices 1.0. Transações 1.1. Propriedades ACID 1.2. Atomicidade 1.3. Consistência 1.4. Isolamento 1.5. Durabilidade 1.6. Estruturas de armazenamento 1.7. Armazenamento volátil 1.8. Armazenamento não volátil 1.9. Armazenamento Estável 2.0 Controle de Concorrência 2.1 Bloqueios(Locks) 2.2 Bloqueio compartilhado 2.3 Bloqueio exclusivo 3.0 Referências. 1.0 Transações Em banco de dados, quando realizamos alguma alteração nos dados armazenados, precisamos de garantir que estas informações foram realmente alteradas da forma em que desejamos. Os bancos de dados devem nos trazer a garantia de que tudo ocorreu como desejado. Seja ele qual for, independente de paradigma de armazenamento ou se é código aberto/livre - ou como o Oracle e SQLServer que são bancos de dados proprietários, todos devem implementar alguma política que nos permita seguramente acreditar de que as informações previamente obtidas dos armazéns, possam ser armazenadas com base na consistência do estado anterior à leitura das mesmas. Nos bancos de dados relacionais, o que pode nos garantir a consistência e integridade dos dados são os chamados controles de transações. Eles nos permitem executar várias operações, sejam elas de leitura e/ou gravação buscando sempre manter o estado do banco de dados consistente e íntegro. Então a transação, pode ser definida como um conjunto de operações que são executadas sobre um banco de dados específico se comportando como uma unidade de execução única. Abraham Silberschatz, Henry F. Korth e S. Sudarshan definem transação como: uma unidade de execução do programa que acessa e possivelmente atualiza vários itens de dados. Os dados em uma transação, necessitam estar consistentes e de acordo com o estado em que foram recuperados. Devem, assim que todas as operações necessárias forem realizadas, serem armazenados no banco de dados mesmo que uma falha ocorra no momento da gravação. Caso alguma falha ocorra no momento em que os dados estão sendo preparados para ser armazenados ou que aja alguma inconsistência no banco de dados - em que os dados recuperados no início da transação não coincide com atuais, o SGBD deve aplicar algum controle para que os dados não sejam armazenados de forma inconsistente, ou seja, o banco de dados deve voltar à sua forma consistente caso aja alguma falha na transação. Os principais elementos que nos possibilida o controle de transação, são chamados de ACID. ACID é um acrônimo, derivado da primeira letra de cada uma das quatro propriedades que nos garante o controle sobre a transação. 1.1 Propriedades ACID As propriedades que formam o acrônimo ACID são – na seguinte ordem de posicionamento: Atomicidade, Consistência, Integridade e Durabilidade. Cada uma dessas propriedades são extremamente importantes para o controle de transação implementado pelos bancos de dados relacionais. A seguir, cada um deles serão explicados e citadas a sua importância dentro de uma ou mais transações. ● 1.2 Atomicidade, é a propriedade que garante que os dados de uma transação sejam totalmente persistidos no banco de dados, ou em caso de falha, de que o banco de dados voltará ao seu estado anterior à falha ocorrida. Ou seja, ou a modificação ocorre 100% ou – em caso de falha, que os dados voltem ao estado de consistência. ● 1.3 Consistência, propriedade que garante que uma transação trabalhe com todas as informações sem interferências externas à ela, possibilitando com que várias transações sejam executadas sem uma interferir no estado de consistência dos dados da outra. ● 1.4 Isolamento. Transações precisam ser executadas simultaneamente sem a possibilidade de que uma interfira no estado atual da outra. Existem diversas maneiras de garantir o isolamento de uma transação, como por exemplo: a serialização – em que as transações são executadas uma após a outra. Mas, sabemos que isso pode levar o processamento computacional a um estado de ociosidade muito elevado, pois na maioria das vezes dentro do processamento de uma transação, recursos computacionais ficam ociosos enquanto outros trabalham, assim, outra transação poderia estar utilizando os recursos em estado de ociosidade enquanto esperam pelos não ociosos. Tudo isso nos leva a pensar de que atualmente a serialização não é a melhor maneira de se trabalhar, pois transações executando simultaneamente nos possibilita um melhor uso dos recursos de processamento computacional elevando o “throughput” do sistema. ● 1.5 Durabilidade. Assim que uma transação é confirmada, os dados necessitam ser persistidos no banco de dados mesmo que ocorra alguma falha após a confirmação. Os princípios de durabilidade são implementados nos bancos de dados de uma maneira em que, logo após a confirmação da transação, estes dados sejam antes armazenados em um outro local para garantir, em caso de falha, que mais tarde possam ser persistidos formalmente, mantendo o estado do banco de dados consistente após a confirmação da transação. O conjunto de propriedades ACID nos possibilita um bom controle de transação e os bancos de dados devem implementar os princípios fixados para que o número de falhas nas operações envolvendo dados não sejam de um número elevado. 1.6 Estrutura de Armazenamento Assim como visto nas propriedades ACID, os dados necessitam serem armazenados novamente no banco de dados após uma transação, de forma consistente. Precisamos garantir a atomicidade – persistir em sua totalidade, ou não persistir nada em caso de falha, e também garantir a durabilidade dos dados após a confirmação da transação, mas no entanto, após a confirmação de uma transação, falhas podem vir a ocorrer e precisamos de alguma forma resistir a essas falhas. Os seguintes tipos de armazenamentos são descritos dentro das estruturas de armazenamento: • 1.7 Armazenamento volátil, as informações armazenadas nesta estrutura está sucessível a falhas, pois em caso de queda de energia ou em alguma outra falha que impossibilite a alimentação do sistema computacional o acesso a alguma fonte de energia, faz com que os dados neste estado sejam perdido. Porém, o acesso aos itens de dados armazenados neste tipo de estrutura são mais velozes, pelo fato de o itens estarem armazenados na memória principal e cache – que são tipo de memórias extremamente rápidas. • 1.8 Armazenamento não volátil, neste tipo de estrutura, os dados podem ser acessados com menos rapidez em relação às estrutúras voláteis pelo fato de serem utilizados dispositivos de armazenamento secundários, no entanto, os dados armazenados nessas estruturas estão menos susceptíveis a falhas pois não existe volatilidade neste tipo de armazenamento. • 1.9 Armazenamento estável, no armazenamento estável as informações gravadas “quase” nunca são perdidas, pois a maneira em que os dados são armazenados faz com que seja quase impossível de se perder os itens de dados pelo fato de serem replicados entre vários meios de armazenamento que utilizam como dispositivo de armazenamento os discos secundários (discos rígidos). 2.0 Controle de Concorrência O controle de concorrência nos fornece algumas maneiras de resolver o problema de concorrência entre as transações. Quando obtemos o isolamento,que é um dos princípios de controle de transação, precisamos que as transações executem de forma concorrente e assim possibilitando o uso constante dos recursos de processamento computacional. A serialização é uma das maneiras de se obter o isolamento de uma transação, mas trabalhando desta forma os recursos computacionais não seriam utilizados da melhor maneira. Com a utilização de execução simultânea das transações alguns problemas surgem, pois, deve haver um controle sobre a leitura e escrita dos dados. A seguir, será mostrada uma maneira de se trabalhar com transações simultâneas sem precisar que uma interfira no estado da outra. 2.1 Bloqueios(Locks) Precisamos de alguma maneira garantir o isolamento entre as transações, e uma das maneiras de se permitir o isolamento na execução de transações simultâneas se dá por meio da utilização de bloqueios. Seguindo este estilo de isolamento em concorrência é preciso fazer com que uma transação bloqueie o item de dado em que manibula para que o isolamento ocorra, ou também que bloqueie em partes um item de dados possibilitando o compartilhamento dos dados para apenas um tipo de operação. Existem várias possibilidades de bloqueios sobre os itens de dados mas vale o destaque a dois modos de bloqueios, que são eles: • 2.2 Bloqueio Compartilhado, onde que uma determinada transação obtém um item de dado no modo de bloqueio compartilhado e é possível a ela o acesso a esse item de dado apenas no modo de leitura, não possibilitando a operação de escrita. • 2.2 Bloqueio Exclusivo, onde que uma determinada transação obtém um item de dado no modo de bloqueio exclusivo e tem o direito de leitura e também de escrita sobre aquele item de dado. 3.0 Referências bibliográficas Cartilha sobre plágio, por: Guilherme Nery (Presidente) , Ana Paula Bragaglia , Flávia Clemente , Suzana Barbosa - Comissão de casos de Autoria. Livro: Sistema de banco de dados, por: Abraham Silberschatz, Henry F. Korth, S. Sudarshan.
Compartilhar