Você está na página 1de 84

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

EMENTA
Projeto 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 BSICA
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.

BIBLIOGRAFIA COMPLEMENTAR
HEUSER, 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 1
Dependncia funcional e normalizao
Esperamos 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 funcional


A 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 Normalizao
Segundo 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 2
Armazenamento, indexao e hashing
Esperamos 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 registros


Um 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 hashing


Existe 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 Indexao
Um 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 primrio


Segundo 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 RAID


Um 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 3
Transaes
Esperamos 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 transaes


Date (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 transaes


Segundo 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 ACID


Voc 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 transao


Segundo 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 4
Controle de concorrncia
Esperamos 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 Concorrncia
O 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 concorrncia


Existem 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 concorrncia


Para 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 S
Verdadeiro Falso

TRANSAES Lock S Lock X

Lock X
Falso 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)

TEMPO
T4

TRANSAO B

GERENCIAMENTO DE CONTROLE DE CONCORRNCIA


grant 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 Validao
A 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 5
Sistema de recuperao
Esperamos 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 falhas


Existem 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 Recuperao
Para 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 complete sua execuo com sucesso e alcance o seu ponto de efetivao. Durante a execuo de uma transao, as atualizaes so gravadas em log. Quando a transao alcanar o seu ponto de efetivao, h a gravao do log em um meio estvel de armazenamento, ento as atualizaes podem ser efetuadas sobre o banco de dados. Se uma transao falhar antes de alcanar o seu ponto de efetivao, no ser necessrio desfazer nenhuma alterao, pois a transao no afetou o banco de dados no disco. Assim, segundo Elmasri e Navathe (2005), podemos definir um protocolo de atualizao adiada em: a) uma transao que no pode mudar o banco de dados em disco at que atinja o seu ponto de efetivao; b) uma transao que no alcana o seu ponto de efetivao at que todas as suas operaes de atualizao sejam registradas no log, e at que o log seja gravado em disco.

168

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 5 bAnco de dAdos

Outra observao interessante que alguns tipos de transaes no afetam o banco de dados. Operaes como gerao e impresso de relatrios so caracterizadas por aes de leitura apenas. Mesmo assim pode ser invivel que elas sejam retornadas ao usurio meio completas, pois um relatrio baseado em dados incorretos pode ser usado como instrumento para tomada de deciso, o que acarretaria um problema no para o sistema em si, mas para o negcio (o que pode ser ainda pior!). Um sistema de recuperao pode atuar nesse contexto informando ao usurio que um determinado relatrio foi gerado com erro. Outra ao seria garantir que esse relatrio somente seja gerado depois que a transao alcance o seu ponto de efetivao. Outra opo compor comandos que gerem relatrios e os mantenham como tarefas em lote, sendo executadas apenas depois que a transao alcanar seu ponto de efetivao. Caso a transao falhe, as tarefas em lote so canceladas. 5.2.3 Recuperao baseada na atualizao imediata As tcnicas de modificao imediata permitem que as modificaes no banco de dados sejam enviadas ao sistema quando a transao ainda est em estado ativo. As modificaes de dados escritas pelas transaes ativas so chamadas de modificaes no confirmadas (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Caso ocorra alguma falha durante uma transao, o sistema precisar utilizar o campo valor antigo do registro de log para restaurar os itens de dados modificados para que retornem aos valores que tinham antes da transao ser iniciada. Para que esse mtodo funcione corretamente, necessrio que cada operao de atualizao (mesmo antes da efetivao da transao) seja executada somente depois que um registro de log dessa operao seja gravado em meio de armazenamento estvel. Dessa maneira, as atualizaes no banco de dados podem ser feitas imediatamente, mas com a possibilidade de recuperao das alteraes feitas. Segundo Elmasri e Navathe (2005), teoricamente, podemos identificar dois tipos principais de algoritmos de atualizao imediata, que citamos a seguir. Algoritmo de recuperao UNDO/NO-REDO (desfaz e no refaz): caracterizado pelo fato de que garantido que todas as atualizaes (escritas) de uma transao sejam registradas no banco de dados em disco antes da transao se efetivar. Dessa forma, em caso de falha na transao, no ser necessrio refazer as atualizaes, apenas desfazer as que j executaram. Algoritmo UNDO/REDO (desfaz-refaz): se permitido que a transao seja efetivada antes que todas as mudanas sejam escritas no banco de dados, temos uma tcnica do tipo UNDO/REDO.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

169

AulA 5 bAnco de dAdos

5.2.4 Pontos de verificao (checkponts) Quando ocorre uma falha do sistema, preciso consultar o arquivo de log para determinar quais transaes precisam ser refeitas e quais transaes precisam ser desfeitas. Em muitos casos, preciso percorrer todo o arquivo de log para obter essa informao. Conforme Silberschatz, Korth e Sudarshan (2006), essa tcnica apresenta duas dificuldades: o processo de busca demorado; a maioria das transaes que precisam ser refeitas j enviaram suas atualizaes para o banco de dados. Embora refaz-las no cause dano algum, a recuperao leva mais tempo. Para reduzir esse tipo de sobrecarga, so utilizados os pontos de verificao. Durante a execuo, o sistema mantm o log, usando uma das duas tcnicas apresentadas (atualizaes adiadas ou imediatas). Alm da utilizao de logs, o sistema implementa pontos de verificao, por meio das seguintes aes: a) enviar para armazenamento estvel todos os registros atualmente residentes na memria principal; b) enviar para o disco todos os blocos modificados; c) enviar para o armazenamento estvel um registro de log <checkpoint>. Essa tcnica permite melhorar o esquema de recuperao das outras j citadas e funciona da seguinte maneira: quando houver uma falha, o esquema de recuperao examina o log no sentido do ltimo registro para o primeiro, para identificar a transao T que foi iniciada aps o ltimo ponto de verificao. Dessa maneira, apenas precisaro ser desfeitas, ou refeitas as transaes que iniciaram aps o comeo da transao T, alm de T, claro. Assim diminui o custo da recuperao do banco de dados.

Pensando sobre o assunto

5.2.5 Recuperao com transaes concorrentes Segundo Elmasri e Navathe (2005), independente do nmero de transaes simultneas, um sistema de banco de dados tem um nico buffer de disco e um nico arquivo de log.

170

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 5 bAnco de dAdos

O esquema de recuperao depende muito do mecanismo de controle de concorrncia. Para reverter uma transao que falhou, temos de desfazer as atualizaes realizadas pela transao. Supondo que uma transao T deve ser revertida e que atualizou um item de dados X, ela deve ser revertida e o valor do item de dados modificado deve ser restaurado de acordo com o seu valor antigo registrada em log. Vamos supor, ainda, que outra transao S atualizou o valor do item de dados X antes de T ser refeita. Nesse caso, a atualizao feita pela transao S ser perdida. Para resolver essa situao, podemos perceber que, enquanto a transao T revertida, atualizando um item de dados X, nenhuma outra transao poder atualizar o mesmo item de dados at que T seja revertida ou efetivada. Esse requisito pode ser garantido utilizando uma tcnica de bloqueio em duas fases com bloqueios exclusivos enquanto a transao completada. 5.2.6 Recuperao em sistemas de bancos de dados mltiplos At o momento consideramos apenas a recuperao de falhas em um nico sistema de banco de dados. Porm no rara a execuo de transaes em bancos de dados distribudos (conceitos que veremos com mais detalhes na prxima aula). Nesse cenrio, uma nica transao, chamada de transao multibanco de dados, pode acessar diversos bancos de dados, que podem estar armazenados em diferentes stios e ainda sob a gerncia de diferentes SGBDs (ELMASRI; NAVATHE, 2005). Para manter a atomicidade de uma transao em um multibanco de dados necessrio ter um mecanismo de recuperao em dois nveis: um gerenciador de recuperao global, ou coordenador, responsvel por manter as informaes exigidas para recuperao; e os gerenciadores de recuperao locais, responsveis pelos registros de log. A recuperao em mltiplos bancos de dados baseada em duas fases. a) Fase 1: quando todos os bancos de dados participantes sinalizarem ao coordenador que a sua parte na transao multibanco de dados foi concluda, ele envia uma mensagem de preparao para efetivao a fim de informar cada participante, que dever registrar as alteraes em log e enviar ao coordenador uma resposta de OK ou no-OK (no caso de ocorrer alguma falha). b) Fase 2: se todos os bancos de dados participantes responderem OK (inclusive o coordenador), o coordenador enviar um sinal de efetivar para cada participante, que gravar as alteraes em log. A idia que todos os bancos de dados efetivem a transao, ou nenhum deles o faa. No caso de haver alguma falha, ser possvel recuperar a consistncia a partir de um estado no qual a transao possa ser efetivada ou revertida.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

