85

Banco de Dados II

Embed Size (px)

Citation preview

EQUIPE UNITINS Organizao de Contedos Acadmicos Coordenao Editorial Reviso Lingstico-Textual Gerente de Diviso de Material Impresso Reviso Digital Projeto Grfico Ilustrao Capas Carlos Henrique Corra Tolentino Maria Lourdes F. G. Aires Silvria Aparecida BasniaK Schier Katia Gomes da Silva Helena Costa e Lima Prestes Irenides Teixeira Katia Gomes da Silva Geuvar S. de Oliveira Igor Flvio Souza

EQUIPE EADCON Coordenador Editorial Assistentes de Edio William Marlos da Costa Ana Aparecida Teixeira da Cruz Janaina Helena Nogueira Bartkiw Lisiane Marcele dos Santos Denise Pires Pierin Ktia Cristina Oliveira dos Santos Monica Ardjomand Rodrigo Santos Sandro Niemicz William Marlos da Costa

Programao Visual e Diagramao

Prezado estudante, Este caderno de Bancos de Dados representa a continuidade da disciplina anterior. As discusses agora so voltadas para aspectos de projeto de bancos de dados relacionais. Os bancos de dados relacionais so os mais utilizados no mercado e, por essa razo, seu estudo essencial. Considerando que grande parte dos sistemas de informao e aplicativos em geral manipulam dados e informaes que ficam armazenadas permanentemente, o projeto de bancos de dados relacionais se torna uma rea de grande importncia. O contedo deste caderno permite a voc ter uma viso geral a respeito de diversos conceitos para o projeto de bancos de dados. Esses conceitos permeiam as fases de definies conceituais e reviso, tambm questes de implantao e de manuteno da confiabilidade, consistncia e disponibilidade do banco de dados. Alm disso, permite auxiliar o futuro analista de sistemas na tomada de decises a respeito de quais tecnologias utilizar para tirar o mximo de proveito dos recursos computacionais disponveis. Bons estudos! Prof. Carlos Henrique Corra Tolentino

Apresentao

EMENTAProjeto de banco de dados relacional. Transaes. Controle de concorrncia. Sistemas de recuperao. Banco de dados distribudos.

OBJETIVOS

Plano de Ensino

Apresentar conceitos comumente encontrados na literatura e no mercado na rea de bancos de dados. Oferecer uma base para a tomada de decises em relao a como proceder na atividade de projetar um banco de dados relacional.

CONTEDO PROGRAMTICO Conceitos de projetos de bancos de dados relacionais Dependncias funcionais Normalizao Transaes e controle de concorrncia Classificao de falhas e sistemas de recuperao Bancos de dados distribudos e outras tecnologias emergentes

BIBLIOGRAFIA BSICADATE, C. J. Introduo a sistemas de banco de dados. Rio de Janeiro: Elsevier, 2003. ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. So Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. So Paulo: Campus, 2006.

BIBLIOGRAFIA COMPLEMENTARHEUSER, Carlos Alberto. Projeto de banco de dados. Porto Alegre: Sagra Luzzatto, 2004. LIGTHSTONE, Sam; TEOREY, Toby; NADEAU, Tom. Projeto e modelagem de bancos de dados. Rio de Janeiro: Campus, 2006. MACHADO, Felipe Nery Rodrigues. Banco de dados: projeto e implementao. So Paulo: rica, 2004. MONTEIRO, Emiliano Soares. Projeto de sistemas e banco de dados. Rio de Janeiro: Brasport, 2004.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

121

AulA 1 bAnco de dAdos

Aula 1Dependncia funcional e normalizaoEsperamos que, ao final desta aula, voc seja capaz de: compreender os conceitos de dependncia funcional e sua importncia no contexto de bancos de dados; entender os conceitos de normalizao e sua aplicao.

Para que os objetivos desta aula sejam atingidos, importante que voc domine os conceitos de relaes, entidades, atributos, chaves, relacionamentos e cardinalidade. Alm disso importante ter uma viso geral da organizao de um banco de dados relacional. Esses contedos foram vistos na disciplina de Bancos de Dados do segundo perodo e so importantes para a compreenso da dependncia funcional e da normalizao.

Atualmente, muitos softwares que compem os sistemas de informao podem ser considerados apenas uma interface entre os usurios e os dados armazenados. Esse raciocnio ilustrado na figura que segue. Figura 1 Ilustrao da relao entre aplicativos, usurios e bancos de dados.

Nesse cenrio, um elemento importante no pode deixar de ser considerado: o sistema gerenciador de banco de dados - SGBD. O SGBD tem, entre outras funes, a responsabilidade de gerenciar o acesso dos aplicativos s bases de dados por ele gerenciadas.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

123

AulA 1 bAnco de dAdos

Em geral, o objetivo do projeto de um banco de dados relacional um esquema de relaes que nos permite armazenar um conjunto de dados sem redundncia, alm de possibilitar a rpida recuperao de informaes (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). A qualidade de um projeto to importante quanto a qualidade dos softwares que fazem a interface com o usurio, embora, em muitas situaes o pblico-alvo de um projeto no tenha acesso, ou noo, das aes e esquemas que so implementados. Alguns conceitos so de extrema importncia no projeto de bancos de dados relacionais, como a dependncia funcional e a normalizao de dados, que o foco de estudo desta aula.

1.1 Dependncia funcionalA dependncia funcional pode ser definida como uma restrio entre dois conjuntos de atributos de uma mesma entidade/relao (ALVES, 2004). Essa definio pode ser feita sob uma linguagem mais precisa. Elmasri e Navathe (2005) afirmam que uma dependncia funcional, denotada por XY entre dois conjuntos de atributos (que so subconjuntos) de uma relao R especificam uma restrio nas possveis tuplas que formem um estado da relao r de R. A restrio que, para quaisquer duas tuplas t1 e t2 em r que tenham t1[X] = t2[X], elas tambm tm de ter t1[Y] = t2[Y]. Isso significa dizer que os valores do componente de Y, de uma tupla em r, dependem ou so determinados por valores do componente de X. Alternativamente, os valores de X determinam exclusivamente (ou funcionalmente) os valores de Y. A partir do exposto, dizemos que Y funcionalmente dependente de X. O conceito de dependncia funcional explicado e exemplificado a seguir. Considere uma relao Matrcula com os seguintes atributos: mat_aluno, cod_curso, cod_disciplina, nome_aluno, data_matricula, nome_disciplina, nome_curso e nota_prova. Uma relao de dependncia entre esses atributos ilustrada na figura a seguir. Figura 2 Ilustrao de dependncia funcional parcial.

124

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 1 bAnco de dAdos

Se considerarmos X como sendo o conjunto formado pelos atributos matricula_aluno, cod_curso e cod_disciplina, que so justamente os atributos que compem a chave primria dessa relao, e Y como sendo o conjunto formado pelos atributos nome_aluno e data_matricula, podemos dizer que os valores dos atributos de Y dependem do atributo matricula_aluno, que pertence ao conjunto X. Esse tipo de dependncia, na qual o conjunto Y dependente apenas de parte da chave primria da relao, chamada de dependncia parcial. Note que o nome do aluno e a data de sua matrcula em uma determinada disciplina de um curso so valores, geralmente, armazenados em uma relao com informaes sobre o aluno. As figuras a seguir ilustram outras possibilidades de dependncia funcional dentro da mesma relao. Figura 3 Outras possibilidades de dependncia funcional: cod_curso e nome_curso.

Figura 4

Outras possibilidades de dependncia funcional: nome_disciplina e cod_disciplina.

Note, na Figura 3, que o atributo nome_curso dependente apenas do cod_curso, enquanto que, na Figura 4, o atributo nome_disciplina dependente apenas do atributo cod_disciplina.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

125

AulA 1 bAnco de dAdos

Outro tipo de dependncia a dependncia total, ou completa, na qual um determinado conjunto de atributos dependente de todos os atributos que compem a chave primria da relao. Utilizando o mesmo exemplo de relao das figuras anteriores, a Figura 5 ilustra uma dependncia funcional total. Figura 5 Exemplo de dependncia funcional total.

Observe que, diferentemente das outras ilustraes de dependncia, o atributo nota_prova no pode ser associado a apenas parte da chave primria, pois a nota de uma prova deve estar, sempre, relacionada ao aluno que fez a prova, a disciplina em questo e tambm o curso ao qual a disciplina pertence. Esse um exemplo clssico de dependncia funcional total. Existe ainda m tipo de dependncia chamada de dependncia transitiva. Esse tipo de dependncia caracterizado por uma situao na qual um determinado conjunto de atributos Y funcionalmente dependente de um atributo que no faz parte da chave primria da relao. Ainda aproveitando o exemplo anterior, a Figura 6 ilustra este tipo de dependncia. Figura 6 Exemplo de dependncia transitiva.

Observe que foi adicionado o atributo status, usado para indicar se o aluno est reprovado ou aprovado. Note que a aprovao ou reprovao do aluno

126

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 1 bAnco de dAdos

dependente exclusivamente da nota obtida na prova realizada pelo aluno, que no faz parte da chave primria da relao. 1.1.1 Redundncia e anomalias De acordo com as dependncias funcionais que estiverem presentes em um banco de dados, existe a possibilidade de surgirem diversos tipos de problemas. Um deles a redundncia. Ainda abordando o exemplo supracitado, observe que as nicas informaes armazenadas que dizem respeito aos alunos so matricula_aluno, nome_aluno. natural, que nesse banco de dados, exista uma tabela chamada Aluno, na qual estejam contidos atributos como endereo, filiao, etc. Dessa maneira, ao inserir informaes como nome_aluno, estamos duplicando desnecessariamente uma informao. Uma soluo aparente para esse problema seria unificar as relaes, de maneira que as informaes adicionais da entidade Aluno sejam presentes na relao apresentada nas figuras anteriores. Essa ao geraria uma anomalia, j que somente poderamos inserir um registro da entidade Aluno quando houvesse uma matrcula e, alm disso, para cada matrcula de cada disciplina, novamente teramos as informaes duplicadas. Complementando, podemos afirmar que tais problemas se agravam nas aes de excluso e atualizao, j que, ao se excluir a matrcula de um aluno, estaramos excluindo tambm o registro do prprio aluno. Alm disso, atualizaes feitas em informaes duplicadas devem ser propagadas para cada registro que contiver aquelas informaes. Nesse cenrio, surgem questionamentos sobre como resolver esses problemas. A resposta reside nas tcnicas de normalizao, que so discutidas a seguir.

1.2 NormalizaoSegundo Elmasri e Navathe (2005), a normalizao de dados pode ser vista como o processo de anlise de determinados esquemas de relaes com base em suas dependncias funcionais e chaves primrias para alcanar as propriedades desejveis de minimizao de: redundncia anomalias de insero anomalias de excluso anomalias de atualizao Machado e Abreu (1996) sugerem duas abordagens para empregar a tcnica de normalizao de dados. Vejamos, a seguir, quais essas abordagens. Abordagem top-down: aps a definio de um modelo de dados, aplicamos a normalizao para obtermos uma sntese dos dados, bem como

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

127

AulA 1 bAnco de dAdos

uma decomposio das entidades e relacionamentos em elementos mais estveis, tendo em vista uma futura implementao fsica em um banco de dados. Abordagem bottom-up: consiste em aplicar a normalizao como ferramenta de projeto do modelo de dados, para que, inicialmente j se construa um modelo de dados normalizado. Segundo Alves (2004), a forma normal de uma relao indica o grau de normalizao no qual a relao se encontra. Academicamente falando, existem cinco formas normais, embora apenas as trs primeiras j sejam suficientes para termos uma boa definio da estrutura do banco de dados. No fim da normalizao, teremos a resposta para uma das perguntas que surgem quando iniciamos um projeto: quantas tabelas sero necessrias em nosso banco de dados? Aps a aplicao da normalizao, independente da abordagem (bottom-up ou top-down), esperamos obter um banco de dados com as seguintes caractersticas: robustez eficincia facilidade de manuteno e alterao flexibilidade confiabilidade Vejamos, nos tpicos a seguir, as trs formas normais para que haja definio da estrutura do banco de dados. 1.2.1 A primeira forma normal Existem muitos bancos de dados que armazenam informaes multivaloradas. Essas informaes so passveis de decomposio. Uma informao que no pode, ou no precisa ser decomposta chamada de informao atmica. Segundo Silberchartz, Korth e Sudarshan (2006), dizemos que uma relao R se encontra na primeira forma normal se todos os atributos de R so atmicos. Um exemplo clssico de atributo multivalorado o campo endereo, presente em muitas relaes em bancos de dados. Considerem uma relao Aluno contendo os atributos: matricula_aluno, nome_aluno, fone, endereo e data_nasc. Todos ns sabemos que o endereo composto por outras informaes, como cidade, estado, CEP, bairro, rua, nmero e complemento. Dessa maneira no difcil perceber que existe nessa relao um atributo multivalorado. Para adequar essa relao primeira forma normal, poderamos refin-la para a forma sugerida na figura a seguir.

128

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 1 bAnco de dAdos

Figura 7

Decomposio do atributo endereo.

Outra ao de normalizao que pode ser implementada a criao de uma nova relao contendo os atributos do campo multivalorado, mantendo-se o vnculo dessa relao com a chave primria da relao original. A Figura 8 ilustra essa soluo. Figura 8 Outra opo de normalizao.

Observe que agora temos duas tabelas relacionadas pela chave estrangeira mat_aluno criada na tabela ENDEREO. 1.2.2 A segunda forma normal Segundo Elmasri e Navathe (2005), a segunda forma normal baseada no conceito de dependncia funcional total. Alves (2004) complementa afirmando que colocar as entidades na segunda forma normal um pouco mais difcil que na primeira. Uma entidade se encontra na segunda forma normal se, alm de estar na primeira, todos os seus atributos so totalmente dependentes da chave

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

129

AulA 1 bAnco de dAdos

primria composta. Note que essa forma normal no se aplica as relaes com uma chave primria simples (composta por um nico atributo). Isso significa que atributos parcialmente dependentes da chave sero removidos. A remoo dos atributos parcialmente dependentes no significa propriamente que essas informaes sero perdidas, mas podem ser alocadas em outra relao, ou ainda, removendo-as, estaramos apenas deixando de duplic-las. Para ilustrar a aplicao da segunda forma normal, vamos considerar um domnio no qual tenhamos o relacionamento apresentado na Figura 9. Figura 9 Relacionamento em um domnio de aplicao.

Observe que, na tabela ITENS, os atributos descrio e valor unitrio no so dependentes da chave primria composta pelo campo num_pedido e cod_ produto. A sua remoo no indica necessariamente que eles deixem de ser armazenados no banco de dados, mas uma ao de normalizao poderia agir no sentido de repassar essas informaes para outra relao, como apresentado na soluo a seguir, ilustrada na Figura 10. Figura 10 Resultado da aplicao da segunda forma normal.

Analisando esse novo diagrama, percebemos que a adequao segunda forma normal foi efetuada sem a perda da capacidade de recuperao das informaes. Por exemplo, para que um aplicativo possa determinar o valor total de um pedido, basta consultar quais itens esto contidos nesse pedido, a quantidade de cada item e o seu valor unitrio na tabela produto.

130

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 1 bAnco de dAdos

1.2.3 A terceira forma normal Elmasri e Navathe (2005) tambm descrevem a terceira forma normal. Uma relao se encontra na terceira forma normal quando no h nenhuma dependncia transitiva, ou seja, quando nenhum atribuo dependente de um conjunto X de atributos tal que um elemento qualquer de X no faa parte da chave primria. Um exemplo de dependncia transitiva j foi mostrado anteriormente, no qual o valor de um campo status era dependente do valor do campo nota. O campo status deve ser removido da relao para que ela esteja na terceira forma normal. Uma possvel soluo para o problema seria o que est exposto na figura a seguir. Figura 11 Resultado da aplicao da terceira forma normal.

Nesse exemplo, alm de remover a dependncia transitiva, inserimos na tabela DISCIPLINA o campo nota_ap, que a nota mnima para a aprovao. Dessa maneira, podemos determinar se um aluno foi aprovado em uma disciplina verificando se a nota_prova desse aluno tem valor igual ou superior ao valor do campo noa_ap da disciplina em questo. Note que essas associaes so possveis por meio da utilizao das chaves estrangeiras mat_aluno e cod_ disc na tabela MATRCULA. A partir da identificao das dependncias funcionais e das aplicao das tcnicas de normalizao, poderemos projetar e construir bancos de dados com as caractersticas que permitem um bom desempenho. So as j citadas: robustez eficincia facilidade de manuteno e alterao flexibilidade confiabilidade Portanto, a partir do que analisamos nesta aula, percebemos que ignorar dependncias funcionais e normalizao pode trazer diversos problemas na utilizao de banco de dados. Assim, ao projetarmos um banco de dados desde o seu incio (abordagem bottom-up) ou mesmo um banco de dados j em operao (abordagem top-down), devemos aplicar as tcnicas de normalizao.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

131

AulA 1 bAnco de dAdos

Nesta aula, estudamos conceitos muito importantes para o projeto de bancos de dados relacionais: dependncia funcional e normalizao. Uma dependncia funcional uma restrio imposta sobre conjuntos de atributos de uma relao. J a normalizao processo de anlise de determinados esquemas de relaes com base em suas dependncias funcionais e chaves primrias para alcanar as propriedades desejveis de minimizao de redundncia, anomalias de insero, anomalias de excluso, anomalias de atualizao. Estudamos que a identificao dos tipos de dependncias funcionais (parcial, total e transitiva), alm da correta aplicao da normalizao (primeira, segunda e terceira formas normais) so importantes para que tenhamos em mos um bom projeto de banco de dados.

1. A respeito de dependncias funcionais, assinale a alternativa correta. a) Pode existir dependncia funcional entre atributos de entidades diferentes. b) Para a eliminao de qualquer tipo de dependncia funcional, devemos apenas reorganizar os atributos de uma relao, nunca criar outras relaes ou apagar atributos. c) Alguns tipos de dependncia funcional podem resultar em problemas, como a redundncia de dados.

d) A redundncia de dados causada por alguns tipos de dependncias funcionais, no pode ser considerada um problema, j que dados redundantes somente so usados para leitura e no para atualizaes. 2. D exemplos de situaes nas quais seja indicado utilizar as abordagens para normalizao de dados (top-down e bottom-up). 3. Sobre normalizao, incorreto afirmar que: a) a segunda forma normal diz respeito s dependncias funcionais parciais; b) a terceira forma normal trata das dependncias transitivas em uma relao; c) a primeira e a segunda formas normais tratam do mesmo tipo de dependncia funcional. A primeira apenas substitui os atributos, enquanto que a segunda cria outras relaes para transferir tais atributos.

d) para que uma relao esteja de acordo com a terceira forma normal, ela deve estar tambm de acordo com a segunda forma normal.

132

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 1 bAnco de dAdos

4. Que tipo de problemas pode ocorrer em um banco de dados cujas relaes no observam nenhuma das formas normais?

Que tal conferir se voc acertou as respostas e atingiu os objetivos da aula? Iniciamos ento pela atividade um. A alternativa (a) incorreta, j que, segundo a definio de dependncia funcional, um conjunto de atributos de uma relao R funcionalmente dependente de outro conjunto de atributos da mesma relao. De acordo com as regras de normalizao, em alguns casos, atributos podem ser reorganizados e em outros casos removidos, portanto, a alternativa (b) tambm incorreta. De acordo com a sesso que fala de redundncia e anomalias, uma dependncia funcional mal projetada pode trazer problemas, logo, a alternativa (c) a correta. A alternativa (d) totalmente incorreta, j que a redundncia um problema comum em bancos de dados mal projetados e, alm disso, esse problema independe das aes de leitura e ou atualizao de itens de dados. Na atividade dois, voc considerou que a abordagem top-down aplicada sobre um modelo conceitual j definido. Com isso, uma situao comum para utilizao desse tipo de abordagem a manuteno de bancos de dados, ou ainda, implementao de alteraes na estrutura do banco de dados. Em relao abordagem bottom-up, comum encontr-la quando se deseja construir um banco de dados partindo do incio, ou seja, a normalizao no ser aplicada sobre um modelo conceitual definido. Na atividade trs, a alternativa incorreta a letra (c), que compara a primeira e a segunda forma normal, entretanto, cita-as de maneira errnea, j que a primeira forma normal trata de atributos multivalorados e no de dependncia funcional, enquanto que a segunda forma normal trata somente das dependncias funcionais parciais. Na atividade quatro, voc apontou os problemas que podem surgir se no observarmos as formas normais: redundncia e os diferentes tipos de anomalias, por exemplo, anomalias de insero que nos foram a inserir informaes duplicadas e, alm disso, obrigam a um esforo maior nas excluses que devem ser propagadas.

ALVES, Willian P. Sistema de bancos de dados. So Paulo: rica, 2004. ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. So Paulo: Pearson Prentice Hall, 2005.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

133

AulA 1 bAnco de dAdos