171

AulA 5 bAnco de dAdos

Uma falha ocorrida durante a fase 1 requer que a transao seja revertida (desfeita), enquanto que uma falha durante a fase 2 requer que a transao seja revertida e, em seguida, efetivada (desfeita e refeita novamente). 5.2.7 Sistema de backup Certamente voc j ouviu falar em backup e, provavelmente, a definio mais encontrada para esse termo cpia de segurana. Muitos administradores de bancos de dados efetuam essa tarefa no dia-a-dia, sempre fazendo uma cpia do banco de dados para que, em caso de alguma falha (sobretudo as catastrficas). Silberschatz, Korth e Sudarshan (2006) sugerem que, para obtermos alta disponibilidade, podemos realizar o processamento das transaes em um local chamado de stio primrio e manter um stio secundrio, no qual todos os dados do stio primrio so replicados. O stio secundrio tambm chamado de backup remoto. O backup precisa ser sincronizado com o stio primrio enquanto as transaes so processadas nele. Essa sincronizao pode ser obtida enviando todos os registros de log para o backup. Esse stio de backup deve estar fisicamente distante do stio primrio para evitar que, caso ocorra algum desastre, o backup no seja danificado junto com o primrio. Quando o stio primrio falhar, o sistema de backup remoto ir utilizar a ltima cpia de segurana efetuada e aplicar sobre essa cpia todos os registros de log das transaes efetuadas desde ento. Assim teremos, ao final desse processamento o banco de dados no seu estado atualizado e consistente. Trs desafios so fundamentais para o bom funcionamento de um sistema de backup. Deteco de falha: o sistema de backup deve ter um mecanismo para detectar uma falha no sistema primrio. Um caso clssico uma falha na comunicao que pode fazer com que o sistema de backup ache que o sistema primrio falhou e inicie as rotinas de recuperao. Uma soluo para esse caso manter duas conexes distintas utilizando tecnologias diferentes para aumentar a confiabilidade do sistema de deteco de falhas. Transferncia de controle: quando o sistema primrio falha, o sistema de backup assume o papel e passa a processar as transaes. Ao retornar operao, o antigo sistema primrio pode tanto permanecer como backup, quanto voltar a ser o primrio. Essa deciso pode depender, por exemplo, da tecnologia de comunicao que d acesso ao sistema primrio original e ao sistema de backup; Tempo de recuperao: quando os arquivos de log se tornam muito grandes pode ser necessrio um longo tempo para process-los e deixar o banco de dados em um estado consistente e atual. Um sistema de backup que leva muito tempo para estar disponvel pode no atender as necessidades da

172

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 5 bAnco de dAdos

aplicao. Uma soluo para esse problema o processamento peridico do arquivo de log, para que, quando houver a necessidade, seja gasto menos tempo para iniciar a operao do sistema de backup. A utilizao de sistemas de recuperao muito importante, j que as informaes correspondem a um dos bens mais preciosos das instituies. A perda dessa informao pode trazer um prejuzo muito grande em termos de tempo, de refazer o trabalho anterior e tambm financeiro.

Nesta aula, estudamos algumas metodologias para recuperao de falhas em sistemas de bancos de dados, como a utilizao de logs, que armazenam registros que contm informaes suficientes para que transaes sejam refeitas quando necessrio. Vimos tambm os mtodos baseados em atualizao adiada e imediata. O primeiro sugere que os dados sejam efetivados no banco de dados definitivo em um momento de poucos acessos. O segundo sugere que as atualizaes sejam gravadas no momento do processamento das transaes. Os pontos de verificao definem pontos de checagem a partir dos quais as transaes podem ser recuperadas. J os sistemas de recuperao em ambientes concorrentes utilizam tcnicas baseadas nos mecanismos de controle de concorrncia. Os mtodos apresentados so baseados na utilizao de arquivos de log, que no armazenam o banco de dados, mas registros que permitem identificar as transaes efetuadas de maneira que possamos reconstruir as alteraes at retornar o banco de dados a um estado atualizado e consistente.

1. Entre os tipos de falhas citados, encontramos falhas de equipamento, de sistema, etc. Mas nenhuma delas inclui o usurio ou as aplicaes. Em relao ao sistema de banco de dados, uma ao do usurio pode ser responsvel por alguma falha? E em relao s aplicaes que acessam o banco de dados? O que pode ser feito em relao preveno de falhas provocadas pelo usurio? 2. Em relao utilizao de arquivos de log, devemos considerar que existe um custo para implementao dessa tcnica, por exemplo, espao para armazenamento. A utilizao de um backup completo do banco de dados no seria mais simples do que armazenar registros de log que ainda precisaro ser processados para entrarem em operao?

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

173

AulA 5 bAnco de dAdos

3. Sobre as tcnicas de recuperao apresentadas nesta aula, incorreto afirmar que: a) As tcnicas de recuperao baseadas em atualizao imediata e recuperao baseada em atualizao adiada utilizam arquivos de log para funcionarem; b) Quando um backup entra em operao, as atualizaes em arquivos de log que ainda no foram processados somente sero processadas depois que o sistema primrio voltar a operar. Enquanto isso, o backup trabalha com dados desatualizados sem prejuzo, pois eles sero atualizados posteriormente; c) possvel implementar a tcnica de backup em sistemas multibanco de dados, da mesma forma que os gerenciadores locais de recuperao mantm arquivos de log para as transaes executadas em cada banco de dados local;

d) A tcnica de backup pode, tambm, utilizar arquivos de log para processar as ltimas atualizaes em um banco de dados antes do sistema de backup entrar em operao. 4. Assinale a alternativa que no apresenta uma vantagem da utilizao de tcnicas de recuperao. a) Facilidade de refazer as transaes para manter o banco de dados consistente. b) Maior necessidade de capacidade de armazenamento e processamento para gerenciar os arquivos de log. c) Menor prejuzo quando ocorrem falhas.

d) No h vantagens reais na utilizao de tcnicas de recuperao.

As atividades desta aula nos levam a refletir sobre o tema sistemas de recuperao. Ao responder corretamente as atividades voc ter atingido os objetivos da aula, que so: compreender os tipos de falhas que podem ocorrer em um banco de dados e entender os mecanismos de recuperao de falhas. Vamos verificar se voc os atingiu? Na atividade um, voc disse que erros do usurio podem, indiretamente, resultar em falhas do sistema, e essas falhas j esto previstas nas tcnicas apresentadas (rever tipos de falhas). Erros de rede ou desastres tambm podem ser causados pelo usurio, tendo um impacto direto nos sistemas de bancos de dados. Embora nenhuma das falhas citadas no incio desta aula referencie

174

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 5 bAnco de dAdos

diretamente o usurio, todas refletem a ao dele (exceto as causas naturais). Em relao a como se prevenir contra erros causados pelo usurio, as tcnicas de recuperao apresentadas esto suficientemente instrumentadas para lidar com falhas causadas pelos usurios, pois permitem desfazer e refazer alteraes corretamente. Na atividade dois, voc mencionou que a utilizao de sistemas de backup muito til, porm, caso no haja um log de transaes e alguma falha de transao ocorra, teremos duas cpias inconsistentes de um mesmo banco de dados. A cpia de segurana apenas garante que os dados no sero perdidos, porm no podem garantir que os dados armazenados estejam consistentes. Por isso os logs so to importantes. Na atividade trs, a afirmao incorreta a da letra (b), pois um sistema de backup somente deve entrar em operao quando as atualizaes previstas no arquivo de log forem executadas. Caso contrrio, o sistema pode operar certo tempo com um banco de dados inconsistente e, quando o sistema primrio voltar a operar, a aplicao das atualizaes pode no ser suficiente para recuperar a consistncia do banco de dados. Na atividade quatro, a nica alternativa que no apresenta uma vantagem da utilizao de tcnicas de recuperao a (b), que comenta a maior necessidade de armazenamento e processamento para gerenciar os arquivos de log. Obviamente previsto um custo computacional para que as tcnicas de recuperao sejam implementadas, porm preciso pensar a sua viabilidade observando a relao custo/benefcio, pois certamente o prejuzo causado pela perda dos dados maior do que o investimento em recuperao de falhas.

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 um modelo de banco de dados que vem cada vez mais ganhando espao no mercado, os bancos de dados distribudos. Esse tipo de banco de dados tem caractersticas marcantes, tais como a forma de armazenamento para se obter vantagens em relao aos bancos de dados isolados. Estudaremos ainda sobre o controle de concorrncia nesse tipo de banco de dados.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

175

AulA 5 bAnco de dAdos

Anotaes

176

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 6 bAnco de dAdos

Aula 6
Bancos de dados distribudos
Esperamos que, ao final desta aula, voc seja capaz de: compreender os conceitos de bancos de dados distribudos; entender as diferenas em relao aos sistemas centralizados e as implicaes de sua utilizao.

Para que os objetivos desta aula sejam atingidos, importante que voc compreenda a viso geral do processo de projeto de bancos de dados, que conhea as tecnologias de bancos de dados e outras tecnologias que apiam a sua utilizao, como os conceitos bsicos da comunicao entre computadores. Esses conceitos foram vistos nas diciplinas de Banco de Dados, no segundo perodo, e Redes de Computadores, no terceiro perodo. Eles ajudaro compreender os conceitos de bancos de dados distribudos.