MACHADO, N. R.; ABREU, M. Projeto de banco de dados: uma viso prtica. So Paulo: rica, 1996. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. So Paulo: Campus, 2006.

Estudaremos os conceitos relacionados ao armazenamento e recuperao de informaes. Abordaremos mais precisamente os arquivos de registros e outras formas de armazenamento. Analisaremos tambm as tcnicas de indexao e hashing usadas para acessar os itens de dados armazenados.

Anotaes

134

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 2 bAnco de dAdos

Aula 2Armazenamento, indexao e hashingEsperamos que, ao final desta aula, voc seja capaz de: compreender a maneira como os bancos de dados so armazenados em arquivos; compreender a forma de acesso aos arquivos que compem um banco de dados.

Para que os objetivos desta aula sejam atingidos, importante que voc entenda o conceito de armazenamento de dados em arquivos, conhea os tipos de memria. importante tambm que domine a noo de tabelas e registros de um banco de dados. Tais assuntos foram abordados largamente em disciplinas como Bancos de Dados (no segundo perodo), Programao e Computao Bsica. Eles so importantes para esta aula pelo fato de estarem relacionados com os conceitos de armazenamento, indexao e hashing, foco de estudo desta aula.

Os bancos de dados geralmente armazenam grandes quantidades de dados que devem ser mantidos por longos perodos de tempo. Durante esse tempo, os dados podem ser acessados e processados repetidas vezes (ELMASRI; NAVATHE, 2005). Atualmente os computadores tm uma capacidade de armazenamento muito superior aos computadores de uma dcada atrs. Porm a arquitetura da maioria desses computadores, sobretudo os computadores pessoais, ainda se apia na mesma arquitetura, que faz um uso muito grande da chamada memria principal, ou memria RAM. Embora a velocidade de acesso a dados permitida pelos dispositivos de armazenamento atuais seja consideravelmente alta, a forma como os dados esto estruturados influencia diretamente no desempenho de um sistema de banco de dados. Existem diversas tcnicas de armazenamento. Elas apresentam

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

135

AulA 2 bAnco de dAdos

vantagens e desvantagens que podem se aplicar melhor a um determinado tipo de aplicao. A determinao do tipo de armazenamento a ser utilizado faz parte do projeto fsico do banco de dados. Em geral, bancos de dados relacionais so armazenados em arquivos de registros. comum encontrarmos bancos de dados muito grandes para serem processados de uma s vez, dessa maneira, apenas os registros que esto sendo acessados em um determinado momento so carregados para a memria principal. Aps a sua manipulao, eles so devolvidos para o dispositivo de armazenamento definitivo. Nesta aula, estudaremos algumas tcnicas de armazenamento e acesso a dados armazenados em um banco de dados relacional.

2.1 Arquivos de registrosUm registro uma coleo de informaes relacionadas, no qual cada uma das informaes chamada de campo (ELMASRI; NAVATHE, 2005). Os registros, em geral, descrevem as entidades e seus atributos. Um arquivo de registros uma seqncia de registros armazenada eletronicamente. Um arquivo de registros pode se enquadrar em dois tipos principais: desordenado e ordenado. 2.1.1 Arquivos de registros desordenados Este o tipo de organizao mais bsico, no qual a insero de registros pode ser feita, simplesmente, ao final do arquivo. Nesse tipo de organizao, a operao de insero muito eficiente, j que pode ser feita utilizando ponteiros para as posies dos registros. Por outro lado, uma operao de busca de um registro pode se tornar extremamente dispendiosa em termos de tempo computacional, j que, com os registros desordenados, necessrio que se realize uma busca seqencial, ou seja, o sistema v-se obrigado a percorrer todos os registros do arquivo seqencialmente. No pior caso, chega-se ao final do arquivo para s ento descobrir que a informao buscada no est armazenada. 2.1.2 Arquivos de registros ordenados Os arquivos de registros ordenados apresentam algumas vantagens em relao aos desordenados. Uma dessas vantagens reside na busca por elementos: considerando que os registros esto ordenados de acordo com um critrio definido por um campo do registro, podemos implementar a busca binria.

Saiba mais

136

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 2 bAnco de dAdos

Por outro lado, as operaes de insero e remoo em arquivos de registros ordenados podem ser muito dispendiosas, j que os registros devem permanecer ordenados fisicamente. Se um registro deve ser inserido na metade do arquivo (de acordo com o campo usado como critrio de ordenao), todos os registros posteriores a ele devem ser movidos uma posio frente para que o novo registro seja alocado no arquivo. Assim podemos perceber que essa forma de armazenamento eficiente, mas pode resultar no aparecimento dos mesmos problemas do armazenamento no ordenado. Uma possibilidade de minimizar esses problemas usar um arquivo de overflow. Segundo essa tcnica, os novos registros so inseridos em outro arquivo e, nesse arquivo adicional, a leitura e a escrita so feitas de maneira linear. Em intervalos de tempo peridicos (possivelmente nos horrios de menor acesso ao banco de dados), efetuam a insero dos registros do arquivo de overflow no arquivo original. A utilizao de arquivos de registros ordenados traz ainda implicaes sobre as operaes de atualizao, pois, caso o campo chave para a ordenao seja um dos valores alterados, ser necessrio reposicionar o registro atualizado dentro do arquivo. Alm disso, em uma busca, somente podemos utilizar a pesquisa binria quando o campo chave para ordenao for um dos campos envolvidos na busca. Voc j deve ter percebido as limitaes desse modo de armazenamento. Devido a elas, a utilizao de arquivos de registros ordenados rara na implementao de bancos de dados.

2.2 Tcnica de hashingExiste outro tipo de organizao primria de arquivos de registros, que baseada em hashing ou tabelas de espalhamento. Uma tabela de espalhamento uma estrutura de dados na qual cada registro deve ter um campo que ser utilizado como chave para uma funo de espalhamento. Essa funo ir, a partir do campo escolhido, determinar em qual bloco esse registro deve ser armazenado. Essa mesma funo de espalhamento pode ser usada na busca por um registro. A eficincia dessa tcnica reside no fato de que a busca ser baseada em uma funo que, geralmente, utiliza clculos matemticos para agilizar o processamento. comum encontrarmos implementaes de hashing usando vetores, nos quais cada posio do vetor (slot, fenda ou bloco) usada para armazenar um registro. Nesse caso, a funo de espalhamento dever ter como entrada o valor do campo de hash e retornar um ndice do vetor, indicando onde o registro deve ser armazenado. Um exemplo seria transformar o campo de hash em um valor inteiro M e aplicar a funo f(M) = M mod N, onde N a quantidade de fendas disponveis e mod um operador que retorna o resto da diviso do operando esquerda pelo operando direita.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

137

AulA 2 bAnco de dAdos

Devemos considerar que existe a possibilidade de que dois valores diferentes de entrada para a funo de espalhamento resultem em valores de retorno idnticos. Alm disso, comum encontrarmos situaes nas quais o nmero de registros a serem armazenados muito maior do que a quantidade de blocos disponveis. Esse cenrio propcio para o aparecimento de colises. Uma coliso acontece quando dois registros so encaminhados para o mesmo bloco. Uma maneira de tratar colises utilizar a tcnica de encadeamento. De acordo com essa tcnica, cada posio do vetor utilizada como o incio de uma lista encadeada. Assim, quando houver uma coliso, os elementos so inseridos nessa lista. Uma implicao da utilizao do encadeamento que, em uma busca, quando for determinado o bloco no qual se encontra o registro, usando a funo de espalhamento, inicia-se uma busca linear, degenerando o desempenho da estrutura de hash. Uma funo de espalhamento considerada tima a que nunca retorna valores idnticos para valores de entrada diferentes. Porm essa situao invivel, j que seria necessrio ter tantas posies no vetor quantos registros para armazenamento. Uma funo de espalhamento pode ser considerada boa quando chega prximo do chamado espalhamento uniforme, no qual os registros ficam distribudos de maneira equilibrada nos diversos blocos disponveis. Um espalhamento dito uniforme quando a diferena entre o bloco com maior nmero de elementos e o bloco com menor nmero de elementos , no mximo, dois. Outra caracterstica para uma boa funo de espalhamento que sejam utilizados todos os blocos do vetor.

2.3 IndexaoUm ndice para um arquivo de um sistema de banco de dados funciona quase da mesma forma que o ndice remissivo de um livro. Se quisermos procurar por um termo em particular, vamos ao final do livro, procuramos esse termo, e descobriremos a pgina que o contm. Podemos, ento, ir pgina e buscar as informaes desejadas (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). A utilizao de um ndice remissivo somente til se ele estiver ordenado, diminuindo o esforo necessrio para encontrar um determinado termo. Esse mesmo cenrio pode ser aplicado ao armazenamento de registros de um banco de dados. Para obter acesso aleatrio rpido aos registros em um banco de dados, podemos utilizar uma estrutura de ndice. Essa estrutura define um arquivo, contendo dados (ndices) associados aos campos de um registro. Cada um desses ndices contm um ponteiro para o registro ao qual est associado. Dessa maneira, estando os ndices ordenados, podemos utilizar a pesquisa binria e, ento, acessar o registro desejado por meio do ponteiro contido no arquivo de ndice.

138

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 2 bAnco de dAdos

O aspecto que descreve a vantagem de utilizar ndices reside no fato de que manter apenas uma parte do registro ordenada computacionalmente mais barato do que manter todo o arquivo de registros ordenado. Alm disso, ao contrrio dos arquivos de registros ordenados, podemos utilizar vrios ndices para uma mesma entidade, de modo que cada atributo seja referenciado por um ndice diferente. A Figura 1 a seguir traz uma ilustrao desse conceito. Figura 1 Exemplo de indexao.

Observe na Figura 1 que a ordem dos elementos do ndice diferente da ordem dos registros correspondentes. A associao feita utilizando ponteiros. Um campo que serve de ndice chamado de campo de indexao. Nesse exemplo temos apenas um campo de indexao, porm, como j afirmado anteriormente, podem existir diversos campos de indexao para um mesmo registro, como ilustra a Figura 2 a seguir. Figura 2 Exemplo de indexao com dois ndices.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

139

AulA 2 bAnco de dAdos