A arquitetura de um sistema de bancos de dados bastante influenciada pelo sistema de computador bsico em que ela trabalha, em particular, por aspectos da arquitetura de computador como redes, paralelismo e distribuio (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Nesse sentido, podemos citar algumas arquiteturas como a centralizada, na qual os sistemas de bancos de dados executam em um nico computador, no interagindo com outros (trabalhando de forma isolada). Uma aplicao comum para esse tipo de arquitetura so os sistemas de pequeno porte e monousurios. Tambm merece destaque a arquitetura cliente-servidor, na qual um servidor de banco de dados serve a vrios sistemas clientes. Essa arquitetura comumente encontrada em empresas, nas quais os softwares instalados nos diversos terminais interagem com o sistema de banco de dados por meio de uma rede local.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

177

AulA 6 bAnco de dAdos

Com a disseminao da tecnologia da informao e o crescimento do poder computacional dos sistemas, muitas instituies passaram a se utilizar dos sistemas de bancos de dados. Com o crescimento e a necessidade de integrao desses sistemas, novos desafios surgiram. Um desses desafios era fazer com que uma nica aplicao pudesse operar de modo transparente sobre dados dispersos, armazenados em bases de dados diferentes e gerenciados por diferentes SGBDs. justamente a noo de bancos de dados distribudos, tema desta aula.

6.1 Bancos de dados distribudos


Um sistema de banco de dados distribudos , na verdade, uma espcie de banco de dados virtual, cujas partes componentes esto fisicamente armazenadas em vrios bancos de dados reais distintos, em locais distintos, podendo ser descrito como a unio lgica desses bancos de dados (DATE, 2004). Os elementos que compem um sistema de banco de dados distribudos trabalham em conjunto com o objetivo principal de resolver, de uma maneira eficiente, um problema grande que fora repartido em partes menores e mais fceis de gerenciar. Entretanto, considerando que cada um dos elementos um sistema de banco de dados com usurios e demandas isoladas, esses elementos podem conter operaes independentes da interligao com outros sistemas de bancos de dados. Nesse contexto, surge a idia de um software responsvel pelo gerenciamento de todo o sistema de banco de dados distribudo, o SGBDD Sistema Gerenciador de Banco de Dados Distribudos. Uma das suas funes principais permitir que os diversos bancos distribudos pela rede sejam manipulados de forma transparente, ou seja, no cabe ao usurio conhecer detalhes da distribuio dos dados nem das suas localizaes (ALVES, 2004). Alis, esse pode ser considerado o princpio fundamental dos bancos de dados distribudos: para o usurio, um sistema distribudo deve parecer exatamente como um sistema no distribudo (DATE, 2004). Muitos sistemas de bancos de dados distribudos usam, atualmente, a Internet como meio de comunicao entre os usurios e o sistema. Considerando a grande diferena de velocidade de acesso aos dados dos sistemas isolados em relao aos sistemas distribudos, um dos objetivos essenciais no projeto de bancos de dados distribudos a minimizao do uso da rede, ou seja, diminuir ao mximo a troca de mensagens. Outro aspecto importante dos sistemas distribudos a forma como os dados so armazenados. Duas tcnicas de armazenamento merecem destaque: replicao e fragmentao, discutidas nos tpicos a seguir. 6.1.1 Replicao Quando utilizada a tcnica de replicao, o sistema mantm vrias rplicas (cpias) idnticas de uma mesma relao em diversos stios (cada um

178

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 6 bAnco de dAdos

dos bancos de dados reais que esto distribudos) diferentes (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Uma replicao dita completa aquela na qual existe uma cpia armazenada em cada stio que compe o sistema. O uso de replicao traz alguns benefcios, como a disponibilidade dos dados. J que podem estar em dois ou mais stios diferentes, se houver alguma falha em um deles, os usurios podem continuar trabalhando normalmente, pois outras cpias esto disponveis. Outra vantagem o aumento da possibilidade de paralelismo nas operaes, sobretudo nas operaes de leitura, de maneira que quanto mais rplicas houver, maior a chance de que os dados sejam encontrados no prprio stio no qual a transao est sendo processada, diminuindo a necessidade de requisies pela rede. Por outro lado, um nmero elevado de cpias de uma mesma relao em um sistema de banco de dados distribudo gera uma maior sobrecarga na atualizao dos dados, visto que, para manter a consistncia entre as rplicas, so necessrias diversas trocas de mensagens. Podemos perceber, ento, que a tcnica de replicao muito eficiente para melhorar o desempenho nas operaes de leitura e tambm para aumentar a disponibilidade, porm, em operaes de atualizao, podem sobrecarregar o sistema. 6.1.2 Fragmentao Quando utilizamos a tcnica de fragmentao, o sistema particiona uma mesma relao em vrios fragmentos e armazena cada fragmento em um stio diferente (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Existem dois tipos de fragmentao, a horizontal e a vertical. Na fragmentao horizontal, subconjuntos de uma relao so armazenados em stios diferentes. Usando analogia com tabelas, podemos dizer que a tabela dividida em vrios subconjuntos de linhas, e cada um desses subconjuntos armazenado em pelo menos um dos fragmentos (stios). Uma vantagem que se pode obter com essa tcnica a distribuio de linhas da tabela pelos stios que so mais acessados, fazendo um balanceamento de carga e diminuindo a necessidade de transferncia de dados. Um exemplo seria fragmentar horizontalmente a tabela cliente de uma concessionria de planos de sade, de maneira que as linhas contendo as informaes dos clientes de uma determinada cidade ficassem armazenadas localmente. Dessa forma, apenas seria necessrio transferir dados quando se desejasse acess-los a partir de outra localidade. Essa tcnica no prejudica a transparncia do sistema, j que podemos associar cada fragmento localidade na qual est armazenada e reconstruir a relao em sua totalidade (como se no fosse fragmentada) consultando cada uma dos stios que contm fragmentos desta tabela.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

179

AulA 6 bAnco de dAdos

A fragmentao vertical um pouco diferente. Nela no so as linhas de uma tabela que formaro os subconjuntos, mas as colunas. Dessa maneira, cada conjunto de atributos pode ficar em um stio diferente. necessrio, porm, associar cada uma das colunas fragmentadas relao original. Isso pode ser feito adicionando um campo que identifique a relao qual aquela coluna pertence. Uma das vantagens de se utilizar a fragmentao vertical est ligada segurana dos dados, j que dificulta acessos indevidos a uma linha completa de uma tabela. Assim os dados acessados indevidamente podem no ser completos ou significativos, no tendo muito valor quando separados. 6.1.3 Tipos de bancos de dados distribudos Existem diversos fatores que podem distinguir um sistema de banco de dados distribudos de outros. Um deles o grau de homogeneidade, que diz respeito ao tipo de software que utilizado em todo o sistema. Se os servidores e clientes utilizam software de um mesmo fabricante ou fornecedor (softwares idnticos) dizemos que um SGBDD homogneo, caso contrrio, considerado um SGBDD heterogneo (ALVES, 2004). No ambiente heterogneo, h a necessidade de se definir um padro de interoperabilidade. A interoperabilidade diz respeito capacidade de um sistema interagir com outros, de diferentes tecnologias e padres. Uma das maneiras de garantir a interoperabilidade em sistemas de bancos de dados distribudos a implementao de um midleware para converso das mensagens trocadas entre os stios. Outra forma definir um protocolo comum de comunicao. Dessa maneira, mesmo com tecnologias diferentes, pode-se utilizar uma linguagem comum. Outro aspecto que pode ser usado para classificao o grau de autonomia local. O grau de autonomia local a capacidade de um SGBD que faz parte de um sistema distribudo trabalhar isoladamente (atender as demandas de clientes locais). Se um SGBD tem essa capacidade, podemos dizer que ele tem autonomia local, caso contrrio, dizemos que ele no tem autonomia local. Segundo Alves (2004), destacam-se trs tipos principais de autonomia. Autonomia de comunicao: capacidade de decidir comunicar-se com outro SGBD. Autonomia de execuo: capacidade de executar operaes locais sem sofrer nenhuma interferncia de outras operaes externas e para decidir a ordem em que elas devem ser executadas. Autonomia de associao: capacidade de decidir se suas funcionalidades e recursos devem ser compartilhados e quando sero compartilhados.

180

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 6 bAnco de dAdos

6.2 Transaes distribudas


Considerando dados replicados e/ou fragmentados em um banco de dados distribudo e considerando, ainda, que algumas caractersticas dos bancos de dados isolados devem ser mantidas, algumas tarefas, como a utilizao de transaes para implementar as operaes que so feitas sobre o banco de dados, importante encontrar meios para que tais operaes sejam executadas corretamente no ambiente de um banco de dados distribudo. Assim como em bancos de dados isolados, o acesso a diversos itens de dados em um sistema distribudo tambm realizado por meio de transaes, que, assim como nos sistemas isolados, precisam manter as propriedades ACID. Para que essas propriedades sejam garantidas, so propostas dois tipos de transaes: locais e globais. 6.2.1 Transaes locais x transaes globais Segundo Silberchartz, Korth e Sudarshan (2006), transaes locais so aquelas que acessam e atualizam dados apenas em um banco de dados local, enquanto que as transaes globais so aquelas que acessam e atualizam dados em diversos bancos de dados locais. Garantir as propriedades ACID em transaes locais tarefa similar a de fazer o mesmo em bancos de dados isolados, mas, no caso das transaes globais, essa tarefa pode se tornar muito mais complexa, j que diversos stios podem estar envolvidos. Uma falha em um desses stios, ou a perda da capacidade de comunicao (por exemplo, uma falha na rede) podem ocasionar situaes nas quais os dados manipulados se tornem inconsistentes. Por essa razo se prope uma estrutura para suportar as transaes globais em sistemas de bancos de dados distribudos. Essa estrutura se apia em dois elementos principais: o gerenciador de transaes e o coordenador de transaes. O gerenciador de transaes controla a execuo das transaes que so executadas em bancos de dados locais. Vale ressaltar que uma transao local pode fazer parte de um conjunto de transaes locais que compem uma transao global. A atuao do gerenciador de transaes em ambiente distribudo muito parecida com a sua atuao em um sistema isolado. Suas principais tarefas so: manter um log para fins de recuperao e participar de um esquema de controle de concorrncia para as transaes que so executadas em um determinado stio. O coordenador de transaes de um stio coordena a execuo de diversas transaes, locais ou globais, iniciadas no stio. No sendo necessrio em ambiente isolado, suas principais responsabilidades so iniciar a execuo da transao, dividi-la em uma srie de subtransaes, distribu-la de maneira adequada pelos diversos stios e coordenar o trmino da transao.

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

181

AulA 6 bAnco de dAdos

6.3 Controle de concorrncia em bancos de dados distribudos


O controle de acesso concorrente a usurios e a recuperao de dados so fatores muito importantes em um SGBD distribudo. Usando esses mecanismos, podemos tratar de alguns problemas inerentes aos bancos de dados distribudos que no so comuns aos implementados em ambiente centralizado (ALVES, 2004). Elmasri e Navathe (2005) descrevem esses problemas da seguinte maneira: manipulao de mltiplas cpias dos itens de dados: o mtodo de controle de concorrncia responsvel por manter a consistncia entre essas cpias; falhas em stios individuais: quando um determinado stio entrar em estado de falha, o SGBDD deve ser capaz de continuar em operao utilizando os outros SGBDD que continuarem em operao; falha de links de comunicao: o sistema deve ser capaz de lidar com falha de um ou mais links de comunicao que conectam os stios; commit distribudo: problemas podem surgir quando se est realizando um commit de uma transao que est acessando bancos de dados armazenados em mltiplos stios e um desses stios falharem durante o processo; deadlock distribudo: o deadlock pode ocorrer entre vrios stios, em uma situao na qual um aguarda o desbloqueio de um item de dados que est sendo acessado por outro e ambos ficam aguardando uma liberao.

Pensando sobre o assunto

Para o controle de concorrncia em bancos de dados distribudos, apresentamos dois tipos: baseados em cpia distinta de item de dados e controle baseado em votao. No primeiro tipo, se encontram tcnicas que so extenses das j existentes para bancos de dados centralizados (ALVES, 2004). Segundo Elmasri e Navathe (2005), a idia designar cada cpia particular de um item de dados como uma cpia distinta. Os bloqueios para esse item de dados so associados cpia distinta e todas as solicitaes de bloqueio e desbloqueio so enviadas para o stio que contm a cpia.

182

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 6 bAnco de dAdos

Vrios mtodos diferentes esto baseados nessa idia, mas eles diferem em seus mtodos para escolher as cpias distintas. Na tcnica de stio primrio, todas as cpias distintas so mantidas no mesmo stio. Uma modificao dessa abordagem o stio primrio com um stio de backup. Outra abordagem o mtodo da cpia primria, no qual as cpias distintas dos vrios itens de dados podem ser armazenadas em stios diferentes. Um stio que inclui uma cpia distinta de um item de dados basicamente atua como o stio coordenador do controle de concorrncia para aquele item. No mtodo de votao, no h cpia distinta, em vez disso, uma solicitao de bloqueio enviada para todos os stios que tm uma cpia do item de dados. Cada cpia mantm seu prprio bloqueio e pode conceder ou negar a solicitao para bloqueio. Se uma transao que solicitar um bloqueio e lhe for concedido pela maioria das cpias, ela mantm o bloqueio e informa a todas as cpias. Se uma transao no receber a maioria de votos que lhe concedam um bloqueio dentro de certo perodo de timeout, ela cancela a solicitao e informa a todos os stios o cancelamento. O mtodo de votao considerado um mtodo de controle de concorrncia verdadeiramente distribudo, pois a responsabilidade por uma deciso reside em todos os stios envolvidos. Estudos de simulao tm mostrado que a votao tem um trfego maior de mensagens entre os stios que os mtodos de cpia distinta. Se o algoritmo levar em considerao as possveis falhas de stios durante o processo de votao, ele se torna extremamente complexo (ELMASRI; NAVATHE, 2005). Silberchartz, Korth e Sudarshan (2006) ainda descrevem uma tcnica de controle de concorrncia baseada em bloqueios. Uma delas a tcnica de gerenciador de bloqueios nico, na qual o sistema mantm um nico gerenciador de bloqueio que reside em um nico stio escolhido. Todas as solicitaes de bloqueios so repassadas ao gerenciador e, se uma solicitao no puder ser atendida, ela adiada at que seja possvel conced-la, caso contrrio, o gerenciador de bloqueios envia uma mensagem para o stio em que a solicitao foi iniciada. No caso de uma atualizao (escrita), todos os stios que contm uma rplica do item de dados devem ser envolvidos no processo, com a finalidade de manter a consistncia entre as diferentes rplicas. Esse esquema tem as vantagens de uma implementao simples e um simples tratamento de impasses, j que as decises so centralizadas. Por outro lado, o gerenciador de bloqueios nico se torna um gargalo para o sistema, j que dever processar todas as solicitaes. Alm disso, esse modelo descreve um ponto nico de falha. Caso o gerenciador deixe de operar, o processamento interrompido at que alguma tcnica de recuperao seja acionada. Uma alternativa para manter o equilbrio entre a simplicidade da implementao e o desempenho a utilizao de um gerenciador de bloqueios distri-

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

183

AulA 6 bAnco de dAdos

budo, no qual cada stio mantm um gerenciador de bloqueios sobre os itens de dados armazenados nesse stio.

6.4 Questes sobre mobilidade


Os sistemas de bancos de dados distribudos podem ser, ainda, implementados utilizando dispositivos mveis. Nesse caso, um dos requisitos a comunicao em um ambiente de redes sem fio. Um dos grandes desafios para a rea de bancos de dados mveis justamente tratar a movimentao dos stios. Outro aspecto importante a possibilidade de itens de dados serem acessados a partir de dispositivos mveis. Nesse cenrio, um dos grandes desafios controlar o bloqueio de itens de dados quando um dispositivo migra da regio de um stio para outro. Assim um bloqueio concedido sobre uma determinada cpia que no mais ser acessada deve ser tratado por algum mecanismo de controle de concorrncia.

Saiba mais

A partir do que vimos nesta aula, podemos concluir que os bancos de dados distribudos vm se tornando cada vez mais comuns. As ferramentas projetadas para bancos de dados isolados nem sempre so capazes de tratar todas as particularidades dos bancos de dados distribudos. O estudo de tcnicas para tratar dessas particularidades importante para atender os requisitos desse tipo de tecnologia.

Nesta aula, apresentamos os conceitos bsicos de sistemas de bancos de dados distribudos. Traamos uma comparao entre o modelo centralizado e o modelo distribudo, abordando as suas vantagens e desvantagens. Estudamos tambm a forma de armazenamento dos dados em ambiente distribudo e tcnicas de controle de concorrncia. Analisamos os mtodos de replicao (que determina que uma relao deve ser replicada em mais de um stio que compe o banco de dados) e fragmentao (que determina que partes de uma mesma relao podem estar em diferentes stios) para armazenamento em bancos de dados distribudos. Falamos a respeito do mecanismo de transaes distribudas, que determinam a existncia de dois tipos de transaes: globais, quando envolvem diversos stios, ou locais, quando executadas em um nico stio. Tambm vimos os mecanismos de controle de concorrncia, como os gerenciadores de bloqueios, que determinam as permisses de acesso aos itens de dados por transaes.

184

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 6 bAnco de dAdos

Finalmente, falamos sobre questes de mobilidade, que comentam a possibilidade de o banco de dados ser acessado por estaes mveis, ou mesmo a possibilidade de estaes mveis serem utilizadas como stios de armazenamento.

1. A fragmentao de relaes em sistemas de bancos de dados distribudos muito til em algumas situaes. Assinale a alternativa que contm uma das vantagens de se utilizar a fragmentao vertical. a) Ter subconjuntos de uma relao em diversos stios diferentes. b) Uma velocidade muito maior no atendimento das requisies, j que o processamento feito em um nico stio. c) Aumenta a segurana dos dados, j que, para uma linha de uma tabela ser acessada na sua forma completa, necessrio buscar seus atributos em diversos stios diferentes.

d) A vantagem armazenar os dados em um pnico fragmento, por isso chamada de vertical. 2. Sobre transaes distribudas, incorreto afirmar que: a) podem ser classificadas em locais e globais; b) transaes locais so executadas de forma praticamente idntica aos sistemas de bancos de dados centralizados; c) transaes globais, em geral, so controladas por um elemento do sistema chamado de coordenador de transaes;

d) a propriedade de isolamento no se aplica s transaes distribudas, j que o isolamento nesse contexto totalmente contrrio idia de distribuio. 3. Quais as principais diferenas entre o controle de concorrncia em bancos de dados distribudos e bancos de dados isolados? 4. Quais as principais diferenas entre os mtodos de fragmentao e de replicao?

Na atividade um, a alternativa correta a (c), pois a fragmentao indica que um possvel acesso indevido. Para ter acesso aos dados na sua forma completa, necessita ter acesso poltica de fragmentao e s associaes

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

185

AulA 6 bAnco de dAdos

entre as colunas fragmentadas e o processo de remontagem, dificultando a ao de tais acessos indevidos. A alternativa (a) fala da fragmentao horizontal e no vertical. A alternativa (b) tambm incorreta, pois, se por um lado a fragmentao vertical pode acelerar o processamento quando se trata de um nico atributo da relao, quando existe a necessidade de remontar a relao buscando dados em diferentes stios, o processamento pode se tornar mais lento pela necessidade de trocas de mensagens entre os stios. A alternativa (d) completamente contrria idia de fragmentao. A verticalidade ou horizontalidade da fragmentao diz respeito estrutura das relaes (se conjuntos de tuplas so armazenados em locais diferentes horizontal ou se conjuntos de atributos so armazenados em stios diferentes). Esta atividade est relacionada ao primeiro objetivo da aula, que compreender os conceitos de bancos de dados distribudos. Na atividade dois, a alternativa incorreta a (d), uma vez que as propriedades ACID so desejveis em qualquer transao de qualquer tipo de banco de dados. O isolamento de uma transao diz respeito ao isolamento dos dados e influncia que uma transao pode sofrer de outras operaes que estejam acontecendo no mesmo momento. A alternativa (a) correta, pois as transaes em ambiente distribudo so realmente classificadas como locais ou globais. A alternativa (b) correta, j que transaes locais so efetuadas sobre um nico stio, no h a necessidade de considerar aspectos de um ambiente distribudo, como as trocas de mensagens entre os stios que o compem. A alternativa (c) correta, pois o coordenador de transaes um elemento importante para controlar as transaes globais, executadas em mais de um stio. A terceira atividade e a quarta atividade esto relacionadas com o segundo objetivo da aula, que compreender as diferenas entre os bancos de dados isolados e os bancos de dados distribudos. Para responder corretamente a atividade trs, voc mencionou que o controle de concorrncia em ambiente distribudo deve considerar aspectos que no so necessrios em ambiente isolado, j que em ambiente distribudo os dados manipulados em uma transao podem estar armazenados em diferentes stios. Alm disso, os mecanismos de bloqueio devem considerar diferentes tipos de transaes, como as locais e globais. Na atividade quatro, voc foi coerente com a idia de que a replicao atua como se vrios bancos de dados isolados, ou relaes completas de um banco de dados fossem copiados e estivessem disponveis. Um dos problemas dessa tcnica a necessidade constante de atualizao para manter a consistncia entre as diferentes rplicas. A fragmentao sugere que partes de uma relao (um conjunto de registros ou uma coluna de uma relao) sejam armazenados em diferentes stios.