Observe que, no segundo exemplo, existem dois campos utilizados como ndices: o ano e o autor. Existem diversas outras situaes nas quais til utilizarmos ndices, por exemplo, na definio de atributos que no so chave, porm no devem ser duplicados. importante ressaltar que, em muitos casos, a prpria chave primria do registro utilizada como campo de indexao. Sabemos que em muitos bancos de dados, os atributos que so chave primria so de tipos numricos. comum encontrarmos campos como cod_aluno, cod_carro, cod_fornecedor, como chave primria de tabelas. Isso pode ser justificado pela facilidade dos sistemas computacionais em processar dados numricos. Entretanto, em uma tabela de fornecedores, campos que constantemente so utilizados como chave para buscas pelos usurios, como o CNPJ, no devem ser duplicados. A definio de um campo como um ndice no-duplicvel uma boa opo para o projeto bancos de dados, pois evita a duplicidade e a inconsistncia de informaes e, ao mesmo, tempo fornece um mecanismo eficiente para busca.

2.4 Outras estruturas para armazenamento primrioSegundo Elmasri e Navathe (2005), outras estruturas de dados podem ser usadas como organizaes primrias de arquivo. Por exemplo, se tanto o tamanho do registro quanto o nmero de registros em um arquivo forem pequenos, alguns SGBDs fornecem a opo de utilizar a estrutura de dados rvore B como forma de organizao primria do arquivo de dados. Em geral, qualquer estrutura de dados que possa ser adaptada s caractersticas dos dispositivos de disco poder ser usada como organizao de arquivo primria para a disposio de registros no disco. Por exemplo, Alves (2004) descreve a utilizao de listas lineares, enquanto Silberchartz, Korth e Sudarshan (2006) descrevem a utilizao de rvores binrias.

2.5 Tecnologia RAIDUm grande avano da tecnologia de armazenamento secundrio representado pelo desenvolvimento do RAID, que significa Redundant Arrays of Inexpensive Disks, ou vetores redundantes de discos baratos. O principal objetivo do RAID proporcionar melhoria de desempenho de modo a equiparar as taxas muito diferentes entre os discos e as memrias de microprocessadores (ELMASRI; NAVATHE, 2005). Uma das razes que motivam o desenvolvimento desse padro que memrias e processadores ficaram muito mais rpidos, e os discos magnticos para armazenamento em massa no acompanharam essa evoluo. A capacidade de armazenamento dos discos tem aumentado bastante, porm a sua velocidade de acesso continua defasada em relao a outros dispositivos, de maneira que o acesso ao disco tem se tornado o vilo de muitas aplicaes que exigem alto desempenho.

140

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 2 bAnco de dAdos

A soluo proposta pela tecnologia RAID utilizar um grande vetor de pequenos discos independentes, atuando como um nico disco lgico de mais alto desempenho. Um conceito que utiliza paralelismo para aumentar o desempenho de um disco, o stripping, utilizado e consiste em distribuir os dados de maneira transparente em diversos discos e faz-los parecer um nico disco grande e rpido. O stripping de dados melhora o desempenho total de entrada e sada, permite que diversas entradas e sadas possam ser feitas em paralelo, fornecendo, assim, altas taxas de transferncia globais (ELMASRI; NAVATHE, 2005). Portanto a utilizao de uma tcnica de armazenamento e a recuperao de informaes adequada pode se tornar o diferencial de um determinado banco de dados em relao a outros. Aspectos como a quantidade de informaes de um banco de dados, os dispositivos fsicos de armazenamento disponveis e os recursos de software disponibilizados pelo SGBD nos ajudam a escolher a tcnica adequada para um determinado tipo de banco de dados.

Nesta aula, comentamos algumas das principais formas de armazenamento eletrnico de dados, por exemplo, os arquivos de registros desordenados e os arquivos de registros ordenados. Alm disso, apresentamos algumas tecnologias de acesso aos registros de um banco de dados, como a utilizao de arquivos de registros, indexao, hashing e a tecnologia RAID. Tais conceitos so muito importantes para o projeto de bancos de dados, j que influenciam aspectos como a eficincia e desempenho.

1. Considerando que a utilizao de arquivos de registros ordenados uma tcnica que tem seu potencial fundamentado na busca binria dos registros, ordenados de acordo com um dos campos dos registros, verificamos que h uma limitao nessa tcnica quando pesquisas so feitas em relao a outros campos. Que outra tcnica, que tambm utiliza pesquisa binria, permite que vrios campos de um registro possam ser utilizados como base para pesquisa binria? 2. A tcnica de hashing tem seu potencial fundamentado na rapidez para determinar o local de armazenamento de um registro. Entretanto dois registros diferentes podem ser mapeados para um mesmo bloco de registros, o que chamamos de coliso. Uma das formas de tratamento de colises a utilizao do encadeamento. Porm, dentro de um grupo de registros que foram mapeados para o mesmo bloco, implementa-se a busca seqencial, o que faz com que se perca grande parte da performance. O que poderia ser feito para manter o alto desempenho?

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

141

AulA 2 bAnco de dAdos

3. Em relao utilizao de ndices em um banco de dados, assinale a alternativa correta. a) Um campo de indexao deve, sempre, ser um campo no duplicvel. b) A utilizao de ndices extremamente prejudicial ao banco de dados, pois representa o armazenamento de uma quantidade maior de informaes. c) A indexao muito til, sobretudo por no necessitar da ordenao dos registros armazenados em arquivo, mas apenas do ndice.

d) A utilizao de mais de um campo de indexao intil, pois de qualquer maneira, o arquivo de registros no ordenado. 4. Em relao tecnologia de RAID e s tabelas de espalhamento, correto afirmar que: a) de acordo com a tecnologia RAID, um nico disco de grande capacidade fragmentado logicamente em diversas unidades. b) a tecnologia RAID uma alternativa para melhorar o desempenho dos sistemas de bancos de dados que utilizam os discos magnticos, j que no acompanharam a evoluo na rapidez de acesso em relao s memrias RAM. c) as tabelas hash, tambm conhecidas como tabelas de espalhamento, somente tm utilidade em um sistema de banco de dados se contiverem uma funo de espalhamento que seja considerada excelente.

d) a principal limitao da tcnica de hashing a incapacidade de tratar colises.

Os objetivos desta aula so: compreender a maneira como os bancos de dados so armazenados em arquivos e compreender a forma de acesso aos arquivos que compem um banco de dados. Ser que eles foram atingidos? Vamos conferir! Na atividade um voc considerou que, embora a tcnica de armazenamento em arquivos ordenados seja uma opo melhor em relao aos arquivos de registros desordenados, ela tem problemas, como a insero e a remoo de registros, alm da busca binria ser refm de um nico critrio, que justamente o campo que foi utilizado como base para a ordenao dos registros no momento de sua insero no arquivo. Voc apontou que uma alternativa seria utilizar a tcnica de indexao. Com essa tcnica, diversos ndices podem ser criados para uma mesma entidade, no h a necessidade de ordenao dos arquivos, no h custo computacional adicional nas inseres e remoes e, ainda, permite a utilizao da busca binria tendo outros campos como chave para pesquisa.

142

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 2 bAnco de dAdos

Na atividade dois, voc considerou que o encadeamento faz com que cada bloco usado para receber os elementos seja o incio de uma lista encadeada. Uma alternativa seria deixar essas listas ordenadas e efetuar a pesquisa binria. Essa uma opo de projeto que tem certo custo de implantao, mas permite diminuir o problema causado pelas colises. Na atividade trs, a resposta a alternativa (c). A alternativa (a) est incorreta, pois no h restries para a criao de ndices. A alternativa (b) incorreta, pois, apesar de necessitar de uma quantidade maior de dados armazenados, a rapidez no acesso compensa todo o custo adicional de armazenamento. A alternativa (d) tambm est incorreta, pois a utilizao de mais de um campo de indexao permite que se tenha mais uma opo para busca binria (mais eficiente) para uma determinada entidade em um sistema de banco de dados. Na atividade quatro, a alternativa correta (b). A alternativa (a) incorreta pelo fato de que a tecnologia RAID prev a utilizao de vrios discos fsicos, agindo como um disco lgico, e no o contrrio, como afirmado. A alternativa (c) est errada, j que uma funo de espalhamento tima sugere um bloco para cada registro, situao que pode ser invivel em um banco de dados com grande volume de informaes. Finalmente, a alternativa (d) tambm est incorreta pelo fato de que existem meios de lidar com as colises em uma tabela de espalhamento.

ALVES, Willian P. Sistema de bancos de dados. So Paulo: rica, 2004. ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. So Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. So Paulo: Campus, 2006.

Estudaremos as transaes, que so muito importantes para os sistemas de bancos de dados. Essa importncia se d, inclusive, pela possibilidade de tratar de maneira mais eficiente s operaes efetuadas sobre um banco de dados. O estudo das transaes inclui as suas principais propriedades, que so a atomicidade, consistncia, isolamento e durabilidade. At l!

Anotaes

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

143

AulA 2 bAnco de dAdos

144

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 3 bAnco de dAdos

Aula 3TransaesEsperamos que, ao final desta aula, voc seja capaz de: entender o que uma transao e quais as suas vantagens; entender as propriedades de uma transao e seus estados.

Para o entendimento desta aula, importante que voc conhea os conceitos de monoprocessamento, multiprocessamento e processamento paralelo para uma melhor compreenso do tratamento s transaes em um SGBD que garanta a integridade e a consistncia dos dados quanto das operaes realizadas pelos sistemas dos usurios em um banco de dados. Tambm fundamental o conhecimento bsico sobre o que um banco de dados e um Sistema Gerenciador de Banco de Dados SGBD , bem como ainda dos comandos bsicos da linguagem SQL utilizada por diversos SGBDs. Todos esses contedos foram vistos nas aulas da disciplina de Bancos de Dados, no segundo perodo.

Grande parte dos vrios processos existentes no mundo real, tais como transferncias de valores em instituies bancrias, compras em comrcio eletrnico e outros servios, utiliza transaes que so um atributo ou um artifcio comum em bancos de dados comerciais. Vamos estudar, nesta aula, a importncia das transaes dentro de um SGBD, bem como suas propriedades e seus estados.

3.1 Definindo transaesDate (2004, p. 63) afirma que transao uma unidade lgica de trabalho, envolvendo diversas operaes de bancos de dados. Podemos dizer, ainda, que

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

145

AulA 3 bAnco de dAdos

uma transao todo e qualquer comando que altera o estado do banco de dados, ou seja, transao a unidade lgica de processamento de um SGBD, constituda de um conjunto de operaes (INSERT, UPDATE, DELETE, etc.), cujo objetivo transformar um BD de um estado consistente para outro estado consistente, mesmo que nos passos intermedirios (operaes) o sistema permanea temporariamente inconsistente. A Figura 1 ilustra essa situao. Figura 1 Exemplo de transao.

O usurio deve ser capaz de informar ao sistema quando diferentes operaes fazem parte de uma transao. Basicamente, a transao comea quando uma operao BEGIN executada e termina quando uma operao chamada COMMIT ou ROLLBACK correspondente executada. Dessa forma, podemos perceber que uma transao formada caracteristicamente por esses comandos (ELMASRI; NAVATHE, 2005). A Figura 2 contm uma representao de uma transao. Figura 2 Estrutura sql de uma transao. ... BEGIN OPERACAO 1; OPERACAO 2;

... OPERACAO N; COMMIT; ... ROLLBACK;

Pensando sobre o assunto

146

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 3 bAnco de dAdos

Segundo Date (2004), podemos consistir o conceito de transao com um exemplo clssico que utilizado quando precisamos iniciar esse assunto em sala de aula, que uma explicao anloga a uma transferncia bancria. Em meio a um processo de transferncia de valor entre contas, temos alguns comandos SQL que so executados todos de uma vez, formando a tal unidade lgica que, por sua vez, envolve diversas operaes de bancos de dados, tais como INSERT e UPDATE. Transaes tambm podem conter DELETE e SELECT, mas no caso da transferncia, utilizaremos somente o UPDATE. Digamos que nossa agncia tenha dois correntistas, A e B e, em um belo dia, A resolve fazer uma transferncia de R$ 50,00 para B. Essa transao ser feita pela Internet, por meio de um sistema de internet banking, ento, A acessar a sua conta e completar a operao. Do lado servidor, o banco de dados recebe o valor e a conta de destino, tal valor subtrado da conta de origem e adicionado na conta de destino. Nesse momento, h uma conferncia por parte do SGBD tudo correu bem , ento a transao finalizada com sucesso (ELMASRI; NAVATHE, 2005).

3.2 Importncia das transaesSegundo Ramakrishnan e Gehrke (2003), se tomarmos como base o conceito de que transaes so unidades lgicas de trabalho em uma aplicao, e que a base de dados est em um estado consistente antes e depois de uma transao, podemos afirmar que as transaes desempenham um papel importante em um SGBD uma vez que: funcionam como um mecanismo que garante que toda transao iniciada termina com sucesso ou desfeita; transaes de diferentes usurios que envolvem dados compartilhados so executadas em seqncia; transaes controlam melhor a concorrncia de operaes e a reconstruo dos dados em caso de falha.

3.3 Propriedades ACIDVoc compreendeu que uma transao uma seqncia de operaes executadas como uma nica unidade lgica de trabalho. Uma unidade lgica de trabalho deve mostrar quatro propriedades, designadas pelas iniciais ACID (atomicidade, consistncia, isolamento e durabilidade), para que seja qualificada como uma transao. Vejamos agora, segundo Date (2004), o que significa cada uma delas. 3.3.1 Atomicidade Uma transao deve ser uma unidade atmica de trabalho: ou todas as suas modificaes de dados so executadas ou nenhuma delas executada,

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

147

AulA 3 bAnco de dAdos

ou seja, voc utiliza transao quando determinada ao envolve atualizao de mais de uma tabela do banco. E para garantir que todas as atualizaes sejam realizadas, utiliza transao. Se uma ao pode ser separada em aes menores, ento temos duas (ou mais) transaes, ou seja, se uma ou mais aes podem falhar sem deixar o banco de dados em estado inconsistente, essas aes no devem ser parte da mesma transao. 3.3.2 Consistncia A execuo de uma transao deve levar ao banco de dados de um estado consistente a outro tambm consistente, ou seja, quando concluda, uma transao deve deixar todos os dados em um estado consistente. Uma transao consistente se no violar a integridade do banco de dados. Se a transao tiver xito ou falhar, ela deve deixar o banco de dados em um estado consistente. Se uma transao falhar, ela precisa desfazer todas as alteraes temporrias e deixar o banco de dados no estado em que ele estava antes que a transao iniciou. 3.3.3 Isolamento Uma transao no deve tornar suas atualizaes visveis a outras transaes antes do seu fim, ou seja, modificaes feitas por transaes simultneas devem ser isoladas das modificaes feitas por qualquer outra transao simultnea. Uma transao que debita uma conta e credita outra deve ser totalmente transparente. Quando isso feito, a transao precisa atualizar o banco de dados de uma s vez. Por exemplo, se um usurio solicitar o saldo de uma conta e ela est sofrendo uma transao, o banco de dados s deve retornar o valor do saldo depois que completar a atualizao. Dessa forma, durante a transao algumas linhas so bloqueadas. 3.3.4 Durabilidade Depois que uma transao tiver sido concluda, seus efeitos ficam permanentemente no sistema, ou seja, aps o trmino de uma transao, suas atualizaes no podem ser perdidas por causa de falhas futuras. As modificaes persistem at mesmo no caso de uma queda do sistema. Se todas as aes forem realizadas com sucesso, no significa que houve sucesso na transao, pois ela precisa gravar os dados de volta ao disco. Caso ocorra uma falha no disco, a transao no vlida. Ento antes que uma transao seja completada deve verificar se as alteraes foram gravadas com sucesso antes de terminar.

3.4 Estados de uma transaoSegundo Ramakrishnan e Gehrke (2003), uma transao sempre monitorada pelo SGBD quanto ao seu estado. Que operaes j fez? Concluiu suas operaes? Deve abortar? So algumas perguntas que o SGBD realiza para gerenciar os estados de uma transao.

148

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 3 bAnco de dAdos

Os estados de uma transao podem ser: ativa, em processo de efetivao, efetivada, em processo de aborto e concluda. Uma transao pode se encontrar em diferentes estados. O grafo apresentado na Figura 3 ilustra as possibilidades de transio de estados. Figura 3 Transio de estados de uma transao.

Alves (2004) descreve os estados de uma transao da seguinte maneira: ativa: o estado inicial de toda transao selecionada para execuo. Ela permanece nesse estado enquanto estiver em execuo; em processo de efetivao: entra nesse estado aps executar sua ltima operao (solicitao de COMMIT). Neste momento, o SGBD precisa garantir que as suas atualizaes sejam efetivadas com sucesso (no sofram falhas); em processo de aborto: entra nesse estado se no puder prosseguir sua execuo. Pode ainda passar para esse estado enquanto ativa ou em processo de efetivao. Suas aes j realizadas devem ser desfeitas (ROLLBACK); efetivada: entra nesse estado aps o SGBD confirmar que todas as modificaes da transao esto garantidas no banco de dados (COMMIT OK), como, por exemplo, a gravao em Log, descarga de todos os buffers em disco, entre outros; concluda: estado final de uma transao, ele indica uma transao que deixa o sistema. As informaes das transaes mantidas em catlogo podem ser excludas (operaes feitas, dados manipulados, buffers utilizados, entre outros). Caso a transao no tenha sido concluda com sucesso, ela pode ser reiniciada automaticamente.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

149

AulA 3 bAnco de dAdos

Portanto, diante da apresentao das propriedades ACID e dos estados de uma transio, podemos perceber como a utilizao do mecanismo de transaes pode auxiliar na construo de bancos de dados consistente e confivel.

Nesta aula, voc aprendeu que uma transao a unidade lgica de processamento de um SGBD, constituda de um conjunto de operaes. O objetivo dela transformar um BD de um estado consistente para outro estado consistente, mesmo que nos passos intermedirios o sistema permanea temporariamente inconsistente. Voc entendeu tambm a importncia das transaes em um SGBD, pois elas garantem que toda transao (operaes) iniciada termine com sucesso ou seja desfeita. As transaes tambm controlam melhor a concorrncia de operaes e a reconstruo dos dados em caso de falha. Transaes de diferentes usurios que envolvem dados compartilhados so executadas em seqncia. Compreendeu tambm que, para ser qualificada como uma transao, ela deve mostrar quatro propriedades, designadas pelas iniciais ACID, que so as propriedades de atomicidade, consistncia, isolamento e durabilidade. Voc pde compreender que uma transao sempre monitorada pelo SGBD quanto ao seu estado, respeitando sempre um grafo de transio de estados. Finalmente, viu que os estados de uma transao podem ser: ativa, em processo de efetivao, efetivada, em processo de aborto e concluda.

1. A partir do exposto na aula, como voc define transao? 2. Leia e analise atentamente as seguintes afirmativas sobre as propriedades de uma transao. I. O princpio de atomicidade o princpio de tudo ou nada, ou seja, ou todas as operaes so efetivadas com sucesso em um banco de dados ou nenhuma delas se efetiva. Isso realizado para preservar a integridade do banco de dados. A propriedade de isolamento define que cada transao deve ser isolada dos efeitos da execuo concorrente de outras transaes.

II.

III. A propriedade que define que toda transao que for finalizada de forma bem-sucedida deve persistir seus resultados em banco mesmo na presena de falhas no sistema a propriedade de consistncia.

150

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 3 bAnco de dAdos

Assinale a alternativa correta. a) Somente a afirmativa I est incorreta. b) Somente as afirmativas I e II esto corretas. c) Somente as afirmativas II e III esto incorretas.

d) Todas as afirmativas esto corretas. 3. Para voc, qual a importncia das transaes em um SGBD? 4. Leia atentamente as afirmativas a seguir sobre os estados de uma transao. I. II. Ativo o estado inicial da transao. Ela permanece nesse estado enquanto estiver em execuo. Concluda o estado em que o SGBD confirma que todas as modificaes da transao esto garantidas no banco de dados.

III. Efetivada o estado final de uma transao, ele indica uma transao que deixa o sistema. Caso a transao no tenha sido concluda com sucesso, ela pode ser reiniciada automaticamente. IV. O estado processo de aborto o estado em que a transao no pode prosseguir sua execuo. Assinale a alternativa correta. a) As afirmativas II e III esto incorretas. b) As afirmativas I e III esto incorretas. c) Somente a afirmativa IV est correta.

d) As afirmativas I e IV esto incorretas.

Na atividade um, voc afirmou que uma transao a unidade lgica de trabalho, constituda de um conjunto de operaes. Seu objetivo transformar um BD de um estado consistente para outro estado consistente, mesmo que nos passos intermedirios o sistema permanea temporariamente inconsistente. Se voc conseguiu expor dessa maneira, parabns! Voc atingiu o objetivo de entender o que uma transao e quais as suas vantagens. Caso no tenha conseguido, sugiro que volte ao incio desta aula e revise cuidadosamente o contedo sobre transaes. Na atividade dois, a resposta correta a alternativa (b). Se sua resposta foi essa, parabns, voc atingiu nosso objetivo de entender as propriedades de uma transao e seus estados. A afirmativa (III) est incorreta, pois a propriedade de

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

151

AulA 3 bAnco de dAdos