186

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 6 bAnco de dAdos

ALVES, Willian P. Sistema de bancos de dados. So Paulo: rica, 2004. DATE, C. J. Introduo a sistemas de banco de dados. Rio de Janeiro: Elsevier, 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 alguns tpicos adicionais de bancos de dados. Mais especificamente sobre a utilizao da linguagem XML no contexto de bancos de dados. Essa linguagem se tornou um padro mundialmente utilizado de documentos estruturados para o ambiente web. Estudaremos tambm conceitos de segurana em bancos de dados.

Anotaes

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

187

AulA 6 bAnco de dAdos

188

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 7 bAnco de dAdos

Aula 7
Tpicos adicionais
Esperamos que, ao final desta aula, voc seja capaz de: compreender a relao entre bancos de dados e XML; entender os conceitos de segurana em bancos de dados.

Para que os objetivos desta aula sejam atingidos, importante que voc tenha uma viso geral dos sistemas de bancos de dados, da forma como os componentes de um sistema de banco de dados, como usurios, aplicativos e SGBDs, interagem entre si. Esses conceitos, apresentados na primeira aula desta disciplina e tambm j vistos na disciplina de Bancos de Dados do segundo perodo, so importantes para compreendermos os tpicos adicionais que so relacionados com os conceitos j estudados.

Por serem um elemento de grande importncia nos sistemas de informao, as tecnologias voltadas para bancos de dados tm estado em constante evoluo. Melhorias nas formas de armazenamento, metodologias de acesso, conexo fsica, tcnicas de recuperao e de acesso a dados so alvo de diversos estudos acadmicos, tcnicos e profissionais. Algumas reas, como a segurana de dados, so muito importantes, j que em bancos de dados podem ser armazenadas grandes quantidades de informaes confidenciais relevantes ao negcio de uma empresa, dados pessoais e/ou bancrios que devem ser preservados. Estudos tm sido realizados, tambm, para desenvolver padres de armazenamento e personalizao dos dados. Nesse sentido, em conjunto com o crescente nmero de aplicaes que envolvem bancos de dados baseadas no

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

189

AulA 7 bAnco de dAdos

ambiente da Internet, surgiu a linguagem XML, que tem tido uma forte ligao com os sistemas de bancos de dados. Os tpicos de segurana e utilizao de XML sero estudados nesta aula.