consistncia define que cada transao executada isoladamente deve preservar a consistncia do banco de dados, e a propriedade de durabilidade define que toda transao que for finalizada de forma bem-sucedida deve persistir seus resultados em banco mesmo na presena de falhas no sistema. Caso voc tenha optado por outra alternativa, sugiro que reveja o contedo sobre as propriedades das transaes. Na atividade trs, voc exps que as transaes desempenham um papel importante em um SGBD porque garantem que toda transao (operaes) iniciada termine com sucesso ou ento seja desfeita. Se sua resposta trouxe essas observaes sobre a importncia das transaes, parabns! Voc atingiu nosso objetivo de entender o que uma transao e quais as suas vantagens. Caso no tenha conseguido responder dessa forma, sugiro que voc volte ao contedo desta aula e reveja atentamente a definio e importncia das transaes em um SGBD. Na atividade quatro, a resposta correta a alternativa (a). Se voc optou por essa resposta, parabns! Voc atingiu nosso objetivo de entender as propriedades de uma transao e seus estados. As afirmativas (II) e (III) esto incorretas, pois o estado efetivado o estado em que o SGBD confirma que todas as modificaes da transao esto garantidas no banco de dados, e concluda o estado final de uma transao, ele indica uma transao que deixa o sistema. Caso a transao no tenha sido concluda com sucesso, ela pode ser reiniciada automaticamente. Caso sua resposta tenha sido diferente, sugiro que voc volte ao contedo sobre os estados de uma transao e observe detalhadamente as caractersticas de cada estado.

ALVES, W. P. Fundamentos de bancos de dados. So Paulo: rica, 2004. DATE, C. J. Introduo a sistemas de bancos de dados. 8. ed. So Paulo: Campus, 2004. ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. So Paulo: Pearson Prentice Hall, 2005. RAMAKRISHNAN, R; GEHRKE, J. Database management systems. 3. ed. So Paulo: McGrow-Hill, 2003.

Estudaremos sobre os mecanismos de controle de concorrncia. Esses mecanismos so muito importantes, sobretudo em ambientes nos quais mais de uma transao pode ser efetuada no mesmo instante em um banco de dados. At l!

152

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 4 bAnco de dAdos

Aula 4Controle de concorrnciaEsperamos que, ao final desta aula, voc seja capaz de: compreender o porqu da utilizao da concorrncia nas transaes; identificar os principais problemas e tcnicas para o controle de concorrncia.

Para uma melhor compreenso desta aula, importante que os conceitos relacionados a transaes sobre um banco de dados tenham sido assimilados, bem como os comandos da linguagem procedural SQL, necessrios para a execuo de uma transao. Esses contedos foram apresentados na aula trs deste caderno. Entendendo os conceitos relativos s transaes, podemos compreender tambm os mecanismos de controle de concorrncia, que o assunto da aula.

Agora trataremos de um tema muito importante para os SGBDs em geral: a concorrncia. Essa importncia se d visto que um SGBD geralmente permite que sejam realizadas diversas transaes ao mesmo tempo. Assim necessrio que sejam adotados alguns mecanismos para garantir que transaes concorrentes no interfiram uma nas outras. Assim sero consideradas, nesta aula, os principais problemas de concorrncia, alm das principais tcnicas utilizadas para solucionar os problemas considerados.

4.1 ConcorrnciaO conceito de controle de concorrncia de extrema importncia para os SGBDs, visto que algumas propriedades devem ser respeitadas e, entre elas, deve se considerar o isolamento de transaes que sero executadas concorrentemente. A maioria das tcnicas utilizadas para esse controle tenta assegurar a

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

153

AulA 4 bAnco de dAdos

serializao da execuo das transaes. Para isto, utiliza um conjunto de regras, tambm chamadas de protocolos. Para melhor entendimento desses protocolos, temos de compreender, primeiro, os problemas que podem ocorrer em um banco de dados e, obviamente, sobre as transaes sobre ele executadas.

4.2 Problemas de concorrnciaExistem trs problemas cruciais que os mecanismos de controle de concorrncia de um SGBD devem tratar: atualizao perdida (lost update) dependncia sem commit anlise inconsistente Esses trs problemas podem ocorrer mesmo que a transao esteja correta respeitando as propriedades de uma transao. A seguir, vamos entender o que ocorre em cada um dos problemas citados. 4.2.1 Atualizao perdida (lost update) A melhor maneira de entendermos os problemas citados anteriormente aplicando exemplos. Ento vamos ao primeiro exemplo, que apresentar a atualizao perdida. A Tabela 1 apresenta duas transaes A e B, que, em momentos distintos, acessam uma tupla de dados ou como tambm pode ser expresso um item de dados. Tabela 1 Problema de atualizao perdida. TEMPO| T1 T2 T3 T4

TRANSAO A ler (t) alterar(t) Fonte: Date (2003, p. 400).

TRANSAO B ler(t) alterar(t)

Observando a Tabela 1, podemos notar que a transao A acessou uma tupla t e leu o seu valor em um tempo T1; a transao B acessou a mesma tupla e tambm realizou a leitura de seu valor em um tempo T2; a transao A realizou uma alterao no valor da tupla t em um tempo T3; e finalizando, a transao B atualizou o valor da mesma t no tempo T4. Porm essa atualizao na tupla realizada com base em seu acesso ao valor de t no tempo T2, perdendo, assim, a atualizao realizada pela transao A no tempo T3. Resumidamente, o problema da atualizao perdida consiste no fato que uma transao B em algum momento sobrescreve uma atualizao realizada por uma transao A, com valores muitas vezes incorretos devido a um processo de concorrncia inadequado.

154

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 4 bAnco de dAdos

4.2.2 Dependncia sem commit Assim como realizado na seo anterior, vamos a um exemplo para uma melhor compreenso sobre o problema da dependncia sem commit. Observe a Tabela 2, na qual apresentada a seqencia de transaes e suas operaes para descrever o problema. Tabela 2 Problema da dependncia sem commit com leitura de valores. TEMPO| T1 T2 T3 T4

TRANSAO A ler(t) Fonte: Date (2003, p. 400).

TRANSAO B alterar(t) rollback

Como pode ser observado na Tabela 2, o problema da dependncia sem commit reside na inconsistncia dos dados devido a uma transao no ser completada com sucesso. Note na tabela, que em um tempo T1, a transao B altera os valores do item de dados t; em seguida, a transao A, no tempo T2, l os valores de t; porm a transao B realiza um comando de rollback, ou seja, a alterao no completada. Assim o valor lido pela transao A, no tempo T2, incoerente, passando valores inconsistentes devido incompletude na transao B que ainda no havia sido finalizada. Outra vertente desse problema e que considerada mais sria, consiste em transaes que, ao invs de somente realiza a leitura, realiza operaes de escrita, sem que outra transao iniciada anteriormente tenha sido completada, como demonstrado na Tabela 3. Tabela 3 Problema da dependncia sem commit com alterao de valores. TEMPO| T1 T2 T3 T4

TRANSAO A alterar(t) Fonte: Date (2003, p. 400).

TRANSAO B alterar(t) rollback

Note que o problema o mesmo apresentado na Tabela 2. Porm, ao invs de um acesso de leitura sobre a tupla t, realizada uma operao de escrita, o que pode tornar tudo mais complexo, j que esses dados passam a estar incoerentes e persistentes no banco de dados.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

155

AulA 4 bAnco de dAdos

4.2.3 Anlise inconsistente O ltimo problema a ser apresentado dos citados no incio desta aula a anlise inconsistente. Ele, sob um ponto de vista mais superficial, semelhante ao problema apresentado na seo anterior, j que resulta na leitura inconsistente de valores por uma transao. A diferena que a leitura ocorre sem que tenham ocorrido problemas com a transao concorrente, ou seja, as operaes da transao so finalizadas usando o comando commit. Para exemplificar esse problema, imaginemos um banco que tem trs contas correntes, contendo respectivamente os valores 40, 50 e 30, sobre as quais duas transaes acontecem simultaneamente. A transao A realizar a soma dos valores das contas e a transao B realizar operaes de atualizao no banco de maneira concorrente. A Tabela 4 demonstra a seqncia de eventos. Tabela 4 Problema da anlise inconsistente. TEMPO| T1 T2

TRANSAO A ler conta1(40) soma = 40 ler conta2 (50) soma = 90 ler conta3 (20) soma = 110 Fonte: Date (2003, p. 401).

TRANSAO B altera conta3 30 20

T3

altera conta1 40 50 commit

T4

importante observar que o resultado final da soma realizada na transao A 110, enquanto o resultado correto seria 120. Esse problema se deve ao fato de que, enquanto a transao A, nos tempos T1 e T2, l e soma os valores das contas conta1 e conta2, em um tempo T3, a transao B realiza uma atualizao nos valores das contas conta3 e conta1, sendo finalizada com sucesso por meio do comando commit. Porm, no tempo T4, a transao A realiza a soma do valor contido na conta3, que foi alterado no tempo T3 pela transao B, causando o problema de inconsistncia no valor final da soma. Assim podemos dizer que o problema de anlise inconsistente geralmente acontece devido a diversos acessos de leitura a linhas de maneira que, a cada acesso, lido um novo valor gerado devido concorrncia com outras transaes, causando a inconsistncia no valor final.

156

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 4 bAnco de dAdos

Saiba mais

4.3 Tcnicas de controle de concorrnciaPara sanar os problemas mencionados anteriormente, so utilizadas tcnicas, tambm denominadas protocolos, para tratar do controle de concorrncia. Nesta disciplina, sero consideradas apenas escalas ditas serializveis, que podem ser classificadas em tcnicas pessimistas e otimistas. Elmasri e Navathe (2005) citam a seguinte classificao: a) pessimista bloqueio timestamp (marcas de tempo) b) otimista validao As tcnicas pessimistas presumem que sempre ocorrer interferncia entre as transaes e, ento, buscam sempre garantir a serializao enquanto uma transao estiver ocorrendo. J as tcnicas otimistas supem que raramente ocorrer a interferncia entre as transaes e somente verificam o aspecto da serializao ao final. Vamos anlise dos protocolos de controle de concorrncia. 4.3.1 Bloqueio Um protocolo consiste em uma padronizao de procedimentos utilizados para a execuo de uma tarefa. Logo o que ocorre em todos os protocolos nada mais que uma definio de regras a serem seguidas. O bloqueio certamente o mais utilizado entre os protocolos de controle de concorrncia pelos bancos de dados disponveis no mercado (ELMASRI; NAVATHE, 2005). Diversos modos de bloqueio podem ser utilizados para trabalhar com transaes concorrentes, porm iremos assumir apenas os dois modos mais difundidos e que so mencionados por Silberschatz, Korth e Sudarshan (2006). Vejamos quais so esses dois modos. a) Compartilhado: se uma transao obtiver um bloqueio compartilhado (indicado por S, do ingls Share) sobre um dado, ento poder ler, mas no escrever sobre o item bloqueado.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