7.1 XML
Extensible Markup Language, ou linguagem de marcao extensvel, uma linguagem que permite a estruturao de documentos. Linguagens muito difundidas, como HTML Hypertext Transfer Protocol , tambm se enquadram na categoria das linguagens de marcao. Porm as marcaes em HTML so rgidas, permitindo que os documentos sejam estruturados somente de acordo com as regras dessa linguagem. J a linguagem XML permite que os documentos sejam estruturados de acordo com as necessidades do usurio (da linguagem). Nesse contexto, uma marcao refere-se a qualquer elemento de um documento que no sirva como parte de sua sada impressa (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Por exemplo, partes de um texto podem ser formatadas de maneira diferente, isso pode ser expresso por meio de marcaes. Dois conceitos principais so usados para construir um documento XML: elementos e atributos (ELMASRI; NAVATHE, 2005). importante observar que, em XML, o termo atributo no usado da mesma maneira que a terminologia habitual em bancos de dados, mas da maneira como usado em linguagens de marcao para descrio de documentos estruturados. Os atributos fornecem informaes que descrevem os elementos. Existem basicamente dois tipos de elementos, os simples, que contm valores de dados, e os complexos, que so construdos hierarquicamente a partir de outros elementos, simples ou tambm complexos. Tanto a linguagem XML quanto HTML so derivadas da linguagem SGML Standard Generalized Markup Language , que bastante complexa e contm elementos que permitem a estruturao de documentos em diversos aspectos. XML ganha destaque por permitir que o usurio crie suas prprias marcaes, tambm chamada de tags, de maneira que o documento fique estruturado de acordo com as regras definidas para uma aplicao, situao ou simplesmente atenda os requisitos de estruturao definidos pelo usurio. A definio das tags, que podero ser utilizadas para estruturar um documento XML, fica armazenada em um arquivo do tipo DTD Document Type Definition. A partir da estrutura pr-definida em um DTD, podem-se especificar os elementos que estaro contidos no documento XML. Essa definio tambm pode ser feita utilizando-se uma API Application Program Interface , que permite que aplicaes possam inserir, excluir e alterar elementos contidos no documento. Essa API chamada de DOM Document Object Model. A partir da definio de uma estrutura para os documentos XML e da criao de tags prprias, podemos considerar que uma nova linguagem de marcao foi criada. Por essa razo, muitos autores chamam a linguagem XML

190

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 7 bAnco de dAdos

de metalinguagem. Essa possibilidade faz com que documentos XML se tornem poderosas ferramentas de intercmbio de dados, j que so facilmente processados e transmitidos no ambiente da Internet (a transmisso feita utilizando o protocolo HTTP, o mesmo usado para pginas HTML). Ao definir uma estrutura de documento que seja utilizada como formato para intercmbio, diversas aplicaes com arquiteturas diferentes podem compartilhar dados de maneira eficiente sem que seja necessrio refaz-las. Outra caracterstica marcante da linguagem XML que a estrutura pode ser definida em um arquivo, enquanto o contedo, ou seja, os dados que sero estruturados de acordo com a estrutura definida podem ser armazenados em outro arquivo. Alm disso, importante ressaltar que o contedo de um documento XML contm, basicamente, os dados estruturados (geralmente de maneira hierrquica em forma de rvore) e, ao contrrio de HTML, no contm informaes sobre como os dados devem ser apresentados. A forma de apresentao dos dados pode ser determinada de vrias maneiras. Duas das mais comuns so a utilizao de CSS Cascade Stlyle Sheet ou Folhas de Estilo em cascata, e XSL Extensible Stylesheet Language. A definio da forma de apresentao independente do contedo e da estrutura confere linguagem XML uma flexibilidade muito grande, tornando os documentos facilmente personalizveis. A Figura a seguir ilustra graficamente a relao entre contedo, estrutura e apresentao de um documento XML. Figura Composio de um documento XML.

Observe que o contedo estruturado de acordo com regras pr-definidas d origem ao documento XML, escrito em uma estrutura hierrquica em rvore. A partir da j poderamos utilizar os dados estruturados para uma quantidade muito grande de aplicaes. Uma delas seria apresentar ao usurio de um sistema de informaes qualquer os dados contidos no documento. Nesse momento, entram em cena as regras de apresentao, que, aplicadas ao documento XML, fazem com que formataes sejam aplicadas s tags definidas quando o documento for apresentado em um browser (navegador web).

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

191

AulA 7 bAnco de dAdos

7.1.1 XML e bancos de dados Embora tenha sido exposto que os elementos e atributos em um documento XML no so exatamente iguais aos atributos em bancos de dados, essa associao pode ser feita sem prejuzos quando estivermos falando de bancos de dados relacionais. Se uma determinada entidade pode ser definida a partir de seus atributos, podemos associar a estrutura de uma tabela em um banco de dados relacionais estrutura de um documento XML.

Saiba mais

Algumas abordagens tm sido propostas para a organizao do contedo de documentos XML para facilitar sua subseqente consulta e recuperao. Segundo Elmasri e Navathe (2005), as abordagens mais comuns so as seguintes: uso de SGBD para armazenar documentos como texto: documentos XML podem ser armazenados como atributos (do tipo texto) de registros em bancos de dados relacionais; uso de um SGBD para armazenar o contedo do documento XML como elemento de dados: essa abordagem funciona para o armazenamento de uma coleo de documentos que seguem um esquema (estrutura) especfico XML estabelecida em um DTD. Como todos os documentos tm a mesma estrutura, possvel projetar um banco de dados relacional para armazenar os elementos de dados dentro dos documentos XML. Essa abordagem exigiria um algoritmo de mapeamento para projetar um esquema de banco de dados que seja compatvel com a estrutura do documento XML e tambm para recriar, a partir dos dados armazenados, os documentos XML. Esses algoritmos podem ser implementados tanto internamente aos SGBDs quanto como um middleware separado que no faa parte do SGBD; projeto de um sistema especializado para armazenamento de dados XML nativos: um novo tipo de sistema de banco de dados baseado no modelo hierrquico poderia ser projetado e implementado. O sistema incluiria tcnicas especializadas de indexao e de consultas e funcionaria para todos os tipos de documentos XML. Considerando que documentos XML so basicamente arquivos de texto, poderia incluir tcnicas de compresso para reduzir o tamanho dos documentos para armazenamento;

192

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 7 bAnco de dAdos

criao ou publicao de documentos XML customizados a partir de bancos de dados relacionais preexistentes: como existem enormes quantidades de dados j armazenados em bancos de dados relacionais, parte desses dados pode precisar ser formatada como documento para troca ou exibio pela web. Essa abordagem usaria uma camada de software middleware separada para tratar as converses necessrias entre o banco de dados e os documentos XML.

Pensando sobre o assunto

7.2 Segurana em bancos de dados


Segundo Date (2004), geralmente, questes sobre segurana de dados esto associadas integridade. No entanto so conceitos bem diferentes. Observe a diferena entre eles a seguir. Segurana: significa proteger os dados contra usurios no-autorizados; Integridade: significa proteger os dados de usurios autorizados. Nesta parte da aula, o nosso interesse puramente a segurana. A segurana em banco de dados uma rea bastante ampla, que, segundo Elmasri e Navathe (2005), se refere a muitas questes. Questes legais e ticas referentes ao direito de acesso a certas informaes. Questes polticas no nvel governamental, institucional ou corporativo, como quais tipos de informaes no devem ser tornados disponveis publicamente. Questes relacionadas ao sistema, como os nveis de tratamento de segurana (SGBD, sistema operacional, aplicao, etc.). Necessidades de algumas organizaes em categorizar nveis de segurana e enquadrar os dados nesses nveis. Quando o assunto segurana, comum que se pense tambm sobre quais os tipos de ameaas queremos nos prevenir. Os objetivos principais da segurana em bancos de dados eliminar ameaas que afetem a integridade, a disponibilidade e a confidencialidade dos dados. Para proteger os bancos de

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

193

AulA 7 bAnco de dAdos

dados contra os diversos tipos de ameaas, algumas medidas podem ser implementadas, como: controle de acesso controle de inferncia controle de fluxo criptografia Uma das maneiras de garantir o controle de acesso definir contas para os usurios. Geralmente o DBA Data Base Administrator possui uma conta de sistema, ou conta de superusurio, que habilita capacidades que no esto disponveis para os usurios comuns de um banco de dados. Entre essas capacidades esto: criao de contas, concesso de privilgios, revogao de privilgios e atribuio de nvel de segurana. Para melhorar o esquema de segurana, somente devem ter uma conta de acesso usurios que tenham uma necessidade legtima de acessar o banco de dados. O sistema de banco de dados tambm deve manter informao de todas as operaes que so aplicadas por um usurio durante cada sesso de conexo, que consiste em uma seqncia de interaes que um usurio realiza desde o momento de conexo (login) at o momento de desconexo (logoff). Essas informaes, associando tambm o terminal a partir do qual os comandos foram enviados, podem ser armazenadas em um log de acesso do sistema (ELMASRI; NAVATHE, 2005). Podemos destacar dois tipos principais de controle de acesso: o discriminatrio e o mandatrio. Segundo Date (2004), no caso do controle de acesso discriminatrio, determinado usurio ter, em geral, direitos de acesso (tambm chamados de privilgios) diferentes sobre objetos diferentes. Alm disso, h bem poucas limitaes inerentes a respeito de quais usurios podem ter privilgios diferentes sobre diferentes objetos (por exemplo, um usurio A tem direitos sobre um objeto X, mas no sobre Y, enquanto um usurio B tem direitos sobre Y, mas no sobre X), tornando esse modelo bastante flexvel. No caso do controle mandatrio, cada objeto de dados assinalado com certo nvel de classificao e cada usurio recebe certo nvel de liberao. O acesso a um determinado objeto de dados s pode ser feito por usurios com a liberao apropriada. Os esquemas mandatrios tendem, assim, a ser hierrquicos por natureza, e, desse modo, comparativamente rgidos. Outra ferramenta que pode ser usada para segurana em bancos de dados a criptografia. 7.2.1 Criptografia A criptografia um recurso de segurana muito til quando os dados se encontram nas mos de usurios ilegtimos, possivelmente por um erro no canal de comunicao entre computadores (rede) ou mesmo aproveitando de uma

194

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 7 bAnco de dAdos

vulnerabilidade em um aplicativo ou na prpria transmisso de dados. Nesse caso, o uso de criptografia permite que os dados sejam protegidos, j que, mesmo de posse das informaes presentes no banco de dados, elas no esto escritas de forma inteligvel.

A criptografia consiste em aplicar um algoritmo de criptografia a um conjunto de dados escritos em texto puro (no criptografado) usando uma chave de criptografia transformando esse texto puro em um texto cifrado (criptografado).

O algoritmo de criptografia em si no necessita ser secreto, porm a chave usada para criptografar e descriptografar os dados deve ser de posse nica de usurios que tenham real necessidade de acesso a esses dados. Em bancos de dados, a utilizao de criptografia aumenta a segurana dos dados se eles forem armazenados e transmitidos na forma de texto cifrado, pois, ao serem acessados indevidamente, transportados fisicamente, ou interceptados em uma comunicao, estaro seguros. Existem diversas tcnicas de criptografia, algumas delas so baseadas em substituio, outras em permutao de caracteres em um texto puro. Outros ainda utilizam essas duas tcnicas combinadas, como o DES Data Encryption Standard , que foi desenvolvido pela IBM e adotado como padro federal dos Estados Unidos em 1977 (DATE, 2004). Para usar o DES, o texto comum dividido em blocos de 64 bits e cada bloco criptografado com o uso de uma chave de 64 bits. Na medida em que computadores se tornaram mais rpidos e precisos, as chaves de 64 bits usadas no DES foram se tornando relativamente pequenas, j que ataques de fora bruta (testar todas as combinaes possveis) se tornaram viveis em algumas situaes. Assim outros padres ganharam fora, como o AES Advanced Encryption Standard , que utiliza chaves de 128, 192 e 256 bits, muito mais seguras. Existe ainda o modelo de criptografia de chave pblica. Os algoritmos de chave pblica so baseados em operaes matemticas, em vez de operaes sobre bits. Alm disso, diferem da ento criptografia tradicional por utilizarem duas chaves ao invs de uma s. As duas chaves so chamadas de pblica e privada. A privada sempre mantida em segredo (ELMASRI; NAVATHE, 2005). Como sugerido no nome desse modelo, a chave pblica tornada pblica para outros usarem, ao passo que a privada conhecida apenas por seu proprietrio. Um algoritmo de criptografia de chave pblica genrica se baseia em uma chave para cifrar e outra chave diferente, porm relacionada, para decifrar, de acordo com os seguintes passos: cada usurio gera seu par de chaves para cifrar e decifrar os dados;

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

195

AulA 7 bAnco de dAdos

cada usurio coloca uma das duas chaves em um registro pblico ou em outro arquivo acessvel (essa a chave pblica). A outra chave que a acompanha mantida secreta; se um remetente deseja enviar uma mensagem privada para um destinatrio, o remetente cifra a mensagem utilizando a chave pblica do destinatrio; quando o destinatrio receber a mensagem, decifra a mensagem utilizando a chave privada do destinatrio. Nenhum outro receptor pode decifrar a mensagem, j que somente o destinatrio conhece a sua prpria chave privada.

Saiba mais

Portanto os conceitos de segurana em bancos de dados so muito importantes, j que aspectos como a confidencialidade so requisitos para um banco de dados confivel. Considerando que existem muitos sistemas baseados na web, aspectos de segurana ficam ainda mais em evidncia e devem poder ser aplicados s novas tecnologias, como XML.

Nesta aula, apresentamos os conceitos fundamentais da linguagem XML e algumas das possibilidades de utiliz-la como uma ferramenta para a rea de bancos de dados. Essa tecnologia pode ser usada tanto como formato para intercmbio na troca de informaes, quanto formato para armazenamento ou ainda como padro para apresentao dos dados ao usurio. Outro tpico abordado foi a segurana em bancos de dados, que muitas vezes no percebida pelo usurio. Apresentamos os mtodos baseados em controle de acesso e tambm conceitos de criptografia.

1. Sobre XML, assinale a alternativa incorreta. a) Pelo fato da transferncia de dados em XML ser feita utilizando o mesmo protocolo que HTML, o protocolo HTTP, muito difcil para os sistemas de bancos de dados decodificar as informaes.

196

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 7 bAnco de dAdos

b) XML, assim como HTML, uma linguagem de marcao. c) As marcaes de um documento XML podem ser definidas em um documento chamado DTD e podem tambm refletir o domnio da aplicao em questo.

d) A formatao dos dados contidos em um arquivo XML pode ser definida em outro arquivo, por exemplo, do tipo CSS. 2. A segurana em bancos de dados um dos aspectos mais importantes. Sobre segurana, assinale a alternativa correta. a) A segurana em um banco de dados implementada diretamente e somente na aplicao que interage como banco de dados. b) A nica forma de implementar segurana em um banco de dados por meio do controle de acesso efetuado no SGBD. c) A criptografia de chave pblica uma maneira de proteger os dados mesmo que eles caiam nas mos de pessoas no autorizadas.

d) Segurana em bancos de dados um sonho impossvel, j que os dados sempre so armazenados na sua forma definitiva e qualquer um que os acessar pode decifr-los sem problema algum. 3. A separao entre estrutura, contedo e formatao uma caracterstica marcante da linguagem XML. Como isso poderia se traduzir em uma vantagem no contexto de bancos de dados? 4. Foi comentado anteriormente que existem diversas tcnicas de segurana para a rea de bancos de dados. Essas tcnicas devem ser utilizadas separadamente, ou podemos implementar um pacote de segurana contendo diversas tcnicas?

Considerando os objetivos da aula, que esto relacionados aos temas XML e segurana em banco de dados, vamos comentar as questes propostas nas atividades para verificar se voc os atingiu. Na atividade um, a alternativa (a) est incorreta, j que o fato de dados em XML serem transmitidos utilizando o protocolo HTTP representa uma das vantagens desse padro, pois uma srie de problemas de transmisso de dados j est resolvida. Alis, essa uma das razes de XML estar se tornando um padro cada vez mais em uso. A alternativa (b) correta, pois como j foi exposto, a linguagem XML uma linguagem de marcao, assim como HTML, e a construo dos documentos baseada na utilizao de tags. A alternativa (c) expressa corretamente uma possibilidade de separao da

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

197

AulA 7 bAnco de dAdos

definio da estrutura do documento e do preenchimento do seu contedo. A alternativa (d) apresenta outra caracterstica da linguagem XML, que a possibilidade de definir a formatao de cada tipo de marcao em um arquivo separado. Na atividade dois, a alternativa (a) incorreta, pois a implementao da segurana em bancos de dados pode ser feita em diversos nveis, de aplicao, SGBD, etc., e no somente nas aplicaes. A alternativa (b) incorreta, pois o controle de acesso uma das formas de garantir a segurana dos dados, porm no a nica. A alternativa (c) a resposta correta, j que dados criptografados com a tecnologia de chaves pblicas somente podem ser decifrados com a utilizao de uma chave provada, que somente um proprietrio possui. Dessa maneira, outras pessoas no podem acessar indevidamente os dados. A segurana da informao um aspecto chave na sociedade atual. Muitos esforos tm sido realizados nesse sentido, porm, ainda existem muitas vulnerabilidades a serem solucionadas. Entretanto h ambientes seguros para a troca de informaes, por isso no podemos considerar a segurana um sonho, j que em muitos sistemas a dificuldade em burlar os mecanismos de segurana seria muito grande. Diante do exposto, a alternativa (d) falsa. A atividade trs chamou voc para refletir sobre uma das principais caractersticas da linguagem XML, que a separao entre contedo, estrutura e apresentao. No contexto de bancos de dados, podemos utilizar essas caractersticas de diversas formas diferentes. Uma delas seria a possibilidade de armazenar grandes quantidades de documentos XML sem a necessidade de armazenar, em conjunto, os aspectos de formatao de cada um, j que um nico esquema de formatao pode ser definido em separado e aplicado a todos os documentos armazenados. Outra possibilidade seria personalizar a apresentao dos dados para diferentes categorias de usurios, ou ainda, validar, baseando-se em uma estrutura pr-definida, os dados contidos em um documento antes de armazen-los no banco de dados. Na atividade quatro, voc afirmou que a segurana de um sistema de banco de dados tem vrios nveis, por exemplo, os usurios, a aplicao, o SGBD e os prprios dados. Algumas tcnicas de segurana, como o controle de acesso, atuam em apenas uma dessas camadas, sozinha no o suficiente para garantir a segurana das informaes. A juno de tcnicas soa como uma soluo mais completa e eficaz, j que, se uma barreira for vencida, ainda restaro outros mecanismos para impedir que os dados sejam prejudicados ou acessados indevidamente. Por exemplo, efetuar o controle de acesso com senhas criptografadas ou, ainda, criptografar as definies de permisso para os diferentes usurios dificultam um possvel ataque utilizando informaes sobre um determinado usurio.

198

3 PeRodo Anlise e desenvolvimento de sistemAs unitins

AulA 7 bAnco de dAdos

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.

Anotaes

unitins Anlise e desenvolvimento de sistemAs 3 PeRodo

199

AulA 7 bAnco de dAdos

200

3 PeRodo Anlise e desenvolvimento de sistemAs unitins