157

AulA 4 bAnco de dAdos

b) Exclusivo: se uma transao obtiver um bloqueio do tipo exclusivo (indicado por X, do ingls exclusive) sobre um dado, ento ela poder ler e escrever sobre o item de dados bloqueado. Cada transao deve, no momento de execuo, solicitar o bloqueio observando o modo mais apropriado sobre os dados a serem utilizados. O que ocorre que a transao lana uma solicitao ao gerenciador de controle de concorrncia, que s autoriza o seu prosseguimento, aps conceder (grants) o bloqueio sobre os dados a serem manipulados. Entender a compatibilidade de bloqueios de extrema importncia, pois, por meio dela so baseadas as atividades permitidas ou no em um controle de concorrncia. Observe a Tabela 5, na qual apresentada a matriz de compatibilidade. Tabela 5 Matriz de compatibilidade de bloqueio. Lock SVerdadeiro Falso

TRANSAES Lock S Lock X

Lock XFalso Falso

Vamos entender melhor a matriz de compatibilidade apresentada. Nos eixos dos comandos de bloqueio lock, esto dispostos valores que determinam se duas transaes ocorrem no modo compartilhado ou exclusivo. Note que apenas no caso em que duas ou mais transaes estiverem bloqueando um mesmo item de dados Q no modo compartilhado (lock S), elas podero ser executadas ao mesmo tempo. O modo compartilhado permite apenas ler dados, logo a leitura de ambas as transaes ao mesmo tempo no afetar em momento algum nos dados que ambas esto acessando. Nas demais situaes expostas pela matriz de compatibilidade, sempre que uma transao solicitar o bloqueio, uma deve aguardar a outra ser concluda para ter acesso aos dados. A liberao de recursos ocorre com a utilizao do comando unlock. Vamos a um exemplo para entender a tcnica de bloqueio em transaes. Relembrando o exemplo apresentado anteriormente sobre contas correntes, duas transaes fazem acesso s contas, consultam e alteram valores, bloqueiam os dados quando necessrio. Essas transaes so apresentadas na Tabela 6. Tabela 6 Controle de concorrncia com bloqueios. TEMPO| T1 T2 T3

TRANSAO A

TRANSAO B

GERENCIAMENTO DE CONTROLE DE CONCORRNCIA grant X(conta1,Transao A)

lock X (conta1)

lock X (conta2)

158

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 4 bAnco de dAdos

TRANSAO A altera conta1 40 30 altera conta2 50 60 commit aux1 = ler(conta1) unlock(conta1) unlock(conta2)

TEMPOT4

TRANSAO B

GERENCIAMENTO DE CONTROLE DE CONCORRNCIAgrant X(conta2,Transao A)

T5

T6 T7 T8 T9

lock S (conta2) aux3 = ler(conta2) unlock(conta2)

grant S(conta2,Transao B) grant S(conta2,Transao A)

lock S (conta2)

aux2 = ler(conta2) unlock(conta2) mostrar(aux1 + aux2)

T10

Ok, pessoal, vamos explicao. Nesse exemplo, realizada a apresentao da soma dos valores da conta1 e conta2, alm de realizar a transferncia da conta1 para a conta2. Do tempo T1 ao T4, a transao A solicita o bloqueio exclusivo da conta1 e conta2 que aguarda a liberao do gerenciador do controle de concorrncia que acontece nos tempos T2 e T4, uma permisso com exclusividade. No tempo T5, a transao A efetua uma alterao no valor da conta1 e na conta2, realiza a persistncia dos valores por meio da instruo commit e emite um aviso ao gerenciador de concorrncia que libera a conta1 e conta2 para outras transaes, por meio da instruo unlock. Note que, do tempo T6 a T10, as duas transaes, A e B, realizam acesso compartilhado aos dados autorizados pelo gerenciador de controle de concorrncia por meio dos grants, imprimindo a soma dos valores das contas. importante lembrar que so realizadas apenas atividades de leitura aos valores nas contas no referido intervalo de tempo (T6 a T 10). Com isso, podem ser controlados os acessos e, assim, garantir o isolamento das transaes. Porm, com o bloqueio, surge um novo problema, denominado impasse ou deadlock. Na Tabela 7, a transao A solicita o bloqueio da conta2,

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

159

AulA 4 bAnco de dAdos

realiza a leitura e a atualizao dos valores no tempo T1, porm no realiza a liberao do recurso conta2. No tempo T2, a transao B solicita o bloqueio compartilhado da conta1, l os valores e, ento, solicita o bloqueio da conta2, criando, assim, um impasse com a transao A, j que est no liberou os dados da conta2. Para tornar o processo mais problemtico, a transao A ainda solicita o bloqueio da conta1 de maneira exclusiva e, como pode ser observado, ainda est bloqueada para a transao B. Tabela 7 Impasse ou deadlock entre transaes. TEMPO| T1

TRANSAO A lock X(conta2) ler conta2 (50) altera conta2 60 -> 50 commit

TRANSAO B lock S(conta1)

lock X(conta1)

T2 T3

ler conta1 lock S(conta2)

Quando o banco se depara com uma situao de deadlock, o sistema deve se encarregar de reverter uma das transaes para que a outra prossiga. Logo, quando uma transao revertida, os itens de dados bloqueados para essa transao so desbloqueados. Silberschatz, Korth e Sudarshan (2006) mencionam que o deadlock um mal necessrio, evitando estados inconsistentes.

Saiba mais

4.3.2 Timestamp Timestamp um mtodo que determina a ordem de serializao das transaes ordenando-as antes de sua execuo. O mtodo mais comum para isso consiste na ordenao por timestamp (marcas de tempo) representado como TS. Nesse modelo de ordenao, atribudo um valor de timestamp pelo banco de dados antes que a transao se inicie. Uma transao posterior sempre ter um timestamp maior que o da transao anterior. Segundo Silberschatz, Korth e Sudarshan (2006), dois modos so utilizados para implementar esse esquema. Vejamos. Utilizao do valor do clock (hora do sistema) como timestamp de uma transao.

160

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 4 bAnco de dAdos

Utilizao de um contador lgico para definir o timestamp de uma transao. por meio desses timestamp definidos para as transaes que assegurada a ordem de serializao das transaes. Logo, se TS(A) < TS(B), o sistema deve garantir que o esquema de execuo montado privilegie a transao A em detrimento de B. Conforme Elmasri e Navathe (2005), para garantir essa ordem, so associados a cada item de dados dois valores de timestamp: Write_TS(Q): que indica o maior timestamp de qualquer transao que executou uma escrita com sucesso; Read_TS(Q): que indica o maior timestamp de qualquer transao que executou uma leitura com sucesso. Esses valores so atualizados a cada execuo de instrues de leitura ou escrita em uma transao. Assim o protocolo de ordenao de timestamp deve garantir que operaes conflitantes sejam executadas segundo a ordem de cada valor de timestamp definido para cada operao sobre o item de dados Q de uma transao. Esse protocolo, conforme Elmasri e Navathe (2005), trabalha da seguinte forma: a) suponha que a transao A realize uma leitura(Q): Se TS(A) < Read_TS(Q), ento existe outra operao sobre Q com timestamp maior e a transao A revertida. Seno a operao de leitura executada e Read_TS(Q) definido como o novo maior timestamp de leitura. b) suponha que a transao A realize uma escrita(Q): Se TS(A) < Read_TS(Q) ou TS(A) < Write_TS(Q) ento, existe outra operao de leitura ou escrita com timestamp maior e a transao revertida Seno o sistema executa a operao de escrita e define Write_TS(Q) como o novo maior timestamp para escrita. Quando uma transao revertida pelo controle de concorrncia, um novo valor de timestamp definido. Um importante detalhe a ser considerado sobre a tcnica de timestamp que por no utiliza bloqueio, no ocorrem deadlocks. Porm esse protocolo abre espao para o problema de estagnao de transaes longas, se uma seqncia de outras transaes curtas em conflito causarem o reincio da transao longa.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

161

AulA 4 bAnco de dAdos

4.3.3 ValidaoA validao consiste no ltimo protocolo de controle de concorrncia a ser analisado nesta aula. Essa tcnica consiste em um esquema de monitoramento, ou seja, uma viso otimista, pois nenhuma verificao realizada durante a execuo das transaes. Com isso, tem-se um ganho considervel sobre o overhead criado por um controle de concorrncia pessimista. Nessa tcnica, as operaes de uma transao so realizadas por cpias locais dos itens de dados. Para tanto, uma transao tem duas ou trs fases dependendo se elas realizam a leitura ou escrita respectivamente. Silberschatz, Korth e Sudarshan (2006) apresentam essas fases. Vejamos. Fase de leitura: a transao A l os dados e os atualiza em cpias locais. Fase de validao: nessa fase, ocorre a anlise da serializao dos conflitos caso as alteraes nas cpias sejam efetivadas. Fase de escrita: se a fase de validao ocorrer sem problemas, aplicam-se as atualizaes no banco, caso contrrio a transao revertida. Para a realizao dos testes de validao, devem ser definidos trs timestamps diferentes para cada operao de uma transao. Conforme Silberschatz, Korth e Sudarshan (2006), so eles: start (transao): momento em que a transao foi iniciada; validation (transao): momento em que a transao terminou a fase de leitura e iniciou a fase de validao; finish (transao): momento em que se termina a fase de escrita. O teste de validao para uma transao A e B exige que TS(A) seja menor que TS(B). Segundo Elmasri e Navathe (2005), uma das condies a seguir necessita ser mantida. Finish(A) < Start(B): a transao A termina a execuo de suas operaes antes da transao B; O conjunto de dados escritos por A no tem interseo com os dados lidos por B, e A completa sua fase de escrita antes que B inicie sua fase de validao. O esquema de validao protege contra rollbacks em cascata, pois o processo de escrita real somente ocorre depois que a transao tenha sido validada (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). A partir do que vimos nesta aula, podemos concluir que a aplicao de mecanismos de controle de concorrncia muito importante quando existe a possibilidade de acessos simultneos a um banco de dados. Essa situao muito comum nas organizaes de maneira geral, e a tendncia que os bancos de dados com

162

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 4 bAnco de dAdos

acessos concorrentes sejam cada vez mais presentes, sobretudo pelo crescimento dos sistemas de informao cuja plataforma o ambiente da Internet.

Nesta aula, apresentamos os conceitos bsicos relacionados ao controle de concorrncia, que um mecanismo utilizado para garantir as propriedades das transaes e a consistncia do banco de dados. Vimos os trs tipos de problemas que podem ocorrer em um SGBD devido falta do controle de concorrncia. Consideramos as principais tcnicas, ou como tambm so conhecidas, protocolos para o controle de concorrncia: bloqueio, timestamp e validao. Bloqueios podem ser compartilhados, quando o item de dados utilizado por outras transaes (normalmente em operaes somente de leitura), ou exclusivos (geralmente usados em operaes de escrita). A tcnica de timestamp define a serializao das transaes em intervalos de tempo. Enquanto a validao define fases para as transaes de maneira que as fases de escrita no se sobreponham, mantendo a consistncia.

1. Trs problemas que podem ocorrer devido falta de controle de concorrncia entre transaes so: a) isolamento, durabilidade e integridade; b) fantasmas, isolamento e atualizao perdida; c) atualizao perdida, dependncia sem commit e anlise inconsistente; d) deadlock, integridade e anlise inconsistente. 2. As principais tcnicas ou protocolos utilizados para o controle de concorrncia entre transaes so: a) bloqueio em duas fases, gerenciamento de concorrncia e transao; b) bloqueio, timestamp e validao; c) start, validao e finish; d) read_TS(), Write_TS e timestamp. 3. O bloqueio consiste na tcnica mais utilizada pelos SGBDs para o controle de concorrncia. Uma das suas desvantagens consiste no deadlock ou tambm conhecido como impasse. Descreva o que consiste o deadlock e como o banco deve proceder caso uma situao de impasse seja encontrada. 4. Explique o funcionamento do protocolo de timestamp, considerando duas operaes concorrentes A e B sobre um mesmo item de dados Q.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

163

AulA 4 bAnco de dAdos

Na atividade um, a alternativa correta a letra (c), visto que conforme apresentado em aula, os principais problemas de concorrncia consistem na atualizao perdida, dependncia sem commit e anlise inconsistente. J na atividade dois, a opo correta a alternativa (b), j que as principais tcnicas ou protocolos utilizados para a gerncia do controle de concorrncia consistem no bloqueio, timestamp e validao conforme foi considerado nesta aula. Na atividade trs, voc exps que o deadlock um problema gerado pelo controle de concorrncia que utilize o bloqueio, visto que duas ou mais transaes podem tentar fazer uso de um mesmo item de dados, criando, assim, um impasse. Quando um SGBD se depara com tal situao, deve reverter uma das transaes, dando liberdade para que a outra prossiga. Na atividade quatro, voc colocou que o timestamp um valor que atribudo a uma transao com o intuito de organizar a ordem de execuo das transaes. Existem duas formas para se atribuir um timestamp a uma transao: por meio do clock do computador ou de contadores lgicos. Aps definido o timestamp de uma transao, so seguidas regras que definem o acesso aos dados. Isso depende se o timestamp de uma transao tem prioridade maior que os das demais transaes concorrentes em suas operaes sobre um item de dados. Se voc acertou as atividades, atingiu os objetivos propostos para a aula: compreender o porqu da utilizao da concorrncia nas transaes e identificar os principais problemas e tcnicas para o controle de concorrncia.

DATE, C. J. Introduo a sistemas de banco de dados. Rio de Janeiro: Elsevier, 2003. ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. So Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. So Paulo: Campus, 2006.

Estudaremos os sistemas de recuperao de bancos de dados. Ao contrrio de outras situaes, o termo recuperao, na prxima aula, no significa acesso s informaes armazenadas, mas recuperao da consistncia do banco de dados em caso de falhas.

164

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 5 bAnco de dAdos

Aula 5Sistema de recuperaoEsperamos que, ao final desta aula, voc seja capaz de: compreender os tipos de falhas que podem ocorrer em um banco de dados; entender os mecanismos de recuperao de falhas.

Para que os objetivos desta aula sejam atingidos, importante que voc compreenda o conceito de transao, a importncia das proriedades ACID de uma transao e a noo de consistncia de um banco de dados, consistncia esta que resultado da garantia das propriedades ACID, contedos estudados nas aulas trs e quatro. Esses contedos so importantes para esta aula justamente porque as tcnicas de recuperao so usadas para garantir que as propriedades ACID sejam mantidas.

Um sistema de computador, como qualquer outro dispositivo est sujeito a falhas por uma srie de causas: falha de disco, falta de energia, erro de software, um incndio, desabamento e at mesmo sabotagem (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Seja qual for o motivo de uma falha, em um sistema de banco de dados, necessrio que as propriedades de atomicidade e durabilidade sejam garantidas para que o banco de dados permanea em um estado consistente. Um dos componentes que integra um sistema de banco de dados um sistema de recuperao. Esse sistema tem a responsabilidade de fazer com que, aps a ocorrncia de alguma falha, o banco de dados volte a um estado de consistncia. Nesta aula, estudaremos justamente os sistemas de recuperao.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

165

AulA 5 bAnco de dAdos

5.1 Classificao de falhasExistem vrios tipos de falhas que podem ocorrer em um sistema, cada um deles precisa ser tratado de uma maneira diferente. O tipo mais simples de falha o que no resulta na perda de informaes no sistema. Falhas que causam perda de informaes so mais difceis de tratar (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Elmasri e Navathe (2005) descrevem alguns tipos principais de falhas, subdividindo-os em categorias: falha de transaes, falha de sistema e falha de discos (ou mdia). Vejamos em que consiste cada uma dessas falhas. Falha do computador: um erro de hardware, software ou rede ocorre e em um sistema de computador durante a execuo de uma transao, por exemplo, uma falha na memria principal. Um erro de transao ou sistema: alguma operao da transao pode ocasionar uma falha, como um estouro de inteiro, ou uma diviso por zero. Falhas de transao tambm podem ocorrer por conta de valores errados de um parmetro ou por erros na lgica de programao. Alm disso, o prprio usurio pode interromper a operao antes do trmino da transao. Erros locais ou condies de exceo detectadas para a transao: durante a execuo de uma transao, podem ocorrer determinadas condies que necessitem o cancelamento da transao, por exemplo, os dados para a transao no estarem disponveis. Imposio do controle de concorrncia: o mtodo de controle de concorrncia pode optar por abortar uma transao para ser reiniciada posteriormente caso ela viole a ordem de serializao ou porque diversas transaes esto em estado de deadlock. Falha de disco: alguns blocos de disco podem perder seus dados por causa de mau funcionamento de uma leitura ou gravao. Problemas fsicos ou catstrofes: referem-se a uma lista sem fim de problemas que incluem falha de energia, furto, sabotagem, sobre gravao de dados, etc.

Saiba mais

166

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 5 bAnco de dAdos

5.2 RecuperaoPara determinar como um sistema deve se recuperar de falhas, precisamos identificar os modos de falha dos dispositivos usados para armazenamento de dados. Em seguida, temos de considerar como esses modos de falhas afetam o contedo do banco de dados. Podemos, ento, propor algoritmos para garantir a coerncia do banco de dados e a atomicidade das transaes efetuadas apesar das falhas (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Essas aes podem ser tomadas durante a execuo das transaes para garantir que haja informaes suficientes para recuperar falhar (caso elas ocorram) ou podem ser tomadas aps a ocorrncia de falhas, para recuperar os dados e retornar o banco de dados a um estado consistente. Segundo Elmasri e Navathe (2005), a recuperao de transaes que falharam significa, em geral, que o banco de dados ser restaurado para o estado de consistncia mais recente, exatamente antes do momento da falha. Para isso, o sistema dever manter informaes sobre as alteraes que foram aplicadas no banco de dados pelas vrias transaes executadas. Geralmente, essas informaes so armazenadas em arquivos chamados de log (histrico) do sistema. Uma estratgia genrica para recuperao de falhas pode ser baseada em dois pontos principais, que so mencionados a seguir. a) Se houver um dano extenso em uma grande poro do banco de dados, por conta de uma falha catastrfica, tal com uma falha de disco, o mtodo de recuperao restaura uma cpia anterior do banco de dados que estava guardada em um arquivo de armazenamento (o que chamamos de backup) e o reconstri em um estado mais atual, reaplicando ou refazendo as operaes das transaes armazenadas no log at o instante da falha. b) Quando o banco de dados no for danificado fisicamente, mas se tornar inconsistente por causa de uma falha no catastrfica, a estratgia reverter quaisquer mudanas que causaram a inconsistncia, desfazendo algumas operaes. Alm disso, ser necessrio refazer algumas operaes para restaurar o estado consistente do banco de dados. 5.2.1 Recuperao baseada em log A estrutura mais utilizada para registrar as modificaes do banco de dados o log. O log uma seqncia de registros de atividades de atualizao no banco de dados. Um registro de log de atualizao descreve uma escrita no banco de dados, ou seja, armazena dados suficientes para que a transao seja refeita, caso necessrio. Em geral, uma entrada de log, conforme Silberschatz, Korth e Sudarshan (2006) contm os seguintes campos: identificador de transao: o identificador exclusivo da transao que realizou a operao de escrita;

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

167

AulA 5 bAnco de dAdos

identificador do item de dados: identificador nico do item de dados que foi escrito, normalmente, o local no disco em que o item foi armazenado; valor antigo: valor do item de dados antes da escrita; novo valor: valor que o item de dados passa a ter aps a escrita. Observe que a capacidade de desfazer uma alterao no banco de dados se apia no armazenamento do valor antigo dos dados envolvidos em uma escrita. Assim, em caso de falhas, eles podem ser restaurados. Sempre que uma transao realiza uma escrita, essencial que o registro de log seja feito antes que o banco de dados seja modificado. Aps o registro em log da transao, a modificao do banco de dados pode ser liberada. Um ponto importante para que a tcnica de recuperao baseada em log seja realmente til que os registros de log devem estar armazenados em local estvel. Imagine uma situao em que os arquivos de log esto armazenados no mesmo disco que o sistema de banco de dados e que ocorra uma falha no disco. Existe a possibilidade de que o arquivo de log seja danificado em conjunto do banco de dados. Dessa maneira, sugere-se que o log seja armazenado em um local externo ao sistema de banco de dados. Outro aspecto a ser observado que cada transao efetuada em um banco de dados resulta em uma entrada no registro de log. Dessa forma, esse arquivo pode se tornar muito grande em um pequeno intervalo de tempo. Portanto devemos pensar, tambm, em como manipular esses arquivos com eficincia. 5.2.2 Recuperao baseada na atualizao adiada A idia contida nas tcnicas de atualizao adiada postergar quaisquer atualizaes no banco de dados real at que a transao co