Banco de Dados II

April 3, 2019 | Author: Cleomar Cruz | Category: Databases, Information Technology Management, Information Science, Tecnologia, Computing
Share Embed Donate


Short Description

Download Banco de Dados II...

Description

EQUIPE UNITINS Organização de Conteúdos Acadêmicos Coordenação Editorial Revisão Lingüístico-Textual Lingüístico-Textual Gerente de Divisão de Material Impresso

Carlos Henrique Corrêa Tolentino Maria Lourdes F. G. Aires Silvéria Aparecida BasniaK Schier Katia Gomes da Silva

Revisão Digital

Helena Costa e Lima Prestes

Projeto Gráfco

Irenides Teixeira Katia Gomes da Silva Geuvar S. de Oliveira

Ilustração Capas

Igor Flávio Souza

EQUIPE EADCON Coordenador Editorial

William Marlos da Costa

 Assistentes de Edição

Ana Aparecida Teixeira da Cruz  Janaina Helena Nogueira Bartkiw Lisiane Marcele dos Santos Denise Pires Pierin Kátia Cristina Oliveira dos Santos Monica Ardjomand Rodrigo Santos Sandro Niemicz William Marlos da Costa

Programação Visual e Diagramação

Prezado estudante, Este caderno de Bancos de Dados representa a continuidade da disciplina anterior. As discussões agora são voltadas para aspectos de projeto de bancos de dados relacionais. Os bancos de dados relacionais são os mais utilizados no mercado e, por essa razão, seu estudo é essencial. Considerando que grande parte dos sistemas de inormação i normação e aplicativos em geral manipulam dados e inormações que cam armazenadas permanentemente, o projeto de bancos de dados relacionais se torna uma área de grande importância. O conteúdo deste caderno permite a você ter uma visão geral a respeito de diversos conceitos para o projeto de bancos de dados. Esses conceitos permeiam as ases de denições conceituais e revisão, também questões de implantação e de manutenção da conabilidade, consistência e disponibilidade do banco de dados. Além disso, permite auxiliar o uturo analista de sistemas na tomada de decisões a respeito de quais tecnologias utilizar utili zar para tirar o máximo de proveito dos recursos computacionais disponíveis. Bons estudos! Pro. Carlos Henrique Corrêa Tolentino

EMENTA Projeto de banco de dados relacional. Transações. Transações. Controle de concorrência. Sistemas de recuperação. Banco de dados distribuídos. OBJETIVOS Apresentar conceitos comumente encontrados na literatura e no • mercado na área de bancos de dados. • Oerecer uma base para a tomada de decisões em relação a como proceder na atividade de projetar um banco de dados relacional. CONTEÚDO PROGRAMÁTICO • • • • • •

Conceitos de projetos de bancos de dados relacionais Dependências uncionais Normalização Transações Transações e controle de concorrência Classicação de alhas e sistemas si stemas de recuperação Bancos de dados distribuídos e outras tecnologias emergentes

BIBLIOGRAFIA BÁSICA DATE, C. J. Introdução a sistemas de banco de dados . Rio de Janeiro: Elsevier, 2003.

ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. São Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. São 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 implementação. São Paulo: Érica, 2004. MONTEIRO, Emiliano Soares. Projeto de sistemas e banco de dados . Rio de  Janeiro: Brasport, 2004.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

121

AulA 1 • bAnco de dAdos

Dependência funcional e normalização

Esperamos que, ao nal desta aula, você seja capaz de: • compreender os conceitos de dependência uncional e sua importância no contexto de bancos de dados; • entender os conceitos de normalização e sua aplicação.

Para que os objetivos desta aula sejam atingidos, é importante que você domine os conceitos de relações, entidades, atributos, chaves, relacionamentos e cardinalidade. Além disso é importante ter uma visão geral da organização de um banco de dados relacional. Esses conteúdos oram vistos na disciplina de Bancos de Dados do segundo período e são importantes para a compreensão da dependência uncional e da normalização.

Atualmente, muitos sotwares que compõem os sistemas de inormação podem ser considerados apenas uma interace entre os usuários e os dados armazenados. Esse raciocínio é ilustrado na gura que segue. Figura 1

Ilustração da relação entre aplicativos, usuários e bancos de dados.

Nesse cenário, um elemento importante não pode deixar de ser considerado: o sistema gerenciador de banco de dados - SGBD. O SGBD tem, entre outras unções, a responsabilidade de gerenciar o acesso dos aplicativos às bases de dados por ele gerenciadas.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

123

AulA 1 • bAnco de dAdos

Em geral, o objetivo do projeto de um banco de dados relacional é um esquema de relações que nos permite armazenar um conjunto de dados sem redundância, além de possibilitar a rápida recuperação de inormações (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). A qualidade de um projeto é tão importante quanto a qualidade dos sotwares que azem a interace com o usuário, embora, em muitas situações o público-alvo de um projeto não tenha acesso, ou noção, das ações e esquemas que são implementados. Alguns conceitos são de extrema importância no projeto de bancos de dados relacionais, como a dependência uncional e a normalização de dados, que é o oco de estudo desta aula. 1.1 Dependência funcional A dependência uncional pode ser denida como uma restrição entre dois conjuntos de atributos de uma mesma entidade/relação (ALVES, 2004). Essa denição pode ser eita sob uma linguagem mais precisa. Elmasri e Navathe (2005) armam que uma dependência uncional, denotada por X →Y entre dois conjuntos de atributos (que são subconjuntos) de uma relação R especicam uma restrição nas possíveis tuplas que ormem um estado da relação r de R. A restrição é que, para quaisquer duas tuplas t1 e t2 em r que tenham t1[X] = t2[X], elas também têm de ter t1[Y] = t2[Y]. Isso signica dizer que os valores do componente de Y, de uma tupla em r, dependem ou são determinados por valores do componente de X. Alternativamente, os valores de X determinam exclusivamente (ou uncionalmente) os valores de Y. A partir do exposto, dizemos que Y é uncionalmente dependente de X. O conceito de dependência uncional é explicado e exemplicado a seguir.

Considere uma relação Matrícula com os seguintes atributos: mat_aluno, cod_curso, cod_disciplina, nome_aluno, data_matricula, nome_disciplina, nome_curso e nota_prova. Uma relação de dependência entre esses atributos é ilustrada na gura a seguir. Figura 2

124

Ilustração de dependência uncional parcial.

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 1 • bAnco de dAdos

Se considerarmos X como sendo o conjunto ormado pelos atributos matricula_aluno, cod_curso e cod_disciplina, que são justamente os atributos que compõem a chave primária dessa relação, e Y como sendo o conjunto ormado 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 dependência, na qual o conjunto Y é dependente apenas de parte da chave primária da relação , é chamada de dependência parcial. Note que o nome do aluno e a data de sua matrícula em uma determinada disciplina de um curso são valores, geralmente, armazenados em uma relação com inormações sobre o aluno. As guras a seguir ilustram outras possibilidades de dependência uncional dentro da mesma relação. Figura 3

Outras possibilidades de dependência uncional: cod_curso e  nome_curso.

Figura 4

Outras possibilidades de dependência uncional: 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 • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

125

AulA 1 • bAnco de dAdos

Outro tipo de dependência é a dependência total, ou completa, na qual um determinado conjunto de atributos é dependente de todos os atributos que compõem a chave primária da relação. Utilizando o mesmo exemplo de relação das guras anteriores, a Figura 5 ilustra uma dependência uncional total. Figura 5

Exemplo de dependência uncional total.

Observe que, dierentemente das outras ilustrações de dependência, o atributo nota_prova não pode ser associado a apenas parte da chave primária, pois a nota de uma prova deve estar, sempre, relacionada ao aluno que ez a prova, a disciplina em questão e também o curso ao qual a disciplina pertence. Esse é um exemplo clássico de dependência uncional total. Existe ainda m tipo de dependência chamada de dependência transitiva. Esse tipo de dependência é caracterizado por uma situação na qual um determinado conjunto de atributos Y é uncionalmente dependente de um atributo que não az parte da chave primária da relação. Ainda aproveitando o exemplo anterior, a Figura 6 ilustra este tipo de dependência. Figura 6

Exemplo de dependência transitiva.

Observe que oi adicionado o atributo status, usado para indicar se o aluno está reprovado ou aprovado. Note que a aprovação ou reprovação do aluno é 126

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 1 • bAnco de dAdos

dependente exclusivamente da nota obtida na prova realizada pelo aluno, que não az parte da chave primária da relação. 1.1.1 Redundância e anomalias

De acordo com as dependências uncionais que estiverem presentes em um banco de dados, existe a possibilidade de surgirem diversos tipos de problemas. Um deles é a redundância. Ainda abordando o exemplo supracitado, observe que as únicas inormações armazenadas que dizem respeito aos alunos são matricula_aluno, nome_aluno. É natural, que nesse banco de dados, exista uma tabela chamada  Aluno, na qual estejam contidos atributos como endereço, liação, etc. Dessa maneira, ao inserir inormações como nome_aluno, estamos duplicando desnecessariamente uma inormação. Uma solução aparente para esse problema seria unifcar as relações, de maneira que as inormações adicionais da entidade Aluno sejam presentes na relação apresentada nas guras anteriores. Essa ação geraria uma anomalia, já que somente poderíamos inserir um registro da entidade Aluno quando houvesse uma matrícula e, além disso, para cada matrícula de cada disciplina, novamente teríamos as inormações duplicadas. Complementando, podemos armar que tais problemas se agravam nas ações de exclusão e atualização, já que, ao se excluir a matrícula de um aluno, estaríamos excluindo também o registro do próprio aluno. Além disso, atualizações eitas em inormações duplicadas devem ser propagadas para cada registro que contiver aquelas inormações. Nesse cenário, surgem questionamentos sobre como resolver esses problemas. A resposta reside nas técnicas de normalização, que são discutidas a seguir. 1.2 Normalização

Segundo Elmasri e Navathe (2005), a normalização de dados pode ser vista como o processo de análise de determinados esquemas de relações com base em suas dependências uncionais e chaves primárias para alcançar as propriedades desejáveis de minimização de: • redundância • anomalias de inserção • anomalias de exclusão • anomalias de atualização Machado e Abreu (1996) sugerem duas abordagens para empregar a técnica de normalização de dados. Vejamos, a seguir, quais essas abordagens. •

Abordagem top-down : após a denição de um modelo de dados, aplicamos a normalização para obtermos uma síntese dos dados, bem como

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

127

AulA 1 • bAnco de dAdos

uma decomposição das entidades e relacionamentos em elementos mais estáveis, tendo em vista uma utura implementação ísica em um banco de dados. •

Abordagem bottom-up : consiste em aplicar a normalização como erramenta de projeto do modelo de dados, para que, inicialmente já se construa um modelo de dados normalizado.

Segundo Alves (2004), a orma normal de uma relação indica o grau de normalização no qual a relação se encontra. Academicamente alando, existem cinco ormas normais, embora apenas as três primeiras já sejam sucientes para termos uma boa denição da estrutura do banco de dados. No m da normalização, teremos a resposta para uma das perguntas que surgem quando iniciamos um projeto: quantas tabelas serão necessárias em nosso banco de dados? Após a aplicação da normalização, independente da abordagem (bottom-up ou top-down), esperamos obter um banco de dados com as seguintes características: •

robustez

•

eciência

•

acilidade de manutenção e alteração

•

fexibilidade

•

conabilidade

Vejamos, nos tópicos a seguir, as três ormas normais para que haja denição da estrutura do banco de dados. 1.2.1 A primeira forma normal

Existem muitos bancos de dados que armazenam inormações multivaloradas. Essas inormações são passíveis de decomposição. Uma inormação que não pode, ou não precisa ser decomposta é chamada de inormação atômica. Segundo Silberchartz, Korth e Sudarshan (2006), dizemos que uma relação R se encontra na primeira orma normal se todos os atributos de R são atômicos. Um exemplo clássico de atributo multivalorado é o campo endereço, presente em muitas relações em bancos de dados. Considerem uma relação Aluno contendo os atributos: matricula_aluno, nome_aluno, one, endereço e data_nasc. Todos nós sabemos que o endereço é composto por outras inormações, como cidade, estado, CEP, bairro, rua, número e complemento. Dessa maneira não é diícil perceber que existe nessa relação um atributo multivalorado. Para adequar essa relação à primeira orma normal, poderíamos rená-la para a orma sugerida na gura a seguir. 128

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 1 • bAnco de dAdos

Figura 7

Decomposição do atributo endereço.

Outra ação de normalização que pode ser implementada é a criação de uma nova relação contendo os atributos do campo multivalorado, mantendo-se o vínculo dessa relação com a chave primária da relação original. A Figura 8 ilustra essa solução. Figura 8

Outra opção de normalização.

Observe que agora temos duas tabelas relacionadas pela chave estrangeira mat_aluno criada na tabela ENDEREÇO. 1.2.2 A segunda forma normal

Segundo Elmasri e Navathe (2005), a segunda orma normal é baseada no conceito de dependência uncional total. Alves (2004) complementa armando que colocar as entidades na segunda orma normal é um pouco mais diícil que na primeira. Uma entidade se encontra na segunda orma normal se, além de estar na primeira, todos os seus atributos são totalmente dependentes da chave

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

129

AulA 1 • bAnco de dAdos

primária composta. Note que essa orma normal não se aplica as relações com uma chave primária simples (composta por um único atributo). Isso signica que atributos parcialmente dependentes da chave serão removidos. A remoção dos atributos parcialmente dependentes não signica propriamente que essas inormações serão perdidas, mas podem ser alocadas em outra relação, ou ainda, removendo-as, estaríamos apenas deixando de duplicá-las. Para ilustrar a aplicação da segunda orma normal, vamos considerar um domínio no qual tenhamos o relacionamento apresentado na Figura 9. Figura 9

Relacionamento em um domínio de aplicação.

Observe que, na tabela ITENS, os atributos descrição e valor unitário não são dependentes da chave primária composta pelo campo num_pedido e cod_ produto. A sua remoção não indica necessariamente que eles deixem de ser armazenados no banco de dados, mas uma ação de normalização poderia agir no sentido de repassar essas inormações para outra relação, como apresentado na solução a seguir, ilustrada na Figura 10. Figura 10 Resultado da aplicação da segunda orma normal.

Analisando esse novo diagrama, percebemos que a adequação à segunda orma normal oi eetuada sem a perda da capacidade de recuperação das inormações. Por exemplo, para que um aplicativo possa determinar o valor total de um pedido, basta consultar quais itens estão contidos nesse pedido, a quantidade de cada item e o seu valor unitário na tabela produto. 130

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 1 • bAnco de dAdos

1.2.3 A terceira forma normal

Elmasri e Navathe (2005) também descrevem a terceira orma normal. Uma relação se encontra na terceira orma normal quando não há nenhuma dependência transitiva, ou seja, quando nenhum atribuo é dependente de um conjunto X de atributos tal que um elemento qualquer de X não aça parte da chave primária. Um exemplo de dependência transitiva já oi mostrado anteriormente, no qual o valor de um campo status era dependente do valor do campo nota. O campo status deve ser removido da relação para que ela esteja na terceira orma normal. Uma possível solução para o problema seria o que está exposto na gura a seguir. Figura 11 Resultado da aplicação da terceira orma normal.

Nesse exemplo, além de remover a dependência transitiva, inserimos na tabela DISCIPLINA o campo nota_ap, que é a nota mínima para a aprovação. Dessa maneira, podemos determinar se um aluno oi aprovado em uma disciplina vericando se a nota_prova desse aluno tem valor igual ou superior ao valor do campo noa_ap da disciplina em questão. Note que essas associações são possíveis por meio da utilização das chaves estrangeiras mat_aluno e cod_ disc na tabela MATRÍCULA. A partir da identicação das dependências uncionais e das aplicação das técnicas de normalização, poderemos projetar e construir bancos de dados com as características que permitem um bom desempenho. São as já citadas: • robustez • eciência • acilidade de manutenção e alteração fexibilidade • • conabilidade Portanto, a partir do que analisamos nesta aula, percebemos que ignorar dependências uncionais e normalização pode trazer diversos problemas na utilização de banco de dados. Assim, ao projetarmos um banco de dados desde o seu início (abordagem bottom-up) ou mesmo um banco de dados já em operação (abordagem top-down), devemos aplicar as técnicas de normalização.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

131

AulA 1 • bAnco de dAdos

Nesta aula, estudamos conceitos muito importantes para o projeto de bancos de dados relacionais: dependência uncional e normalização. Uma dependência uncional é uma restrição imposta sobre conjuntos de atributos de uma relação.  Já a normalização é processo de análise de determinados esquemas de relações com base em suas dependências uncionais e chaves primárias para alcançar as propriedades desejáveis de minimização de redundância, anomalias de inserção, anomalias de exclusão, anomalias de atualização. Estudamos que a identicação dos tipos de dependências uncionais (parcial, total e transitiva), além da correta aplicação da normalização (primeira, segunda e terceira ormas normais) são importantes para que tenhamos em mãos um bom projeto de banco de dados.

1. A respeito de dependências uncionais, assinale a alternativa correta. a) Pode existir dependência uncional entre atributos de entidades dierentes.

b) Para a eliminação de qualquer tipo de dependência uncional, devemos apenas reorganizar os atributos de uma relação, nunca criar outras relações ou apagar atributos. c) Alguns tipos de dependência uncional podem resultar em problemas, como a redundância de dados. d) A redundância de dados causada por alguns tipos de dependências uncionais, não pode ser considerada um problema, já que dados redundantes somente são usados para leitura e não para atualizações. 2. Dê exemplos de situações nas quais seja indicado utilizar as abordagens para normalização de dados (top-down e bottom-up). 3. Sobre normalização, é incorreto armar que: a) a segunda orma normal diz respeito às dependências uncionais parciais; b) a terceira orma normal trata das dependências transitivas em uma relação; c) a primeira e a segunda ormas normais tratam do mesmo tipo de dependência uncional. A primeira apenas substitui os atributos, enquanto que a segunda cria outras relações para transerir tais atributos. d) para que uma relação esteja de acordo com a terceira orma normal, ela deve estar também de acordo com a segunda orma normal. 132

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 1 • bAnco de dAdos

4. Que tipo de problemas pode ocorrer em um banco de dados cujas relações não observam nenhuma das ormas normais?

Que tal conerir se você acertou as respostas e atingiu os objetivos da aula? Iniciamos então pela atividade um. A alternativa (a) é incorreta, já que, segundo a denição de dependência uncional, um conjunto de atributos de uma relação R é uncionalmente dependente de outro conjunto de atributos da mesma relação. De acordo com as regras de normalização, em alguns casos, atributos podem ser reorganizados e em outros casos removidos, portanto, a alternativa (b) também é incorreta. De acordo com a sessão que ala de redundância e anomalias, uma dependência uncional mal projetada pode trazer problemas, logo, a alternativa (c) é a correta. A alternativa (d) é totalmente incorreta, já que a redundância é um problema comum em bancos de dados mal projetados e, além disso, esse problema independe das ações de leitura e ou atualização de itens de dados. Na atividade dois, você considerou que a abordagem top-down é aplicada sobre um modelo conceitual já denido. Com isso, uma situação comum para utilização desse tipo de abordagem é a manutenção de bancos de dados, ou ainda, implementação de alterações na estrutura do banco de dados. Em relação à abordagem bottom-up, é comum encontrá-la quando se deseja construir um banco de dados partindo do início, ou seja, a normalização não será aplicada sobre um modelo conceitual denido. Na atividade três, a alternativa incorreta é a letra (c), que compara a primeira e a segunda orma normal, entretanto, cita-as de maneira errônea, já que a primeira orma normal trata de atributos multivalorados e não de dependência uncional, enquanto que a segunda orma normal trata somente das dependências uncionais parciais. Na atividade quatro, você apontou os problemas que podem surgir se não observarmos as ormas normais: redundância e os dierentes tipos de anomalias, por exemplo, anomalias de inserção que nos orçam a inserir inormações duplicadas e, além disso, obrigam a um esorço maior nas exclusões que devem ser propagadas.

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

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

133

AulA 1 • bAnco de dAdos

MACHADO, N. R.; ABREU, M. Projeto de banco de dados : uma visão prática. São Paulo: Érica, 1996. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. São Paulo: Campus, 2006.

Estudaremos os conceitos relacionados ao armazenamento e à recuperação de inormações. Abordaremos mais precisamente os arquivos de registros e outras ormas de armazenamento. Analisaremos também as técnicas de indexação e hashing usadas para acessar os itens de dados armazenados. Anotações

134

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 2 • bAnco de dAdos

Armazenamento, indexação e hashing

Esperamos que, ao nal desta aula, você seja capaz de: • compreender a maneira como os bancos de dados são armazenados em arquivos; • compreender a orma de acesso aos arquivos que compõem um banco de dados.

Para que os objetivos desta aula sejam atingidos, é importante que você entenda o conceito de armazenamento de dados em arquivos, conheça os tipos de memória. É importante também que domine a noção de tabelas e registros de um banco de dados. Tais assuntos oram abordados largamente em disciplinas como Bancos de Dados (no segundo período), Programação e Computação Básica. Eles são importantes para esta aula pelo ato de estarem relacionados com os conceitos de armazenamento, indexação e hashing, oco de estudo desta aula.

Os bancos de dados geralmente armazenam grandes quantidades de dados que devem ser mantidos por longos períodos de tempo. Durante esse tempo, os dados podem ser acessados e processados repetidas vezes (ELMASRI; NAVATHE, 2005). Atualmente os computadores têm uma capacidade de armazenamento muito superior aos computadores de uma década atrás. Porém a arquitetura da maioria desses computadores, sobretudo os computadores pessoais, ainda se apóia na mesma arquitetura, que az um uso muito grande da chamada memória principal, ou memória RAM. Embora a velocidade de acesso a dados permitida pelos dispositivos de armazenamento atuais seja consideravelmente alta, a orma como os dados estão estruturados infuencia diretamente no desempenho de um sistema de banco de dados. Existem diversas técnicas de armazenamento. Elas apresentam

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

135

AulA 2 • bAnco de dAdos

vantagens e desvantagens que podem se aplicar melhor a um determinado tipo de aplicação. A determinação do tipo de armazenamento a ser utilizado az parte do projeto ísico do banco de dados . Em geral, bancos de dados relacionais são 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 estão sendo acessados em um determinado momento são carregados para a memória principal. Após a sua manipulação, eles são devolvidos para o dispositivo de armazenamento denitivo. Nesta aula, estudaremos algumas técnicas de armazenamento e acesso a dados armazenados em um banco de dados relacional. 2.1 Arquivos de registros Um registro é uma coleção de inormações relacionadas, no qual cada uma das inormações é chamada de campo (ELMASRI; NAVATHE, 2005). Os registros, em geral, descrevem as entidades e seus atributos. Um arquivo de registros é uma seqüência 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 organização mais básico, no qual a inserção de registros pode ser eita, simplesmente, ao nal do arquivo. Nesse tipo de organização, a operação de inserção é muito eciente, já que pode ser eita utilizando ponteiros para as posições dos registros. Por outro lado, uma operação de busca de um registro pode se tornar extremamente dispendiosa em termos de tempo computacional, já que, com os registros desordenados, é necessário que se realize uma busca seqüencial, ou seja, o sistema vê-se obrigado a percorrer todos os registros do arquivo seqüencialmente. No pior caso, chega-se ao nal do arquivo para só então descobrir que a inormação buscada não está armazenada. 2.1.2 Arquivos de registros ordenados

Os arquivos de registros ordenados apresentam algumas vantagens em relação aos desordenados. Uma dessas vantagens reside na busca por elementos: considerando que os registros estão ordenados de acordo com um critério denido por um campo do registro, podemos implementar a busca binária.

136

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 2 • bAnco de dAdos

Por outro lado, as operações de inserção e remoção em arquivos de registros ordenados podem ser muito dispendiosas, já que os registros devem permanecer ordenados sicamente. Se um registro deve ser inserido na metade do arquivo (de acordo com o campo usado como critério de ordenação), todos os registros posteriores a ele devem ser movidos uma posição à rente para que o novo registro seja alocado no arquivo. Assim podemos perceber que essa orma de armazenamento é eciente, mas pode resultar no aparecimento dos mesmos problemas do armazenamento não ordenado. Uma possibilidade de minimizar esses problemas é usar um arquivo de overow . Segundo essa técnica, os novos registros são inseridos em outro arquivo e, nesse arquivo adicional, a leitura e a escrita são eitas de maneira linear. Em intervalos de tempo periódicos (possivelmente nos horários de menor acesso ao banco de dados), eetuam a inserção dos registros do arquivo de overfow no arquivo original. A utilização de arquivos de registros ordenados traz ainda implicações sobre as operações de atualização, pois, caso o campo chave para a ordenação seja um dos valores alterados, será necessário reposicionar o registro atualizado dentro do arquivo. Além disso, em uma busca, somente podemos utilizar a pesquisa binária quando o campo chave para ordenação or um dos campos envolvidos na busca. Você já deve ter percebido as limitações desse modo de armazenamento. Devido a elas, a utilização de arquivos de registros ordenados é rara na implementação de bancos de dados. 2.2 Técnica de hashing Existe outro tipo de organização primária 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 unção de espalhamento. Essa unção irá, a partir do campo escolhido, determinar em qual bloco esse registro deve ser armazenado. Essa mesma unção de espalhamento pode ser usada na busca por um registro. A eciência dessa técnica reside no ato de que a busca será baseada em uma unção que, geralmente, utiliza cálculos matemáticos para agilizar o processamento. É comum encontrarmos implementações de hashing usando vetores, nos quais cada posição do vetor (slot , enda ou bloco) é usada para armazenar um registro. Nesse caso, a unção 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 transormar o campo de hash em um valor inteiro M e aplicar a unção (M) = M mod N, onde N é a quantidade de endas disponíveis e mod é um operador que retorna o resto da divisão do operando à esquerda pelo operando à direita.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

137

AulA 2 • bAnco de dAdos

Devemos considerar que existe a possibilidade de que dois valores dierentes de entrada para a unção de espalhamento resultem em valores de retorno idênticos. Além disso, é comum encontrarmos situações nas quais o número de registros a serem armazenados é muito maior do que a quantidade de blocos disponíveis. Esse cenário é propício para o aparecimento de colisões. Uma colisão acontece quando dois registros são encaminhados para o mesmo bloco. Uma maneira de tratar colisões é utilizar a técnica de encadeamento. De acordo com essa técnica, cada posição do vetor é utilizada como o início de uma lista encadeada. Assim, quando houver uma colisão, os elementos são inseridos nessa lista. Uma implicação da utilização do encadeamento é que, em uma busca, quando or determinado o bloco no qual se encontra o registro, usando a unção de espalhamento, inicia-se uma busca linear, degenerando o desempenho da estrutura de hash. Uma unção de espalhamento considerada ótima é a que nunca retorna valores idênticos para valores de entrada dierentes. Porém essa situação é inviável, já que seria necessário ter tantas posições no vetor quantos registros para armazenamento. Uma unção de espalhamento pode ser considerada boa quando chega próximo do chamado espalhamento uniorme, no qual os registros cam distribuídos de maneira equilibrada nos diversos blocos disponíveis. Um espalhamento é dito uniorme quando a dierença entre o bloco com maior número de elementos e o bloco com menor número de elementos é, no máximo, dois. Outra característica para uma boa unção de espalhamento é que sejam utilizados todos os blocos do vetor. 2.3 Indexação

Um índice para um arquivo de um sistema de banco de dados unciona quase da mesma orma que o índice remissivo de um livro. Se quisermos procurar por um termo em particular, vamos ao nal do livro, procuramos esse termo, e descobriremos a página que o contém. Podemos, então, ir à página e buscar as inormações desejadas (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). A utilização de um índice remissivo somente é útil se ele estiver ordenado, diminuindo o esorço necessário para encontrar um determinado termo. Esse mesmo cenário pode ser aplicado ao armazenamento de registros de um banco de dados.

Para obter acesso aleatório rápido aos registros em um banco de dados, podemos utilizar uma estrutura de índice. Essa estrutura dene um arquivo, contendo dados (índices) associados aos campos de um registro. Cada um desses índices contém um ponteiro para o registro ao qual está associado. Dessa maneira, estando os índices ordenados, podemos utilizar a pesquisa binária e, então, acessar o registro desejado por meio do ponteiro contido no arquivo de índice. 138

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 2 • bAnco de dAdos

O aspecto que descreve a vantagem de utilizar índices reside no ato de que manter apenas uma parte do registro ordenada é computacionalmente mais barato do que manter todo o arquivo de registros ordenado. Além disso, ao contrário dos arquivos de registros ordenados, podemos utilizar vários índices para uma mesma entidade, de modo que cada atributo seja reerenciado por um índice dierente. A Figura 1 a seguir traz uma ilustração desse conceito. Figura 1

Exemplo de indexação.

Observe na Figura 1 que a ordem dos elementos do índice é dierente da ordem dos registros correspondentes. A associação é eita utilizando ponteiros. Um campo que serve de índice é chamado de campo de indexação. Nesse exemplo temos apenas um campo de indexação, porém, como já armado anteriormente, podem existir diversos campos de indexação para um mesmo registro, como ilustra a Figura 2 a seguir. Figura 2

Exemplo de indexação com dois índices.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

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 situações nas quais é útil utilizarmos índices, por exemplo, na denição de atributos que não são chave, porém não devem ser duplicados. É importante ressaltar que, em muitos casos, a própria chave primária do registro é utilizada como campo de indexação. Sabemos que em muitos bancos de dados, os atributos que são chave primária são de tipos numéricos. É comum encontrarmos campos como cod_aluno, cod_carro, cod_ornecedor, como chave primária de tabelas. Isso pode ser justicado pela acilidade dos sistemas computacionais em processar dados numéricos. Entretanto, em uma tabela de ornecedores, campos que constantemente são utilizados como chave para buscas pelos usuários, como o CNPJ, não devem ser duplicados. A denição de um campo como um índice não-duplicável é uma boa opção para o projeto bancos de dados, pois evita a duplicidade e a inconsistência de inormações e, ao mesmo, tempo ornece um mecanismo eciente para busca. 2.4 Outras estruturas para armazenamento primário

Segundo Elmasri e Navathe (2005), outras estruturas de dados podem ser usadas como organizações primárias de arquivo. Por exemplo, se tanto o tamanho do registro quanto o número de registros em um arquivo orem pequenos, alguns SGBDs ornecem a opção de utilizar a estrutura de dados árvore B como orma de organização primária do arquivo de dados. Em geral, qualquer estrutura de dados que possa ser adaptada às características dos dispositivos de disco poderá ser usada como organização de arquivo primária para a disposição de registros no disco. Por exemplo, Alves (2004) descreve a utilização de listas lineares, enquanto Silberchartz, Korth e Sudarshan (2006) descrevem a utilização de árvores binárias. 2.5 Tecnologia RAID

Um grande avanço da tecnologia de armazenamento secundário é representado pelo desenvolvimento do RAID, que signica Redundant Arrays o  Inexpensive Disks , ou vetores redundantes de discos baratos. O principal objetivo do RAID é proporcionar melhoria de desempenho de modo a equiparar as taxas muito dierentes entre os discos e as memórias de microprocessadores (ELMASRI; NAVATHE, 2005). Uma das razões que motivam o desenvolvimento desse padrão é que memórias e processadores caram muito mais rápidos, e os discos magnéticos para armazenamento em massa não acompanharam essa evolução. A capacidade de armazenamento dos discos tem aumentado bastante, porém a sua velocidade de acesso continua deasada em relação a outros dispositivos, de maneira que o acesso ao disco tem se tornado o vilão de muitas aplicações que exigem alto desempenho. 140

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 2 • bAnco de dAdos

A solução proposta pela tecnologia RAID é utilizar um grande   vetor de pequenos discos independentes, atuando como um único disco lógico 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 azê-los parecer um único disco grande e rápido. O stripping de dados melhora o desempenho total de entrada e saída, permite que diversas entradas e saídas possam ser eitas em paralelo, ornecendo, assim, altas taxas de transerência globais (ELMASRI; NAVATHE, 2005). Portanto a utilização de uma técnica de armazenamento e a recuperação de inormações adequada pode se tornar o dierencial de um determinado banco de dados em relação a outros. Aspectos como a quantidade de inormações de um banco de dados, os dispositivos ísicos de armazenamento disponíveis e os recursos de sotware  disponibilizados pelo SGBD nos ajudam a escolher a técnica adequada para um determinado tipo de banco de dados.

Nesta aula, comentamos algumas das principais ormas de armazenamento eletrônico de dados, por exemplo, os arquivos de registros desordenados e os arquivos de registros ordenados. Além disso, apresentamos algumas tecnologias de acesso aos registros de um banco de dados, como a utilização de arquivos de registros, indexação, hashing e a tecnologia RAID. Tais conceitos são muito importantes para o projeto de bancos de dados, já que infuenciam aspectos como a eciência e desempenho.

1. Considerando que a utilização de arquivos de registros ordenados é uma técnica que tem seu potencial undamentado na busca binária dos registros, ordenados de acordo com um dos campos dos registros, verifcamos que há uma limitação nessa técnica quando pesquisas são eitas em relação a outros campos. Que outra técnica, que também utiliza pesquisa binária, permite que vários campos de um registro possam ser utilizados como base para pesquisa binária?

2. A técnica de hashing tem seu potencial undamentado na rapidez para determinar o local de armazenamento de um registro. Entretanto dois registros dierentes podem ser mapeados para um mesmo bloco de registros, o que chamamos de colisão. Uma das ormas de tratamento de colisões é a utilização do encadeamento. Porém, dentro de um grupo de registros que oram mapeados para o mesmo bloco, implementa-se a busca seqüencial, o que az com que se perca grande parte da perormance. O que poderia ser eito para manter o alto desempenho?

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

141

AulA 2 • bAnco de dAdos

3. Em relação à utilização de índices em um banco de dados, assinale a alternativa correta. a) Um campo de indexação deve, sempre, ser um campo não duplicável. b) A utilização de índices é extremamente prejudicial ao banco de dados, pois representa o armazenamento de uma quantidade maior de inormações.

c) A indexação é muito útil, sobretudo por não necessitar da ordenação dos registros armazenados em arquivo, mas apenas do índice. d) A utilização de mais de um campo de indexação é inútil, pois de qualquer maneira, o arquivo de registros não é ordenado. 4. Em relação à tecnologia de RAID e às tabelas de espalhamento, é correto armar que: a) de acordo com a tecnologia RAID, um único disco de grande capacidade é ragmentado logicamente em diversas unidades. b) a tecnologia RAID é uma alternativa para melhorar o desempenho dos sistemas de bancos de dados que utilizam os discos magnéticos, já que não acompanharam a evolução na rapidez de acesso em relação às memórias RAM. c) as tabelas hash, também conhecidas como tabelas de espalhamento, somente têm utilidade em um sistema de banco de dados se contiverem uma unção de espalhamento que seja considerada excelente. d) a principal limitação da técnica de hashing é a incapacidade de tratar colisões.

Os objetivos desta aula são: compreender a maneira como os bancos de dados são armazenados em arquivos e compreender a orma de acesso aos arquivos que compõem um banco de dados. Será que eles oram atingidos? Vamos conerir! Na atividade um você considerou que, embora a técnica de armazenamento em arquivos ordenados seja uma opção melhor em relação aos arquivos de registros desordenados, ela tem problemas, como a inserção e a remoção de registros, além da busca binária ser reém de um único critério, que é justamente o campo que oi utilizado como base para a ordenação dos registros no momento de sua inserção no arquivo. Você apontou que uma alternativa seria utilizar a técnica de indexação. Com essa técnica, diversos índices podem ser criados para uma mesma entidade, não há a necessidade de ordenação dos arquivos, não há custo computacional adicional nas inserções e remoções e, ainda, permite a utilização da busca binária tendo outros campos como chave para pesquisa. 142

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 2 • bAnco de dAdos

Na atividade dois, você considerou que o encadeamento az com que cada bloco usado para receber os elementos seja o início de uma lista encadeada. Uma alternativa seria deixar essas listas ordenadas e eetuar a pesquisa binária. Essa é uma opção de projeto que tem certo custo de implantação, mas permite diminuir o problema causado pelas colisões. Na atividade três, a resposta é a alternativa (c). A alternativa (a) está incorreta, pois não há restrições para a criação 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) também está incorreta, pois a utilização de mais de um campo de indexação permite que se tenha mais uma opção para busca binária (mais eciente) para uma determinada entidade em um sistema de banco de dados. Na atividade quatro, a alternativa correta é (b). A alternativa (a) é incorreta pelo ato de que a tecnologia RAID prevê a utilização de vários discos ísicos, agindo como um disco lógico, e não o contrário, como armado. A alternativa (c) está errada, já que uma unção de espalhamento ótima sugere um bloco para cada registro, situação que pode ser inviável em um banco de dados com grande volume de inormações. Finalmente, a alternativa (d) também está incorreta pelo ato de que existem meios de lidar com as colisões em uma tabela de espalhamento.

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

Estudaremos as transações, que são muito importantes para os sistemas de bancos de dados. Essa importância se dá, inclusive, pela possibilidade de tratar de maneira mais eciente às operações eetuadas sobre um banco de dados. O estudo das transações inclui as suas principais propriedades, que são a atomicidade, consistência, isolamento e durabilidade. Até lá! Anotações

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

143

AulA 2 • bAnco de dAdos

144

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 3 • bAnco de dAdos

Transações

Esperamos que, ao nal desta aula, você seja capaz de: • entender o que é uma transação e quais as suas vantagens; • entender as propriedades de uma transação e seus estados.

Para o entendimento desta aula, é importante que você conheça os conceitos de monoprocessamento, multiprocessamento e processamento paralelo para uma melhor compreensão do tratamento às transações em um SGBD que garanta a integridade e a consistência dos dados quanto das operações realizadas pelos sistemas dos usuários em um banco de dados. Também é undamental o conhecimento básico sobre o que é um banco de dados e um Sistema Gerenciador de Banco de Dados – SGBD –, bem como ainda dos comandos básicos da linguagem SQL utilizada por diversos SGBDs. Todos esses conteúdos oram vistos nas aulas da disciplina de Bancos de Dados, no segundo período.

Grande parte dos vários processos existentes no mundo real, tais como transerências de valores em instituições bancárias, compras em comércio eletrônico e outros serviços, utiliza transações que são um atributo ou um artiício comum em bancos de dados comerciais. Vamos estudar, nesta aula, a importância das transações dentro de um SGBD, bem como suas propriedades e seus estados. 3.1 Denindo transações

Date (2004, p. 63) arma que transação é uma unidade lógica de trabalho, envolvendo diversas operações de bancos de dados. Podemos dizer, ainda, que

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

145

AulA 3 • bAnco de dAdos

uma transação é “todo e qualquer comando que altera o estado do banco de dados”, ou seja, transação é a unidade lógica de processamento de um SGBD, constituída de um conjunto de operações (INSERT, UPDATE, DELETE, etc.), cujo objetivo é transormar um BD de um estado consistente para outro estado consistente, mesmo que nos passos intermediários (operações) o sistema permaneça temporariamente inconsistente. A Figura 1 ilustra essa situação. Figura 1

Exemplo de transação.

O usuário deve ser capaz de inormar ao sistema quando dierentes operações azem parte de uma transação. Basicamente, a transação começa quando uma operação BEGIN é executada e termina quando uma operação chamada COMMIT ou ROLLBACK correspondente é executada. Dessa orma, podemos perceber que uma transação é ormada caracteristicamente por esses comandos (ELMASRI; NAVATHE, 2005). A Figura 2 contém uma representação de uma transação. Figura 2

Estrutura sql de uma transação. ... BEGIN OPERACAO 1;

OPERACAO 2;

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

146

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 3 • bAnco de dAdos

Segundo Date (2004), podemos consistir o conceito de transação com um exemplo clássico que é utilizado quando precisamos iniciar esse assunto em sala de aula, que é uma explicação análoga a uma transerência bancária. Em meio a um processo de transerência de valor entre contas, temos alguns comandos SQL que são executados todos de uma vez, ormando a tal unidade lógica que, por sua vez, envolve diversas operações de bancos de dados, tais como INSERT e UPDATE. Transações também podem conter DELETE e SELECT, mas no caso da transerência, utilizaremos somente o UPDATE. Digamos que nossa agência tenha dois correntistas,  A  e B e, em um belo dia, A resolve azer uma transerência de R$ 50,00 para B. Essa transação será eita pela Internet , por meio de um sistema de internet banking, então,  A  acessará a sua conta e completará a operação. Do lado servidor, o banco de dados recebe o valor e a conta de destino, tal valor é subtraído da conta de origem e adicionado na conta de destino. Nesse momento, há uma conerência por parte do SGBD – tudo correu bem –, então a transação é nalizada com sucesso (ELMASRI; NAVATHE, 2005). 3.2 Importância das transações Segundo Ramakrishnan e Gehrke (2003), se tomarmos como base o conceito de que transações são unidades lógicas de trabalho em uma aplicação, e que a base de dados está em um estado consistente antes e depois de uma transação, podemos armar que as transações desempenham um papel importante em um SGBD uma vez que: •

•

•

uncionam como um mecanismo que garante que toda transação iniciada termina com sucesso ou é deseita; transações de dierentes usuários que envolvem dados compartilhados são executadas em seqüência; transações controlam melhor a concorrência de operações e a reconstrução dos dados em caso de alha.

3.3 Propriedades ACID Você compreendeu que uma transação é uma seqüência de operações executadas como uma única unidade lógica de trabalho. Uma unidade lógica de trabalho deve mostrar quatro propriedades, designadas pelas iniciais ACID (atomicidade, consistência, isolamento e durabilidade), para que seja qualicada como uma transação. Vejamos agora, segundo Date (2004), o que signica cada uma delas. 3.3.1 Atomicidade

Uma transação deve ser uma unidade atômica de trabalho: ou todas as suas modicações de dados são executadas ou nenhuma delas é executada,

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

147

AulA 3 • bAnco de dAdos

ou seja, você utiliza transação quando determinada ação envolve atualização de mais de uma tabela do banco. E para garantir que todas as atualizações sejam realizadas, utiliza transação. Se uma ação pode ser separada em ações menores, então temos duas (ou mais) transações, ou seja, se uma ou mais ações podem alhar sem deixar o banco de dados em estado inconsistente, essas ações não devem ser parte da mesma transação. 3.3.2 Consistência

A execução de uma transação deve levar ao banco de dados de um estado consistente a outro também consistente, ou seja, quando concluída, uma transação deve deixar todos os dados em um estado consistente. Uma transação é consistente se não violar a integridade do banco de dados. Se a transação tiver êxito ou alhar, ela deve deixar o banco de dados em um estado consistente. Se uma transação alhar, ela precisa desazer todas as alterações temporárias e deixar o banco de dados no estado em que ele estava antes que a transação iniciou. 3.3.3 Isolamento

Uma transação não deve tornar suas atualizações visíveis a outras transações antes do seu m, ou seja, modicações eitas por transações simultâneas devem ser isoladas das modicações eitas por qualquer outra transação simultânea. Uma transação que debita uma conta e credita outra deve ser totalmente transparente. Quando isso é eito, a transação precisa atualizar o banco de dados de uma só vez. Por exemplo, se um usuário solicitar o saldo de uma conta e ela está sorendo uma transação, o banco de dados só deve retornar o valor do saldo depois que completar a atualização. Dessa orma, durante a transação algumas linhas são bloqueadas. 3.3.4 Durabilidade

Depois que uma transação tiver sido concluída, seus eeitos cam permanentemente no sistema, ou seja, após o término de uma transação, suas atualizações não podem ser perdidas por causa de alhas uturas. As modicações persistem até mesmo no caso de uma queda do sistema. Se todas as ações orem realizadas com sucesso, não signica que houve sucesso na transação, pois ela precisa gravar os dados de volta ao disco. Caso ocorra uma alha no disco, a transação não é válida. Então antes que uma transação seja completada deve vericar se as alterações oram gravadas com sucesso antes de terminar. 3.4 Estados de uma transação Segundo Ramakrishnan e Gehrke (2003), uma transação é sempre monitorada pelo SGBD quanto ao seu estado. Que operações já ez? Concluiu suas operações? Deve abortar? São algumas perguntas que o SGBD realiza para gerenciar os estados de uma transação. 148

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 3 • bAnco de dAdos

Os estados de uma transação podem ser: ativa, em processo de eetivação, eetivada, em processo de aborto e concluída. Uma transação pode se encontrar em dierentes estados. O grao apresentado na Figura 3 ilustra as possibilidades de transição de estados. Figura 3

Transição de estados de uma transação.

Alves (2004) descreve os estados de uma transação da seguinte maneira: ativa: é o estado inicial de toda transação selecionada para execução. • Ela permanece nesse estado enquanto estiver em execução; em processo de eetivação : entra nesse estado após executar sua última • operação (solicitação de COMMIT). Neste momento, o SGBD precisa garantir que as suas atualizações sejam eetivadas com sucesso (não soram alhas); em processo de aborto : entra nesse estado se não puder prosseguir • sua execução. Pode ainda passar para esse estado enquanto ativa ou em processo de eetivação. Suas ações já realizadas devem ser deseitas (ROLLBACK); eetivada: entra nesse estado após o SGBD conrmar que todas as modi• cações da transação estão garantidas no banco de dados (COMMIT OK ), como, por exemplo, a gravação em Log, descarga de todos os buers em disco, entre outros; concluída: estado nal de uma transação, ele indica uma transação que • deixa o sistema. As inormações das transações mantidas em catálogo podem ser excluídas (operações eitas, dados manipulados, buers utilizados, entre outros). Caso a transação não tenha sido concluída com sucesso, ela pode ser reiniciada automaticamente.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

149

AulA 3 • bAnco de dAdos

Portanto, diante da apresentação das propriedades ACID e dos estados de uma transição, podemos perceber como a utilização do mecanismo de transações pode auxiliar na construção de bancos de dados consistente e conável.

Nesta aula, você aprendeu que uma transação é a unidade lógica de processamento de um SGBD, constituída de um conjunto de operações. O objetivo dela é transormar um BD de um estado consistente para outro estado consistente, mesmo que nos passos intermediários o sistema permaneça temporariamente inconsistente. Você entendeu também a importância das transações em um SGBD, pois elas garantem que toda transação (operações) iniciada termine com sucesso ou seja deseita. As transações também controlam melhor a concorrência de operações e a reconstrução dos dados em caso de alha. Transações de dierentes usuários que envolvem dados compartilhados são executadas em seqüência. Compreendeu também que, para ser qualicada como uma transação, ela deve mostrar quatro propriedades, designadas pelas iniciais  ACID, que são as propriedades de atomicidade, consistência, isolamento e durabilidade. Você pôde compreender que uma transação é sempre monitorada pelo SGBD quanto ao seu estado, respeitando sempre um grao de transição de estados. Finalmente, viu que os estados de uma transação podem ser: ativa, em processo de eetivação, eetivada, em processo de aborto e concluída.

1. A partir do exposto na aula, como você dene transação? 2. Leia e analise atentamente as seguintes armativas sobre as propriedades de uma transação. I. O princípio de atomicidade é o princípio de tudo ou nada, ou seja, ou todas as operações são eetivadas com sucesso em um banco de dados ou nenhuma delas se eetiva. Isso é realizado para preservar a integridade do banco de dados. II. A propriedade de isolamento dene que cada transação deve ser isolada dos eeitos da execução concorrente de outras transações. III. A propriedade que dene que toda transação que or nalizada de orma bem-sucedida deve persistir seus resultados em banco mesmo na presença de alhas no sistema é a propriedade de consistência. 150

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 3 • bAnco de dAdos

Assinale a alternativa correta. a) Somente a armativa I está incorreta. b) Somente as armativas I e II estão corretas. c) Somente as armativas II e III estão incorretas. d) Todas as armativas estão corretas. 3. Para você, qual é a importância das transações em um SGBD? 4. Leia atentamente as armativas a seguir sobre os estados de uma transação. I. Ativo é o estado inicial da transação. Ela permanece nesse estado enquanto estiver em execução. II. Concluída é o estado em que o SGBD conrma que todas as modicações da transação estão garantidas no banco de dados. III. Eetivada é o estado nal de uma transação, ele indica uma transação que deixa o sistema. Caso a transação não tenha sido concluída com sucesso, ela pode ser reiniciada automaticamente. IV. O estado processo de aborto é o estado em que a transação não pode prosseguir sua execução. Assinale a alternativa correta. a) As armativas II e III estão incorretas. b) As armativas I e III estão incorretas. c) Somente a armativa IV está correta. d) As armativas I e IV estão incorretas.

Na atividade um, você armou que uma transação é a unidade lógica de trabalho, constituída de um conjunto de operações. Seu objetivo é transormar um BD de um estado consistente para outro estado consistente, mesmo que nos passos intermediários o sistema permaneça temporariamente inconsistente. Se você conseguiu expor dessa maneira, parabéns! Você atingiu o objetivo de entender o que é uma transação e quais as suas vantagens. Caso não tenha conseguido, sugiro que volte ao início desta aula e revise cuidadosamente o conteúdo sobre transações. Na atividade dois, a resposta correta é a alternativa (b). Se sua resposta oi essa, parabéns, você atingiu nosso objetivo de entender as propriedades de uma transação e seus estados. A armativa (III) está incorreta, pois a propriedade de

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

151

AulA 3 • bAnco de dAdos

consistência dene que cada transação executada isoladamente deve preservar a consistência do banco de dados, e a propriedade de durabilidade dene que toda transação que or nalizada de orma bem-sucedida deve persistir seus resultados em banco mesmo na presença de alhas no sistema. Caso você tenha optado por outra alternativa, sugiro que reveja o conteúdo sobre as propriedades das transações. Na atividade três, você expôs que as transações desempenham um papel importante em um SGBD porque garantem que toda transação (operações) iniciada termine com sucesso ou então seja deseita. Se sua resposta trouxe essas observações sobre a importância das transações, parabéns! Você atingiu nosso objetivo de entender o que é uma transação e quais as suas vantagens. Caso não tenha conseguido responder dessa orma, sugiro que você volte ao conteúdo desta aula e reveja atentamente a denição e importância das transações em um SGBD. Na atividade quatro, a resposta correta é a alternativa (a). Se você optou por essa resposta, parabéns! Você atingiu nosso objetivo de entender as propriedades de uma transação e seus estados. As armativas (II) e (III) estão incorretas, pois o estado eetivado é o estado em que o SGBD conrma que todas as modicações da transação estão garantidas no banco de dados, e concluída é o estado nal de uma transação, ele indica uma transação que deixa o sistema. Caso a transação não tenha sido concluída com sucesso, ela pode ser reiniciada automaticamente. Caso sua resposta tenha sido dierente, sugiro que você volte ao conteúdo sobre os estados de uma transação e observe detalhadamente as características de cada estado.

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

Estudaremos sobre os mecanismos de controle de concorrência. Esses mecanismos são muito importantes, sobretudo em ambientes nos quais mais de uma transação pode ser eetuada no mesmo instante em um banco de dados. Até lá! 152

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 4 • bAnco de dAdos

Controle de concorrência

Esperamos que, ao nal desta aula, você seja capaz de: • compreender o porquê da utilização da concorrência nas transações; identicar os principais problemas e técnicas para o controle de • concorrência.

Para uma melhor compreensão desta aula, é importante que os conceitos relacionados a transações sobre um banco de dados tenham sido assimilados, bem como os comandos da linguagem procedural SQL, necessários para a execução de uma transação. Esses conteúdos oram apresentados na aula três deste caderno. Entendendo os conceitos relativos às transações, podemos compreender também os mecanismos de controle de concorrência, que é o assunto da aula.

Agora trataremos de um tema muito importante para os SGBDs em geral: a concorrência. Essa importância se dá visto que um SGBD geralmente permite que sejam realizadas diversas transações ao mesmo tempo. Assim é necessário que sejam adotados alguns mecanismos para garantir que transações concorrentes não interram uma nas outras. Assim serão consideradas, nesta aula, os principais problemas de concorrência, além das principais técnicas utilizadas para solucionar os problemas considerados. 4.1 Concorrência O conceito de controle de concorrência é de extrema importância para os SGBDs, visto que algumas propriedades devem ser respeitadas e, entre elas, deve se considerar o isolamento de transações que serão executadas concorrentemente. A maioria das técnicas utilizadas para esse controle tenta assegurar a

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

153

AulA 4 • bAnco de dAdos

serialização da execução das transações. Para isto, utiliza um conjunto de regras, também 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 transações sobre ele executadas. 4.2 Problemas de concorrência Existem três problemas cruciais que os mecanismos de controle de concorrência de um SGBD devem tratar: • atualização perdida (lost update ) • dependência sem commit  • análise inconsistente Esses três problemas podem ocorrer mesmo que a transação esteja correta respeitando as propriedades de uma transação. A seguir, vamos entender o que ocorre em cada um dos problemas citados. 4.2.1 Atualização perdida (lost update)

A melhor maneira de entendermos os problemas citados anteriormente é aplicando exemplos. Então vamos ao primeiro exemplo, que apresentará a atualização perdida. A Tabela 1 apresenta duas transações A e B, que, em momentos distintos, acessam uma tupla de dados ou como também pode ser expresso um item de dados. Tabela 1

Problema de atualização perdida.

TRANSAçãO A – ler (t) – alterar(t) – –

TEMPO | T1 T2 T3 T4 ↓

TRANSAçãO B – – ler(t) – alterar(t) –

Fonte: Date (2003, p. 400).

Observando a Tabela 1, podemos notar que a transação A acessou uma tupla t e leu o seu valor em um tempo T1; a transação B acessou a mesma tupla e também realizou a leitura de seu valor em um tempo T2; a transação A realizou uma alteração no valor da tupla t em um tempo T3; e nalizando, a transação B atualizou o valor da mesma t no tempo T4. Porém essa atualização na tupla é realizada com base em seu acesso ao valor de t no tempo T2, perdendo, assim, a atualização realizada pela transação A no tempo T3. Resumidamente, o problema da atualização perdida consiste no ato que uma transação B em algum momento sobrescreve uma atualização realizada por uma transação A, com valores muitas vezes incorretos devido a um processo de concorrência inadequado. 154

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 4 • bAnco de dAdos

4.2.2 Dependência sem commit

Assim como realizado na seção anterior, vamos a um exemplo para uma melhor compreensão sobre o problema da dependência sem commit . Observe a Tabela 2, na qual é apresentada a seqüencia de transações e suas operações para descrever o problema. Tabela 2

Problema da dependência sem commit com leitura de valores.

TRANSAçãO A – – ler(t) – – –

TEMPO | T1 T2 T3 T4 ↓

TRANSAçãO B – alterar(t) – rollback – –

Fonte: Date (2003, p. 400).

Como pode ser observado na Tabela 2, o problema da dependência sem commit  reside na inconsistência dos dados devido a uma transação não ser completada com sucesso. Note na tabela, que em um tempo T1, a transação B altera os valores do item de dados t; em seguida, a transação A, no tempo T2, lê os valores de t; porém a transação B realiza um comando de rollback , ou seja, a alteração não é completada. Assim o valor lido pela transação A, no tempo T2, é incoerente, passando valores inconsistentes devido à incompletude na transação B que ainda não havia sido nalizada. Outra vertente desse problema e que é considerada mais séria, consiste em transações que, ao invés de somente realiza a leitura, realiza operações de escrita, sem que outra transação iniciada anteriormente tenha sido completada, como é demonstrado na Tabela 3. Tabela 3

Problema da dependência sem commit com alteração de valores.

TRANSAçãO A – – alterar(t) – – –

TEMPO | T1 T2 T3 T4 ↓

TRANSAçãO B – alterar(t) – rollback – –

Fonte: Date (2003, p. 400).

Note que o problema é o mesmo apresentado na Tabela 2. Porém, ao invés de um acesso de leitura sobre a tupla t, é realizada uma operação de escrita, o que pode tornar tudo mais complexo, já que esses dados passam a estar incoerentes e persistentes no banco de dados.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

155

AulA 4 • bAnco de dAdos

4.2.3 Análise inconsistente

O último problema a ser apresentado dos citados no início desta aula é a análise inconsistente. Ele, sob um ponto de vista mais supercial, é semelhante ao problema apresentado na seção anterior, já que resulta na leitura inconsistente de valores por uma transação. A dierença é que a leitura ocorre sem que tenham ocorrido problemas com a transação concorrente, ou seja, as operações da transação são nalizadas usando o comando commit . Para exemplicar esse problema, imaginemos um banco que tem três contas correntes, contendo respectivamente os valores 40, 50 e 30, sobre as quais duas transações acontecem simultaneamente. A transação A realizará a soma dos valores das contas e a transação B realizará operações de atualização no banco de maneira concorrente. A Tabela 4 demonstra a seqüência de eventos. Tabela 4

Problema da análise inconsistente.

TRANSAçãO A – ler conta1(40) soma = 40 ler conta2 (50) soma = 90

– ler conta3 (20) soma = 110 –

TEMPO |

TRANSAçãO B –

T1



T2



T3

altera conta3 30 → 20 altera conta1 40 → 50 commit

T4







Fonte: Date (2003, p. 401).

É importante observar que o resultado nal da soma realizada na transação A é 110, enquanto o resultado correto seria 120. Esse problema se deve ao ato de que, enquanto a transação A, nos tempos T1 e T2, lê e soma os valores das contas conta1 e conta2, em um tempo T3, a transação B realiza uma atualização nos valores das contas conta3 e conta1, sendo nalizada com sucesso por meio do comando commit . Porém, no tempo T4, a transação A realiza a soma do valor contido na conta3, que oi alterado no tempo T3 pela transação B, causando o problema de inconsistência no valor nal da soma. Assim podemos dizer que o problema de análise inconsistente geralmente acontece devido a diversos acessos de leitura a linhas de maneira que, a cada acesso, é lido um novo valor gerado devido à concorrência com outras transações, causando a inconsistência no valor nal. 156

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 4 • bAnco de dAdos

4.3 Técnicas de controle de concorrência Para sanar os problemas mencionados anteriormente, são utilizadas técnicas, também denominadas protocolos, para tratar do controle de concorrência. Nesta disciplina, serão consideradas apenas escalas ditas serializáveis, que podem ser classicadas em técnicas pessimistas e otimistas. Elmasri e Navathe (2005) citam a seguinte classicação: a) pessimista •

bloqueio

•

timestamp (marcas de tempo)

b) otimista •

validação

As técnicas pessimistas presumem que sempre ocorrerá intererência entre as transações e, então, buscam sempre garantir a serialização enquanto uma transação estiver ocorrendo. Já as técnicas otimistas supõem que raramente ocorrerá a intererência entre as transações e somente verifcam o aspecto da serialização ao fnal.

Vamos à análise dos protocolos de controle de concorrência. 4.3.1 Bloqueio

Um protocolo consiste em uma padronização de procedimentos utilizados para a execução de uma tarea. Logo o que ocorre em todos os protocolos nada mais é que uma denição de regras a serem seguidas. O bloqueio é certamente o mais utilizado entre os protocolos de controle de concorrência pelos bancos de dados disponíveis no mercado (ELMASRI; NAVATHE, 2005). Diversos modos de bloqueio podem ser utilizados para trabalhar com transações concorrentes, porém iremos assumir apenas os dois modos mais diundidos e que são mencionados por Silberschatz, Korth e Sudarshan (2006). Vejamos quais são esses dois modos. a) Compartilhado: se uma transação obtiver um bloqueio compartilhado (indicado por S, do inglês Share ) sobre um dado, então poderá ler, mas não escrever sobre o item bloqueado.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

157

AulA 4 • bAnco de dAdos

b) Exclusivo: se uma transação obtiver um bloqueio do tipo exclusivo (indicado por X , do inglês exclusive ) sobre um dado, então ela poderá ler e

escrever sobre o item de dados bloqueado. Cada transação deve, no momento de execução, solicitar o bloqueio observando o modo mais apropriado sobre os dados a serem utilizados. O que ocorre é que a transação lança uma solicitação ao gerenciador de controle de concorrência, que só autoriza o seu prosseguimento, após conceder (grants ) o bloqueio sobre os dados a serem manipulados. Entender a compatibilidade de bloqueios é de extrema importância, pois, por meio dela são baseadas as atividades permitidas ou não em um controle de concorrência. Observe a Tabela 5, na qual é apresentada a matriz de compatibilidade. Tabela 5

Matriz de compatibilidade de bloqueio.

TRANSAçõES Lock  S Lock  X 

Lock  S

Lock  X

Verdadeiro Falso

Falso Falso

Vamos entender melhor a matriz de compatibilidade apresentada. Nos eixos dos comandos de bloqueio lock , estão dispostos valores que determinam se duas transações ocorrem no modo compartilhado ou exclusivo. Note que apenas no caso em que duas ou mais transações estiverem bloqueando um mesmo item de dados Q no modo compartilhado (lock  S), elas poderão ser executadas ao mesmo tempo. O modo compartilhado permite apenas ler dados, logo a leitura de ambas as transações ao mesmo tempo não aetará em momento algum nos dados que ambas estão acessando. Nas demais situações expostas pela matriz de compatibilidade, sempre que uma transação solicitar o bloqueio, uma deve aguardar a outra ser concluída para ter acesso aos dados. A liberação de recursos ocorre com a utilização do comando unlock . Vamos a um exemplo para entender a técnica de bloqueio em transações. Relembrando o exemplo apresentado anteriormente sobre contas correntes, duas transações azem acesso às contas, consultam e alteram valores, bloqueiam os dados quando necessário. Essas transações são apresentadas na Tabela 6. Tabela 6

158

Controle de concorrência com bloqueios.

TRANSAçãO A

TEMPO

TRANSAçãO B

– lock X (conta1)

| T1

– –



T2



lock X (conta2)

T3

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

GERENCIAMENTO DE CONTROLE DE CONCORRêNCIA – – grant 

X(conta1,Transação A)

AulA 4 • bAnco de dAdos

GERENCIAMENTO DE CONTROLE DE CONCORRêNCIA

TRANSAçãO A

TEMPO

TRANSAçãO B



T4



commit 

T5





aux1 = ler(conta1) unlock (conta1) unlock (conta2) –

T6

lock S (conta2)





T7



grant 

T8

aux3 = ler(conta2)





T9



grant 

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

T10





altera conta1 40 → 30 altera conta2 50 → 60

– lock S (conta2)

grant 

X(conta2,Transação A)

S(conta2,Transação B)

S(conta2,Transação A)

unlock (conta2)



– –

Ok, pessoal, vamos à explicação. Nesse exemplo, é realizada a apresentação da soma dos valores da conta1 e conta2, além de realizar a transerência da conta1 para a conta2. Do tempo T1 ao T4, a transação A solicita o bloqueio exclusivo da conta1 e conta2 que aguarda a liberação do gerenciador do controle de concorrência que acontece nos tempos T2 e T4, é uma permissão com exclusividade. No tempo T5, a transação A eetua uma alteração no valor da conta1 e na conta2, realiza a persistência dos valores por meio da instrução commit  e emite um aviso ao gerenciador de concorrência que libera a conta1 e conta2 para outras transações, por meio da instrução unlock . Note que, do tempo T6 a T10, as duas transações, A e B, realizam acesso compartilhado aos dados autorizados pelo gerenciador de controle de concorrência por meio dos grants, imprimindo a soma dos valores das contas. É importante lembrar que são realizadas apenas atividades de leitura aos valores nas contas no reerido intervalo de tempo (T6 a T 10). Com isso, podem ser controlados os acessos e, assim, garantir o isolamento das transações. Porém, com o bloqueio, surge um novo problema, denominado impasse ou deadlock . Na Tabela 7, a transação A solicita o bloqueio da conta2,

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

159

AulA 4 • bAnco de dAdos

realiza a leitura e a atualização dos valores no tempo T1, porém não realiza a liberação do recurso conta2. No tempo T2, a transação B solicita o bloqueio compartilhado da conta1, lê os valores e, então, solicita o bloqueio da conta2, criando, assim, um impasse com a transação A, já que está não liberou os dados da conta2. Para tornar o processo mais problemático, a transação A ainda solicita o bloqueio da conta1 de maneira exclusiva e, como pode ser observado, ainda está bloqueada para a transação B. Tabela 7

Impasse ou deadlock entre transações.

TRANSAçãO A – lock X(conta2) ler conta2 (50) altera conta2 60 -> 50

TEMPO |

TRANSAçãO B –

T1



commit  lock S(conta1)



T2

lock X(conta1)

T3





ler conta1 lock S(conta2) – –

Quando o banco se depara com uma situação de deadlock , o sistema deve se encarregar de reverter uma das transações para que a outra prossiga. Logo, quando uma transação é revertida, os itens de dados bloqueados para essa transação são desbloqueados. Silberschatz, Korth e Sudarshan (2006) mencionam que o deadlock é um mal necessário, evitando estados inconsistentes.

4.3.2 Timestamp Timestamp é um método que determina a ordem de serialização das transações

ordenando-as antes de sua execução. O método mais comum para isso consiste na ordenação por timestamp (marcas de tempo) representado como TS. Nesse modelo de ordenação, é atribuído um valor de timestamp pelo banco de dados antes que a transação se inicie. Uma transação posterior sempre terá um times-  tamp maior que o da transação anterior. Segundo Silberschatz, Korth e Sudarshan (2006), dois modos são utilizados para implementar esse esquema. Vejamos. • Utilização do valor do clock (hora do sistema) como timestamp de uma transação. 160

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 4 • bAnco de dAdos

Utilização de um contador lógico para denir o timestamp de uma transação. É por meio desses timestamp denidos para as transações que é assegurada a ordem de serialização das transações. Logo, se TS(A) < TS(B), o sistema deve garantir que o esquema de execução montado privilegie a transação A em detrimento de B. Conorme Elmasri e Navathe (2005), para garantir essa ordem, são associados a cada item de dados dois valores de timestamp: Write _TS(Q): que indica o maior timestamp de qualquer transação que • executou uma escrita com sucesso; Read _TS(Q): que indica o maior timestamp de qualquer transação que • executou uma leitura com sucesso. Esses valores são atualizados a cada execução de instruções de leitura ou escrita em uma transação. Assim o protocolo de ordenação de timestamp deve garantir que operações confitantes sejam executadas segundo a ordem de cada valor de timestamp denido para cada operação sobre o item de dados Q de uma transação. Esse protocolo, conorme Elmasri e Navathe (2005), trabalha da seguinte orma: a) suponha que a transação A realize uma leitura(Q): • Se TS(A) < Read_TS(Q), então • existe outra operação sobre Q com timestamp maior e a transação A é revertida. Senão • • a operação de leitura é executada e Read_TS(Q) é denido como o novo maior timestamp de leitura. b) suponha que a transação A realize uma escrita(Q): • Se TS(A) < Read_TS(Q) ou TS(A) < Write_TS(Q) então, • existe outra operação de leitura ou escrita com timestamp maior e a transação é revertida Senão • • o sistema executa a operação de escrita e dene Write_TS(Q) como o novo maior timestamp para escrita. Quando uma transação é revertida pelo controle de concorrência, um novo valor de timestamp é denido. Um importante detalhe a ser considerado sobre a técnica de timestamp é que por não utiliza bloqueio, não ocorrem deadlocks. Porém esse protocolo abre espaço para o problema de estagnação de transações longas, se uma seqüência de outras transações curtas em confito causarem o reinício da transação longa. •

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

161

AulA 4 • bAnco de dAdos

4.3.3 Validação

A validação consiste no último protocolo de controle de concorrência a ser analisado nesta aula. Essa técnica consiste em um esquema de monitoramento, ou seja, uma visão otimista, pois nenhuma vericação é realizada durante a execução das transações. Com isso, tem-se um ganho considerável sobre o overhead  criado por um controle de concorrência pessimista. Nessa técnica, as operações de uma transação são realizadas por cópias locais dos itens de dados. Para tanto, uma transação tem duas ou três ases dependendo se elas realizam a leitura ou escrita respectivamente. Silberschatz, Korth e Sudarshan (2006) apresentam essas ases. Vejamos. •

Fase de leitura: a transação A lê os dados e os atualiza em cópias locais.

•

Fase de validação: nessa ase, ocorre a análise da serialização dos

•

confitos caso as alterações nas cópias sejam eetivadas. Fase de escrita: se a ase de validação ocorrer sem problemas, aplicam-se as atualizações no banco, caso contrário a transação é revertida.

Para a realização dos testes de validação, devem ser denidos três times-  tamps dierentes para cada operação de uma transação. Conorme Silberschatz, Korth e Sudarshan (2006), são eles: •

start (transação): momento em que a transação oi iniciada;

•

validation (transação): momento em que a transação terminou a ase de

leitura e iniciou a ase de validação; •

fnish (transação): momento em que se termina a ase de escrita.

O teste de validação para uma transação A e B exige que TS(A) seja menor que TS(B). Segundo Elmasri e Navathe (2005), uma das condições a seguir necessita ser mantida. •

Finish(A) < Start (B): a transação A termina a execução de suas opera-

ções antes da transação B; •

O conjunto de dados escritos por A não tem interseção com os dados lidos por B, e A completa sua ase de escrita antes que B inicie sua ase de validação.

O esquema de validação protege contra rollbacks em cascata, pois o processo de escrita real somente ocorre depois que a transação tenha sido validada (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). A partir do que vimos nesta aula, podemos concluir que a aplicação de mecanismos de controle de concorrência é muito importante quando existe a possibilidade de acessos simultâneos a um banco de dados. Essa situação é muito comum nas organizações de maneira geral, e a tendência é que os bancos de dados com 162

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 4 • bAnco de dAdos

acessos concorrentes sejam cada vez mais presentes, sobretudo pelo crescimento dos sistemas de inormação cuja plataorma é o ambiente da Internet .

Nesta aula, apresentamos os conceitos básicos relacionados ao controle de concorrência, que é um mecanismo utilizado para garantir as propriedades das transações e a consistência do banco de dados. Vimos os três tipos de problemas que podem ocorrer em um SGBD devido à alta do controle de concorrência. Consideramos as principais técnicas, ou como também são conhecidas, protocolos para o controle de concorrência: bloqueio, timestamp e validação. Bloqueios podem ser compartilhados, quando o item de dados é utilizado por outras transações (normalmente em operações somente de leitura), ou exclusivos (geralmente usados em operações de escrita). A técnica de timestamp defne timestamp  defne a serialização das transações em intervalos de tempo. Enquanto a  validação defne ases para as transações de maneira que as ases de escrita não se sobreponham, mantendo a consistência.

1. Três problemas que podem ocorrer devido à alta de controle control e de concorrência entre transações são: a) isolamento, durabilidade e integridade; b) antasmas, isolamento e atualização perdida; c) atualização perdida, dependência sem commit e análise inconsistente; d) deadlock , integridade e análise inconsistente. 2. As principais técnicas ou protocolos utilizados para o controle de concorrência entre transações são: a) bloqueio em duas duas ases, ases, gerenciamento gerenciamento de concorrência concorrência e transação; b) bloqueio, timestamp e validação; c) start , validação e nish; d) read_TS(), Write_TS e timestamp. 3. O bloqueio bloqueio consiste na técnica mais utilizada utilizada pelos SGBDs para para o controle de de concorrência. Uma das suas desvantagens consiste no deadlock ou também conhecido como impasse. Descreva o que consiste o deadlock  e como o banco deve proceder caso uma situação de impasse seja encontrada. 4. Explique o uncionamento uncionamento do protocolo protocolo de de timestamp, considerando duas operações concorrentes A e B sobre um mesmo item i tem de dados Q.

unitins • Análise e desenvolvimento desenvolvimento de sistemAs • 3º PeRÍodo

163

AulA 4 • bAnco de dAdos

Na atividade um, a alternativa correta é a letra l etra (c), visto que conorme apresentado em aula, os principais problemas de concorrência consistem na atualização perdida, dependência sem commit e análise inconsistente.  Já na atividade dois, a opção correta é a alternativa (b), já que as principais técnicas ou protocolos utilizados para a gerência do controle de concorrência consistem no bloqueio, timestamp e validação conorme oi considerado nesta aula. Na atividade três, você expôs que o deadlock é um problema gerado pelo controle de concorrência que utilize o bloqueio, visto que duas ou mais transações podem tentar azer uso de um mesmo item de dados, criando, assim, um impasse. Quando um SGBD se depara com tal situação, deve reverter uma das transações, dando liberdade para que a outra prossiga. Na atividade quatro, você colocou que o timestamp é um valor que é atribuído a uma transação com o intuito intui to de organizar a ordem de execução das transações. Existem duas ormas para se atribuir um timestamp a uma transação: por meio do clock do computador ou de contadores lógicos. Após denido o times-  tamp de uma transação, são seguidas regras que denem o acesso aos dados. Isso depende se o timestamp de uma transação tem prioridade maior que os das demais transações concorrentes em suas operações sobre um item de dados. Se você acertou as atividades, atingiu os objetivos propostos para a aula: compreender o porquê da utilização da concorrência nas transações e identicar os principais problemas e técnicas para o controle de concorrência.

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

Estudaremos os sistemas de recuperação de bancos de dados. Ao contrário de outras situações, o termo recuperação, na próxima aula, não signica acesso às inormações armazenadas, mas recuperação da consistência do banco de dados em caso de alhas. 164

3º PeRÍodo • Análise e desenvol desenvolvimento vimento de sistemAs • unitins

AulA 5 • bAnco de dAdos

Sistema de recuperação

Esperamos que, ao nal desta aula, você seja capaz de: compreender os tipos de alhas que podem ocorrer em um banco de • dados; • entender os mecanismos de recuperação recuperação de alhas.

Para que os objetivos desta aula sejam atingidos, é importante que você compreenda o conceito de transação, a importância das proriedades ACID de uma transação e a noção de consistência de um banco de dados, consistência esta que é resultado da garantia das propriedades ACID, conteúdos estudados nas aulas três e quatro. Esses conteúdos são importantes para esta aula justamente porque as técnicas de recuperação são usadas para garantir que as propriedades ACID sejam mantidas.

Um sistema de computador, como qualquer outro dispositivo está sujeito a alhas por uma série de causas: alha de disco, alta de energia, erro de sotware , um incêndio, desabamento e até mesmo sabotagem (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Seja qual or o motivo de uma alha, em um sistema de banco de dados, é necessário que as propriedades de atomicidade e durabilidade sejam garantidas para que o banco de dados permaneça em um estado consistente. Um dos componentes que integra um sistema de banco de dados é um sistema de recuperação. Esse sistema tem a responsabilidade de azer com que, após a ocorrência de alguma alha, o banco de dados volte a um estado de consistência. Nesta aula, estudaremos justamente os sistemas de recuperação.

unitins • Análise e desenvolvimento desenvolvimento de sistemAs • 3º PeRÍodo

165

AulA 5 • bAnco de dAdos

5.1 Classicação de falhas

Existem vários tipos de alhas que podem ocorrer em um sistema, cada um deles precisa ser tratado de uma maneira dierente. O tipo mais simples de alha é o que não resulta na perda de inormações no sistema. Falhas que causam perda de inormações são mais diíceis de tratar (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Elmasri e Navathe (2005) descrevem alguns tipos principais de alhas, subdividindo-os em categorias: alha de transações, alha de sistema e alha de discos (ou mídia). Vejamos em que consiste cada uma dessas alhas. •

Falha do computador: um erro de hardware , sotware ou rede ocorre e

em um sistema de computador durante a execução de uma transação, por exemplo, uma alha na memória principal. •

Um erro de transação ou sistema : alguma operação da transação pode

ocasionar uma alha, como um estouro de inteiro, ou uma divisão por zero. Falhas de transação também podem ocorrer oco rrer por conta de valores errados de um parâmetro ou por erros na lógica de programação. Além disso, o próprio usuário pode interromper a operação antes do término da transação. •

Erros locais ou condições de exceção detectadas para a transação :

durante a execução de uma transação, podem ocorrer determinadas condições que necessitem o cancelamento da transação, por exemplo, os dados para a transação não estarem disponíveis. •

Imposição do controle de concorrência : o método de controle de concor-

rência pode optar por abortar uma transação para ser reiniciada posteriormente caso ela viole a ordem de serialização ou porque diversas transações estão em estado de deadlock . •

Falha de disco: alguns blocos de disco podem perder seus dados por

causa de mau uncionamento de uma leitura ou gravação. •

Problemas ísicos ou catástroes : reerem-se a uma lista sem m de

problemas que incluem alha de energia, urto, sabotagem, sobre gravação de dados, etc.

166

3º PeRÍodo • Análise e desenvol desenvolvimento vimento de sistemAs • unitins

AulA 5 • bAnco de dAdos

5.2 Recuperação Para determinar como um sistema deve se recuperar de alhas, precisamos identicar os modos de alha dos dispositivos usados para armazenamento de dados. Em seguida, temos de considerar como esses modos de alhas aetam o conteúdo do banco de dados. Podemos, então, propor algoritmos para garantir a coerência do banco de dados e a atomicidade das transações eetuadas apesar das alhas (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Essas ações podem ser tomadas durante a execução das transações para garantir que haja inormações sucientes para recuperar alhar (caso elas ocorram) ou podem ser tomadas após a ocorrência de alhas, para recuperar os dados e retornar o banco de dados a um estado consistente. Segundo Elmasri e Navathe (2005), a recuperação de transações que alharam signica, em geral, que o banco de dados será restaurado para o estado de consistência mais recente, exatamente antes do momento da alha. Para isso, o sistema deverá manter inormações sobre as alterações que oram aplicadas no banco de dados pelas várias transações executadas. Geralmente, essas inormações são armazenadas em arquivos chamados de log (histórico) do sistema. Uma estratégia genérica para recuperação de alhas pode ser baseada em dois pontos principais, que são mencionados a seguir. a) Se houver um dano extenso em uma grande porção do banco de dados, por conta de uma alha catastróca, tal com uma alha de disco, o método de recuperação restaura uma cópia anterior do banco de dados que estava guardada em um arquivo de armazenamento (o que chamamos de backup ) e o reconstrói em um estado mais atual, reaplicando ou reazendo as operações das transações armazenadas no log até o instante da alha. b) Quando o banco de dados não or danicado sicamente, mas se tornar inconsistente por causa de uma alha não catastróca, a estratégia é reverter quaisquer mudanças que causaram a inconsistência, desazendo algumas operações. Além disso, será necessário reazer algumas operações para restaurar o estado consistente do banco de dados. 5.2.1 Recuperação baseada em log

A estrutura mais utilizada para registrar as modicações do banco de dados é o log. O log é uma seqüência de registros de atividades de atualização no banco de dados. Um registro de log de atualização descreve uma escrita no banco de dados, ou seja, armazena dados sucientes para que a transação seja reeita, caso necessário. Em geral, uma entrada de log, conorme Silberschatz, Korth e Sudarshan (2006) contém os seguintes campos: identifcador de transação: é o identicador exclusivo da transação que • realizou a operação de escrita;

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

167

AulA 5 • bAnco de dAdos

•

identifcador do item de dados : identicador único do item de dados que

oi escrito, normalmente, o local no disco em que o item oi armazenado; • •

 valor antigo: valor do item de dados antes da escrita; novo valor: valor que o item de dados passa a ter após a escrita.

Observe que a capacidade de desazer uma alteração no banco de dados se apóia no armazenamento do valor antigo dos dados envolvidos em uma escrita. Assim, em caso de alhas, eles podem ser restaurados. Sempre que uma transação realiza uma escrita, é essencial que o registro de log seja eito antes que o banco de dados seja modicado. Após o registro em log da transação, a modicação do banco de dados pode ser liberada. Um ponto importante para que a técnica de recuperação baseada em log seja realmente útil é que os registros de log devem estar armazenados em local estável. Imagine uma situação em que os arquivos de log estão armazenados no mesmo disco que o sistema de banco de dados e que ocorra uma alha no disco. Existe a possibilidade de que o arquivo de log seja danicado 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 transação eetuada em um banco de dados resulta em uma entrada no registro de log. Dessa orma, esse arquivo pode se tornar muito grande em um pequeno intervalo de tempo. Portanto devemos pensar, também, em como manipular esses arquivos com eciência. 5.2.2 Recuperação baseada na atualização adiada

A idéia contida nas técnicas de atualização adiada é postergar quaisquer atualizações no banco de dados real até que a transação complete sua execução com sucesso e alcance o seu ponto de eetivação. Durante a execução de uma transação, as atualizações são gravadas em log. Quando a transação alcançar o seu ponto de eetivação, há a gravação do log em um meio estável de armazenamento, então as atualizações podem ser eetuadas sobre o banco de dados. Se uma transação alhar antes de alcançar o seu ponto de eetivação, não será necessário desazer nenhuma alteração, pois a transação não aetou o banco de dados no disco. Assim, segundo Elmasri e Navathe (2005), podemos denir um protocolo de atualização adiada em: a) uma transação que não pode mudar o banco de dados em disco até que atinja o seu ponto de eetivação; b) uma transação que não alcança o seu ponto de eetivação até que todas as suas operações de atualização sejam registradas no log, e até que o log seja gravado em disco. 168

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 5 • bAnco de dAdos

Outra observação interessante é que alguns tipos de transações não aetam o banco de dados. Operações como geração e impressão de relatórios são caracterizadas por ações de leitura apenas. Mesmo assim pode ser inviável que elas sejam retornadas ao usuário “meio completas”, pois um relatório baseado em dados incorretos pode ser usado como instrumento para tomada de decisão, o que acarretaria um problema não para o sistema em si, mas para o negócio (o que pode ser ainda pior!). Um sistema de recuperação pode atuar nesse contexto inormando ao usuário que um determinado relatório oi gerado com erro. Outra ação seria garantir que esse relatório somente seja gerado depois que a transação alcance o seu ponto de eetivação. Outra opção é compor comandos que gerem relatórios e os mantenham como tareas em lote, sendo executadas apenas depois que a transação alcançar seu ponto de eetivação. Caso a transação alhe, as tareas em lote são canceladas. 5.2.3 Recuperação baseada na atualização imediata

As técnicas de modicação imediata permitem que as modicações no banco de dados sejam enviadas ao sistema quando a transação ainda está em estado ativo. As modicações de dados escritas pelas transações ativas são chamadas de modifcações não confrmadas (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Caso ocorra alguma alha durante uma transação, o sistema precisará utilizar o campo valor antigo do registro de log para restaurar os itens de dados modicados para que retornem aos valores que tinham antes da transação ser iniciada. Para que esse método uncione corretamente, é necessário que cada operação de atualização (mesmo antes da eetivação da transação) seja executada somente depois que um registro de log dessa operação seja gravado em meio de armazenamento estável. Dessa maneira, as atualizações no banco de dados podem ser eitas imediatamente, mas com a possibilidade de recuperação das alterações eitas. Segundo Elmasri e Navathe (2005), teoricamente, podemos identicar dois tipos principais de algoritmos de atualização imediata, que citamos a seguir. • Algoritmo de recuperação UNDO/NO-REDO (desaz e não reaz) : caracterizado pelo ato de que é garantido que todas as atualizações (escritas) de uma transação sejam registradas no banco de dados em disco antes da transação se eetivar . Dessa orma, em caso de alha na transação, não será necessário reazer as atualizações, apenas desazer as que já executaram. • Algoritmo UNDO/REDO (desaz-reaz): se é permitido que a transação seja eetivada antes que todas as mudanças sejam escritas no banco de dados, temos uma técnica do tipo UNDO/REDO.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

169

AulA 5 • bAnco de dAdos

5.2.4 Pontos de vericação ( checkponts )

Quando ocorre uma alha do sistema, é preciso consultar o arquivo de log para determinar quais transações precisam ser reeitas e quais transações precisam ser deseitas. Em muitos casos, é preciso percorrer todo o arquivo de log para obter essa inormação. Conorme Silberschatz, Korth e Sudarshan (2006), essa técnica apresenta duas difculdades: o processo de busca é demorado; • • a maioria das transações que precisam ser reeitas já enviaram suas atualizações para o banco de dados. Embora reazê-las não cause dano algum, a recuperação leva mais tempo. Para reduzir esse tipo de sobrecarga, são utilizados os pontos de vericação. Durante a execução, o sistema mantém o log, usando uma das duas técnicas apresentadas (atualizações adiadas ou imediatas). Além da utilização de logs, o sistema implementa pontos de verifcação, por meio das seguintes ações: a) enviar para armazenamento estável todos os registros atualmente residentes na memória principal; b) enviar para o disco todos os blocos modicados; c) enviar para o armazenamento estável um registro de log . Essa técnica permite melhorar o esquema de recuperação das outras já citadas e unciona da seguinte maneira: quando houver uma alha, o esquema de recuperação examina o log no sentido do último registro para o primeiro, para identicar a transação T que oi iniciada após o último ponto de vericação. Dessa maneira, apenas precisarão ser deseitas, ou reeitas as transações que iniciaram após o começo da transação T , além de T , é claro. Assim diminui o custo da recuperação do banco de dados.

5.2.5 Recuperação com transações concorrentes

Segundo Elmasri e Navathe (2005), independente do número de transações simultâneas, um sistema de banco de dados tem um único buer  de disco e um único arquivo de log. 170

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 5 • bAnco de dAdos

O esquema de recuperação depende muito do mecanismo de controle de concorrência. Para reverter uma transação que alhou, temos de desazer as atualizações realizadas pela transação. Supondo que uma transação T deve ser revertida e que atualizou um item de dados X, ela deve ser revertida e o valor do item de dados modicado deve ser restaurado de acordo com o seu valor antigo registrada em log. Vamos supor, ainda, que outra transação S atualizou o valor do item de dados X antes de T ser reeita. Nesse caso, a atualização eita pela transação S será perdida. Para resolver essa situação, podemos perceber que, enquanto a transação T é revertida, atualizando um item de dados X, nenhuma outra transação poderá atualizar o mesmo item de dados até que T seja revertida ou eetivada. Esse requisito pode ser garantido utilizando uma técnica de bloqueio em duas ases com bloqueios exclusivos enquanto a transação é completada. 5.2.6 Recuperação em sistemas de bancos de dados múltiplos

Até o momento consideramos apenas a recuperação de alhas em um único sistema de banco de dados. Porém não é rara a execução de transações em bancos de dados distribuídos (conceitos que veremos com mais detalhes na próxima aula). Nesse cenário, uma única transação, chamada de transação multibanco de dados, pode acessar diversos bancos de dados, que podem estar armazenados em dierentes sítios e ainda sob a gerência de dierentes SGBDs (ELMASRI; NAVATHE, 2005). Para manter a atomicidade de uma transação em um multibanco de dados é necessário ter um mecanismo de recuperação em dois níveis: um gerenciador de recuperação global, ou coordenador, responsável por manter as inormações exigidas para recuperação; e os gerenciadores de recuperação locais, responsáveis pelos registros de log. A recuperação em múltiplos bancos de dados é baseada em duas ases. a) Fase 1: quando todos os bancos de dados participantes sinalizarem ao coordenador que a sua parte na transação multibanco de dados oi concluída, ele envia uma mensagem de preparação para eetivação a m de inormar cada participante, que deverá registrar as alterações em log e enviar ao coordenador uma resposta de OK ou não-OK (no caso de ocorrer alguma alha). b) Fase 2: se todos os bancos de dados participantes responderem OK (inclusive o coordenador), o coordenador enviará um sinal de “eetivar” para cada participante, que gravará as alterações em log. A idéia é que todos os bancos de dados eetivem a transação, ou nenhum deles o aça. No caso de haver alguma alha, será possível recuperar a consistência a partir de um estado no qual a transação possa ser eetivada ou revertida.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

171

AulA 5 • bAnco de dAdos

Uma alha ocorrida durante a ase 1 requer que a transação seja revertida (deseita), enquanto que uma alha durante a ase 2 requer que a transação seja revertida e, em seguida, eetivada (deseita e reeita novamente). 5.2.7 Sistema de backup

Certamente você já ouviu alar em backup e, provavelmente, a denição mais encontrada para esse termo é cópia de segurança. Muitos administradores de bancos de dados eetuam essa tarea no dia-a-dia, sempre azendo uma cópia do banco de dados para que, em caso de alguma alha (sobretudo as catastrócas). Silberschatz, Korth e Sudarshan (2006) sugerem que, para obtermos alta disponibilidade, podemos realizar o processamento das transações em um local chamado de sítio primário e manter um sítio secundário, no qual todos os dados do sítio primário são replicados. O sítio secundário também é chamado de backup remoto. O backup precisa ser sincronizado com o sítio primário enquanto as transações são processadas nele. Essa sincronização pode ser obtida enviando todos os registros de log para o backup. Esse sítio de backup deve estar sicamente distante do sítio primário para evitar que, caso ocorra algum desastre, o backup não seja danicado junto com o primário. Quando o sítio primário alhar, o sistema de backup remoto irá utilizar a última cópia de segurança eetuada e aplicar sobre essa cópia todos os registros de log das transações eetuadas desde então. Assim teremos, ao nal desse processamento o banco de dados no seu estado atualizado e consistente. Três desafos são undamentais para o bom uncionamento de um sistema de backup. •

•

•

172

Detecção de falha: o sistema de backup deve ter um mecanismo para detectar uma alha no sistema primário. Um caso clássico é uma alha na comunicação que pode azer com que o sistema de backup “ache” que o sistema primário alhou e inicie as rotinas de recuperação. Uma solução para esse caso é manter duas conexões distintas utilizando tecnologias dierentes para aumentar a confabilidade do sistema de detecção de alhas. Transerência de controle: quando o sistema primário alha, o sistema de backup assume o papel e passa a processar as transações. Ao retornar

à operação, o antigo sistema primário pode tanto permanecer como backup, quanto voltar a ser o primário. Essa decisão pode depender, por exemplo, da tecnologia de comunicação que dá acesso ao sistema primário original e ao sistema de backup; Tempo de recuperação : quando os arquivos de log se tornam muito grandes pode ser necessário 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 disponível pode não atender as necessidades da

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 5 • bAnco de dAdos

aplicação. Uma solução para esse problema é o processamento periódico do arquivo de log, para que, quando houver a necessidade, seja gasto menos tempo para iniciar a operação do sistema de backup. A utilização de sistemas de recuperação é muito importante, já que as inormações correspondem a um dos bens mais preciosos das instituições. A perda dessa inormação pode trazer um prejuízo muito grande em termos de tempo, de reazer o trabalho anterior e também nanceiro.

Nesta aula, estudamos algumas metodologias para recuperação de alhas em sistemas de bancos de dados, como a utilização de logs, que armazenam registros que contêm inormações sucientes para que transações sejam reeitas quando necessário. Vimos também os métodos baseados em atualização adiada e imediata. O primeiro sugere que os dados sejam eetivados no banco de dados denitivo em um momento de poucos acessos. O segundo sugere que as atualizações sejam gravadas no momento do processamento das transações. Os pontos de verifcação denem pontos de checagem a partir dos quais as transações podem ser recuperadas. Já os sistemas de recuperação em ambientes concorrentes utilizam técnicas baseadas nos mecanismos de controle de concorrência. Os métodos apresentados são baseados na utilização de arquivos de log, que não armazenam o banco de dados, mas registros que permitem identicar as transações eetuadas de maneira que possamos reconstruir as alterações até retornar o banco de dados a um estado atualizado e consistente.

1. Entre os tipos de alhas citados, encontramos alhas de equipamento, de sistema, etc. Mas nenhuma delas inclui o usuário ou as aplicações. Em relação ao sistema de banco de dados, uma ação do usuário pode ser responsável por alguma alha? E em relação às aplicações que acessam o banco de dados? O que pode ser eito em relação à prevenção de alhas provocadas pelo usuário? 2. Em relação à utilização de arquivos de log, devemos considerar que existe um custo para implementação dessa técnica, por exemplo, espaço para armazenamento. A utilização de um backup completo do banco de dados não seria mais simples do que armazenar registros de log que ainda precisarão ser processados para entrarem em operação?

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

173

AulA 5 • bAnco de dAdos

3. Sobre as técnicas de recuperação apresentadas nesta aula, é incorreto armar que: a) As técnicas de recuperação baseadas em atualização imediata e recuperação baseada em atualização adiada utilizam arquivos de log para uncionarem; b) Quando um backup entra em operação, as atualizações em arquivos de log que ainda não oram processados somente serão processadas depois que o sistema primário voltar a operar. Enquanto isso, o backup trabalha com dados desatualizados sem prejuízo, pois eles serão atualizados posteriormente; c) É possível implementar a técnica de backup em sistemas multibanco de dados, da mesma orma que os gerenciadores locais de recuperação mantêm arquivos de log para as transações executadas em cada banco de dados local; d) A técnica de backup pode, também, utilizar arquivos de log para processar as últimas atualizações em um banco de dados antes do sistema de backup entrar em operação. 4. Assinale a alternativa que não apresenta uma vantagem da utilização de técnicas de recuperação. a) Facilidade de reazer as transações para manter o banco de dados consistente. b) Maior necessidade de capacidade de armazenamento e processamento para gerenciar os arquivos de log. c) Menor prejuízo quando ocorrem alhas. d) Não há vantagens reais na utilização de técnicas de recuperação.

As atividades desta aula nos levam a refetir sobre o tema sistemas de recuperação. Ao responder corretamente as atividades você terá atingido os objetivos da aula, que são: compreender os tipos de alhas que podem ocorrer em um banco de dados e entender os mecanismos de recuperação de alhas. Vamos vericar se você os atingiu? Na atividade um, você disse que erros do usuário podem, indiretamente, resultar em alhas do sistema, e essas alhas já estão previstas nas técnicas apresentadas (rever tipos de alhas). Erros de rede ou desastres também podem ser causados pelo usuário, tendo um impacto direto nos sistemas de bancos de dados. Embora nenhuma das alhas citadas no início desta aula reerencie 174

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 5 • bAnco de dAdos

diretamente o usuário, todas refetem a ação dele (exceto as causas naturais). Em relação a como se prevenir contra erros causados pelo usuário, as técnicas de recuperação apresentadas estão sucientemente instrumentadas para lidar com alhas causadas pelos usuários, pois permitem desazer e reazer alterações corretamente. Na atividade dois, você mencionou que a utilização de sistemas de backup é muito útil, porém, caso não haja um log de transações e alguma alha de transação ocorra, teremos duas cópias inconsistentes de um mesmo banco de dados. A cópia de segurança apenas garante que os dados não serão perdidos, porém não podem garantir que os dados armazenados estejam consistentes. Por isso os logs são tão importantes. Na atividade três, a armação incorreta é a da letra (b), pois um sistema de backup somente deve entrar em operação quando as atualizações previstas no arquivo de log orem executadas. Caso contrário, o sistema pode operar certo tempo com um banco de dados inconsistente e, quando o sistema primário voltar a operar, a aplicação das atualizações pode não ser suciente para recuperar a consistência do banco de dados. Na atividade quatro, a única alternativa que não apresenta uma vantagem da utilização de técnicas de recuperação é 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 técnicas de recuperação sejam implementadas, porém é preciso pensar a sua viabilidade observando a relação custo/beneício, pois certamente o prejuízo causado pela perda dos dados é maior do que o investimento em recuperação de alhas.

ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. São Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. São Paulo: Campus, 2006.

Estudaremos um modelo de banco de dados que vem cada vez mais ganhando espaço no mercado, os bancos de dados distribuídos. Esse tipo de banco de dados tem características marcantes, tais como a orma de armazenamento para se obter vantagens em relação aos bancos de dados isolados. Estudaremos ainda sobre o controle de concorrência nesse tipo de banco de dados.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

175

AulA 5 • bAnco de dAdos

Anotações

176

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 6 • bAnco de dAdos

Bancos de dados distribuídos

Esperamos que, ao nal desta aula, você seja capaz de: • compreender os conceitos de bancos de dados distribuídos; • entender as dierenças em relação aos sistemas centralizados e as implicações de sua utilização.

Para que os objetivos desta aula sejam atingidos, é importante que você compreenda a visão geral do processo de projeto de bancos de dados, que conheça as tecnologias de bancos de dados e outras tecnologias que apóiam a sua utilização, como os conceitos básicos da comunicação entre computadores. Esses conceitos oram vistos nas diciplinas de Banco de Dados, no segundo período, e Redes de Computadores, no terceiro período. Eles ajudarão compreender os conceitos de bancos de dados distribuídos.

A arquitetura de um sistema de bancos de dados é bastante infuenciada pelo sistema de computador básico em que ela trabalha, em particular, por aspectos da arquitetura de computador como redes, paralelismo e distribuição (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, não interagindo com outros (trabalhando de orma isolada). Uma aplicação comum para esse tipo de arquitetura são os sistemas de pequeno porte e monousuários. Também merece destaque a arquitetura cliente-servidor, na qual um servidor de banco de dados serve a vários sistemas clientes. Essa arquitetura é comumente encontrada em empresas, nas quais os sotwares instalados nos diversos terminais interagem com o sistema de banco de dados por meio de uma rede local.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

177

AulA 6 • bAnco de dAdos

Com a disseminação da tecnologia da inormação e o crescimento do poder computacional dos sistemas, muitas instituições passaram a se utilizar dos sistemas de bancos de dados. Com o crescimento e a necessidade de integração desses sistemas, novos desaos surgiram. Um desses desaos era azer com que uma única aplicação pudesse operar de modo transparente sobre dados dispersos, armazenados em bases de dados dierentes e gerenciados por dierentes SGBDs. É justamente a noção de bancos de dados distribuídos, tema desta aula. 6.1 Bancos de dados distribuídos Um sistema de banco de dados distribuídos é, na verdade, uma espécie de banco de dados  virtual, cujas partes componentes estão sicamente armazenadas em vários bancos de dados reais distintos, em locais distintos, podendo ser descrito como a união lógica desses bancos de dados (DATE, 2004). Os elementos que compõem um sistema de banco de dados distribuídos trabalham em conjunto com o objetivo principal de resolver, de uma maneira eciente, um problema grande que ora repartido em partes menores e mais áceis de gerenciar. Entretanto, considerando que cada um dos elementos é um sistema de banco de dados com usuários e demandas isoladas, esses elementos podem conter operações independentes da interligação com outros sistemas de bancos de dados. Nesse contexto, surge a idéia de um sotware  responsável pelo gerenciamento de todo o sistema de banco de dados distribuído, o SGBDD – Sistema Gerenciador de Banco de Dados Distribuídos. Uma das suas unções principais é permitir que os diversos bancos distribuídos pela rede sejam manipulados de orma transparente, ou seja, não cabe ao usuário conhecer detalhes da distribuição dos dados nem das suas localizações (ALVES, 2004). Aliás, esse pode ser considerado o princípio undamental dos bancos de dados distribuídos: para o usuário, um sistema distribuído deve parecer exatamente como um sistema não distribuído (DATE, 2004).

Muitos sistemas de bancos de dados distribuídos usam, atualmente, a Internet como meio de comunicação entre os usuários e o sistema. Considerando a grande dierença de velocidade de acesso aos dados dos sistemas isolados em relação aos sistemas distribuídos, um dos objetivos essenciais no projeto de bancos de dados distribuídos é a minimização do uso da rede, ou seja, diminuir ao máximo a troca de mensagens. Outro aspecto importante dos sistemas distribuídos é a orma como os dados são armazenados. Duas técnicas de armazenamento merecem destaque: replicação e ragmentação, discutidas nos tópicos a seguir. 6.1.1 Replicação

Quando é utilizada a técnica de replicação, o sistema mantém várias réplicas (cópias) idênticas de uma mesma relação em diversos sítios (cada um 178

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 6 • bAnco de dAdos

dos bancos de dados reais que estão distribuídos) dierentes (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Uma replicação dita completa é aquela na qual existe uma cópia armazenada em cada sítio que compõe o sistema. O uso de replicação traz alguns beneícios, como a disponibilidade dos dados. Já que podem estar em dois ou mais sítios dierentes, se houver alguma alha em um deles, os usuários podem continuar trabalhando normalmente, pois outras cópias estão disponíveis. Outra vantagem é o aumento da possibilidade de paralelismo nas operações, sobretudo nas operações de leitura, de maneira que quanto mais réplicas houver, maior a chance de que os dados sejam encontrados no próprio sítio no qual a transação está sendo processada, diminuindo a necessidade de requisições pela rede. Por outro lado, um número elevado de cópias de uma mesma relação em um sistema de banco de dados distribuído gera uma maior sobrecarga na atualização dos dados, visto que, para manter a consistência entre as réplicas, são necessárias diversas trocas de mensagens. Podemos perceber, então, que a técnica de replicação é muito eciente para melhorar o desempenho nas operações de leitura e também para aumentar a disponibilidade, porém, em operações de atualização, podem sobrecarregar o sistema. 6.1.2 Fragmentação

Quando utilizamos a técnica de ragmentação, o sistema particiona uma mesma relação em vários ragmentos e armazena cada ragmento em um sítio dierente (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Existem dois tipos de ragmentação, a horizontal e a vertical. Na ragmentação horizontal, subconjuntos de uma relação são armazenados em sítios dierentes. Usando analogia com tabelas, podemos dizer que a tabela é dividida em vários subconjuntos de linhas, e cada um desses subconjuntos é armazenado em pelo menos um dos ragmentos (sítios). Uma vantagem que se pode obter com essa técnica é a distribuição de linhas da tabela pelos sítios que são mais acessados, azendo um balanceamento de carga e diminuindo a necessidade de transerência de dados. Um exemplo seria ragmentar horizontalmente a tabela cliente de uma concessionária de planos de saúde, de maneira que as linhas contendo as inormações dos clientes de uma determinada cidade cassem armazenadas localmente. Dessa orma, apenas seria necessário transerir dados quando se desejasse acessá-los a partir de outra localidade. Essa técnica não prejudica a transparência do sistema, já que podemos associar cada ragmento à localidade na qual está armazenada e reconstruir a relação em sua totalidade (como se não osse ragmentada) consultando cada uma dos sítios que contém ragmentos desta tabela.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

179

AulA 6 • bAnco de dAdos

A ragmentação vertical é um pouco dierente. Nela não são as linhas de uma tabela que ormarão os subconjuntos, mas as colunas. Dessa maneira, cada conjunto de atributos pode car em um sítio dierente. É necessário, porém, associar cada uma das colunas ragmentadas à relação original. Isso pode ser eito adicionando um campo que identique a relação à qual aquela coluna pertence. Uma das vantagens de se utilizar a ragmentação vertical está ligada à segurança dos dados, já que diculta acessos indevidos a uma linha completa de uma tabela. Assim os dados acessados indevidamente podem não ser completos ou signicativos, não tendo muito valor quando separados. 6.1.3 Tipos de bancos de dados distribuídos

Existem diversos atores que podem distinguir um sistema de banco de dados distribuídos de outros. Um deles é o grau de homogeneidade , que diz respeito ao tipo de sotware que é utilizado em todo o sistema. Se os servidores e clientes utilizam sotware  de um mesmo abricante ou ornecedor ( sotwares idênticos) dizemos que é um SGBDD homogêneo, caso contrário, é considerado um SGBDD heterogêneo (ALVES, 2004). No ambiente heterogêneo, há a necessidade de se denir um padrão de interoperabilidade. A interoperabilidade diz respeito à capacidade de um sistema interagir com outros, de dierentes tecnologias e padrões. Uma das maneiras de garantir a interoperabilidade em sistemas de bancos de dados distribuídos é a implementação de um midleware  para conversão das mensagens trocadas entre os sítios. Outra orma é denir um protocolo comum de comunicação. Dessa maneira, mesmo com tecnologias dierentes, pode-se utilizar uma linguagem comum. Outro aspecto que pode ser usado para classicação é o grau de autonomia local. O grau de autonomia local é a capacidade de um SGBD que az parte de um sistema distribuído trabalhar isoladamente (atender as demandas de clientes locais). Se um SGBD tem essa capacidade, podemos dizer que ele tem autonomia local, caso contrário, dizemos que ele não tem autonomia local. Segundo Alves (2004), destacam-se três tipos principais de autonomia. •

 Autonomia de comunicação: capacidade de decidir comunicar-se com

outro SGBD. •

  Autonomia de execução: capacidade de executar operações locais

sem sorer nenhuma intererência de outras operações externas e para decidir a ordem em que elas devem ser executadas. •

 Autonomia de associação : capacidade de decidir se suas uncionalidades

e recursos devem ser compartilhados e quando serão compartilhados. 180

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 6 • bAnco de dAdos

6.2 Transações distribuídas

Considerando dados replicados e/ou ragmentados em um banco de dados distribuído e considerando, ainda, que algumas características dos bancos de dados isolados devem ser mantidas, algumas tareas, como a utilização de transações para implementar as operações que são eitas sobre o banco de dados, é importante encontrar meios para que tais operações sejam executadas corretamente no ambiente de um banco de dados distribuído. Assim como em bancos de dados isolados, o acesso a diversos itens de dados em um sistema distribuído também é realizado por meio de transações, que, assim como nos sistemas isolados, precisam manter as propriedades ACID. Para que essas propriedades sejam garantidas, são propostas dois tipos de transações: locais e globais. 6.2.1 Transações locais x transações globais

Segundo Silberchartz, Korth e Sudarshan (2006), transações locais são aquelas que acessam e atualizam dados apenas em um banco de dados local, enquanto que as transações globais são aquelas que acessam e atualizam dados em diversos bancos de dados locais. Garantir as propriedades ACID em transações locais é tarea similar a de azer o mesmo em bancos de dados isolados, mas, no caso das transações globais, essa tarea pode se tornar muito mais complexa, já que diversos sítios podem estar envolvidos. Uma alha em um desses sítios, ou a perda da capacidade de comunicação (por exemplo, uma alha na rede) podem ocasionar situações nas quais os dados manipulados se tornem inconsistentes. Por essa razão se propõe uma estrutura para suportar as transações globais em sistemas de bancos de dados distribuídos. Essa estrutura se apóia em dois elementos principais: o gerenciador de transações e o coordenador de transações. O gerenciador de transações controla a execução das transações que são executadas em bancos de dados locais. Vale ressaltar que uma transação local pode azer parte de um conjunto de transações locais que compõem uma transação global. A atuação do gerenciador de transações em ambiente distribuído é muito parecida com a sua atuação em um sistema isolado. Suas principais tareas são: manter um log para ns de recuperação e participar de um esquema de controle de concorrência para as transações que são executadas em um determinado sítio. O coordenador de transações de um sítio coordena a execução de diversas transações, locais ou globais, iniciadas no sítio. Não sendo necessário em ambiente isolado, suas principais responsabilidades são iniciar a execução da transação, dividi-la em uma série de subtransações, distribuí-la de maneira adequada pelos diversos sítios e coordenar o término da transação.

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

181

AulA 6 • bAnco de dAdos

6.3 Controle de concorrência em bancos de dados distribuídos O controle de acesso concorrente a usuários e a recuperação de dados são atores muito importantes em um SGBD distribuído. Usando esses mecanismos, podemos tratar de alguns problemas inerentes aos bancos de dados distribuídos que não são comuns aos implementados em ambiente centralizado (ALVES, 2004). Elmasri e Navathe (2005) descrevem esses problemas da seguinte maneira: •

•

•

•

•

manipulação de múltiplas cópias dos itens de dados : o método de

controle de concorrência é responsável por manter a consistência entre essas cópias; alhas em sítios individuais : quando um determinado sítio entrar em estado de alha, o SGBDD deve ser capaz de continuar em operação utilizando os outros SGBDD que continuarem em operação; alha de links de comunicação: o sistema deve ser capaz de lidar com alha de um ou mais links de comunicação que conectam os sítios; commit distribuído: problemas podem surgir quando se está realizando um commit  de uma transação que está acessando bancos de dados armazenados em múltiplos sítios e um desses sítios alharem durante o processo; deadlock  distribuído: o deadlock  pode ocorrer entre vários sítios, em uma situação na qual um aguarda o desbloqueio de um item de dados que está sendo acessado por outro e ambos cam aguardando uma liberação.

Para o controle de concorrência em bancos de dados distribuídos, apresentamos dois tipos: baseados em cópia distinta de item de dados e controle baseado em votação. No primeiro tipo, se encontram técnicas que são extensões das já existentes para bancos de dados centralizados (ALVES, 2004). Segundo Elmasri e Navathe (2005), a idéia é designar cada cópia particular de um item de dados como uma cópia distinta. Os bloqueios para esse item de dados são associados à cópia distinta e todas as solicitações de bloqueio e desbloqueio são enviadas para o sítio que contém a cópia. 182

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 6 • bAnco de dAdos

Vários métodos dierentes estão baseados nessa idéia, mas eles dierem em seus métodos para escolher as cópias distintas. Na técnica de sítio primário, todas as cópias distintas são mantidas no mesmo sítio. Uma modicação dessa abordagem é o sítio primário com um sítio de backup. Outra abordagem é o método da cópia primária, no qual as cópias distintas dos vários itens de dados podem ser armazenadas em sítios dierentes. Um sítio que inclui uma cópia distinta de um item de dados basicamente atua como o sítio coordenador do controle de concorrência para aquele item. No método de votação, não há cópia distinta, em vez disso, uma solicitação de bloqueio é enviada para todos os sítios que têm uma cópia do item de dados. Cada cópia mantém seu próprio bloqueio e pode conceder ou negar a solicitação para bloqueio. Se uma transação que solicitar um bloqueio e lhe or concedido pela maioria das cópias, ela mantém o bloqueio e inorma a todas as cópias. Se uma transação não receber a maioria de votos que lhe concedam um bloqueio dentro de certo período de timeout , ela cancela a solicitação e inorma a todos os sítios o cancelamento. O método de votação é considerado um método de controle de concorrência verdadeiramente distribuído, pois a responsabilidade por uma decisão reside em todos os sítios envolvidos. Estudos de simulação têm mostrado que a votação tem um tráego maior de mensagens entre os sítios que os métodos de cópia distinta. Se o algoritmo levar em consideração as possíveis alhas de sítios durante o processo de votação, ele se torna extremamente complexo (ELMASRI; NAVATHE, 2005). Silberchartz, Korth e Sudarshan (2006) ainda descrevem uma técnica de controle de concorrência baseada em bloqueios. Uma delas é a técnica de gerenciador de bloqueios único, na qual o sistema mantém um único gerenciador de bloqueio que reside em um único sítio escolhido. Todas as solicitações de bloqueios são repassadas ao gerenciador e, se uma solicitação não puder ser atendida, ela é adiada até que seja possível concedê-la, caso contrário, o gerenciador de bloqueios envia uma mensagem para o sítio em que a solicitação oi iniciada. No caso de uma atualização (escrita), todos os sítios que contêm uma réplica do item de dados devem ser envolvidos no processo, com a nalidade de manter a consistência entre as dierentes réplicas. Esse esquema tem as vantagens de uma implementação simples e um simples tratamento de impasses, já que as decisões são centralizadas. Por outro lado, o gerenciador de bloqueios único se torna um gargalo para o sistema, já que deverá processar todas as solicitações. Além disso, esse modelo descreve um ponto único de alha. Caso o gerenciador deixe de operar, o processamento é interrompido até que alguma técnica de recuperação seja acionada. Uma alternativa para manter o equilíbrio entre a simplicidade da implementação e o desempenho é a utilização de um gerenciador de bloqueios distri-

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

183

AulA 6 • bAnco de dAdos

buído, no qual cada sítio mantém um gerenciador de bloqueios sobre os itens de dados armazenados nesse sítio. 6.4 Questões sobre mobilidade Os sistemas de bancos de dados distribuídos podem ser, ainda, implementados utilizando dispositivos móveis. Nesse caso, um dos requisitos é a comunicação em um ambiente de redes sem o. Um dos grandes desaos para a área de bancos de dados móveis é justamente tratar a movimentação dos sítios. Outro aspecto importante é a possibilidade de itens de dados serem acessados a partir de dispositivos móveis. Nesse cenário, um dos grandes desaos é controlar o bloqueio de itens de dados quando um dispositivo migra da região de um sítio para outro. Assim um bloqueio concedido sobre uma determinada cópia que não mais será acessada deve ser tratado por algum mecanismo de controle de concorrência.

A partir do que vimos nesta aula, podemos concluir que os bancos de dados distribuídos vêm se tornando cada vez mais comuns. As erramentas projetadas para bancos de dados isolados nem sempre são capazes de tratar todas as particularidades dos bancos de dados distribuídos. O estudo de técnicas para tratar dessas particularidades é importante para atender os requisitos desse tipo de tecnologia.

Nesta aula, apresentamos os conceitos básicos de sistemas de bancos de dados distribuídos. Traçamos uma comparação entre o modelo centralizado e o modelo distribuído, abordando as suas vantagens e desvantagens. Estudamos também a orma de armazenamento dos dados em ambiente distribuído e técnicas de controle de concorrência. Analisamos os métodos de replicação (que determina que uma relação deve ser replicada em mais de um sítio que compõe o banco de dados) e ragmentação (que determina que partes de uma mesma relação podem estar em dierentes sítios) para armazenamento em bancos de dados distribuídos. Falamos a respeito do mecanismo de transações distribuídas, que determinam a existência de dois tipos de transações: globais, quando envolvem diversos sítios, ou locais, quando executadas em um único sítio. Também vimos os mecanismos de controle de concorrência, como os gerenciadores de bloqueios, que determinam as permissões de acesso aos itens de dados por transações. 184

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 6 • bAnco de dAdos

Finalmente, alamos sobre questões de mobilidade, que comentam a possibilidade de o banco de dados ser acessado por estações móveis, ou mesmo a possibilidade de estações móveis serem utilizadas como sítios de armazenamento.

1. A ragmentação de relações em sistemas de bancos de dados distribuídos é muito útil em algumas situações. Assinale a alternativa que contém uma das vantagens de se utilizar a ragmentação vertical. a) Ter subconjuntos de uma relação em diversos sítios dierentes. b) Uma velocidade muito maior no atendimento das requisições, já que o processamento é eito em um único sítio. c) Aumenta a segurança dos dados, já que, para uma linha de uma tabela ser acessada na sua orma completa, é necessário buscar seus atributos em diversos sítios dierentes. d) A vantagem é armazenar os dados em um púnico ragmento, por isso é chamada de vertical. 2. Sobre transações distribuídas, é incorreto armar que: a) podem ser classicadas em locais e globais; b) transações locais são executadas de orma praticamente idêntica aos sistemas de bancos de dados centralizados; c) transações globais, em geral, são controladas por um elemento do sistema chamado de coordenador de transações; d) a propriedade de isolamento não se aplica às transações distribuídas, já que o isolamento nesse contexto é totalmente contrário à idéia de distribuição. 3. Quais as principais dierenças entre o controle de concorrência em bancos de dados distribuídos e bancos de dados isolados? 4. Quais as principais dierenças entre os métodos de ragmentação e de replicação?

Na atividade um, a alternativa correta é a (c), pois a ragmentação indica que um possível acesso indevido. Para ter acesso aos dados na sua orma completa, necessita ter acesso à política de ragmentação e às associações

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

185

AulA 6 • bAnco de dAdos

entre as colunas ragmentadas e o processo de remontagem, dicultando a ação de tais acessos indevidos. A alternativa (a) ala da ragmentação horizontal e não vertical. A alternativa (b) também é incorreta, pois, se por um lado a ragmentação vertical pode acelerar o processamento quando se trata de um único atributo da relação, quando existe a necessidade de remontar a relação buscando dados em dierentes sítios, o processamento pode se tornar mais lento pela necessidade de trocas de mensagens entre os sítios. A alternativa (d) é completamente contrária à idéia de ragmentação. A verticalidade ou horizontalidade da ragmentação diz respeito à estrutura das relações (se conjuntos de tuplas são armazenados em locais dierentes – horizontal – ou se conjuntos de atributos são armazenados em sítios dierentes). Esta atividade está relacionada ao primeiro objetivo da aula, que é compreender os conceitos de bancos de dados distribuídos. Na atividade dois, a alternativa incorreta é a (d) , uma vez que as propriedades ACID são desejáveis em qualquer transação de qualquer tipo de banco de dados. O isolamento de uma transação diz respeito ao isolamento dos dados e à infuência que uma transação pode sorer de outras operações que estejam acontecendo no mesmo momento. A alternativa (a) é correta, pois as transações em ambiente distribuído são realmente classicadas como locais ou globais. A alternativa (b) é correta, já que transações locais são eetuadas sobre um único sítio, não há a necessidade de considerar aspectos de um ambiente distribuído, como as trocas de mensagens entre os sítios que o compõem. A alternativa (c) é correta, pois o coordenador de transações é um elemento importante para controlar as transações globais, executadas em mais de um sítio. A terceira atividade e a quarta atividade estão relacionadas com o segundo objetivo da aula, que é compreender as dierenças entre os bancos de dados isolados e os bancos de dados distribuídos. Para responder corretamente a atividade três, você mencionou que o controle de concorrência em ambiente distribuído deve considerar aspectos que não são necessários em ambiente isolado, já que em ambiente distribuído os dados manipulados em uma transação podem estar armazenados em dierentes sítios. Além disso, os mecanismos de bloqueio devem considerar dierentes tipos de transações, como as locais e globais. Na atividade quatro, você oi coerente com a idéia de que a replicação atua como se vários bancos de dados isolados, ou relações completas de um banco de dados ossem copiados e estivessem disponíveis. Um dos problemas dessa técnica é a necessidade constante de atualização para manter a consistência entre as dierentes réplicas. A ragmentação sugere que partes de uma relação (um conjunto de registros ou uma coluna de uma relação) sejam armazenados em dierentes sítios. 186

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 6 • bAnco de dAdos

ALVES, Willian P. Sistema de bancos de dados . São Paulo: Érica, 2004. DATE, C. J. Introdução a sistemas de banco de dados . Rio de Janeiro: Elsevier, 2004. ELMASRI, Ramez E.; NAVATHE, Shamkant B. Sistemas de banco de dados. São Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. São Paulo: Campus, 2006.

Estudaremos alguns tópicos adicionais de bancos de dados. Mais especicamente sobre a utilização da linguagem XML no contexto de bancos de dados. Essa linguagem se tornou um padrão mundialmente utilizado de documentos estruturados para o ambiente web. Estudaremos também conceitos de segurança em bancos de dados. Anotações

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

187

AulA 6 • bAnco de dAdos

188

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 7 • bAnco de dAdos

Tópicos adicionais

Esperamos que, ao nal desta aula, você seja capaz de: compreender a relação entre bancos de dados e XML; • • entender os conceitos de segurança em bancos de dados.

Para que os objetivos desta aula sejam atingidos, é importante que você tenha uma visão geral dos sistemas de bancos de dados, da orma como os componentes de um sistema de banco de dados, como usuários, aplicativos e SGBDs, interagem entre si. Esses conceitos, apresentados na primeira aula desta disciplina e também já vistos na disciplina de Bancos de Dados do segundo período, são importantes para compreendermos os tópicos adicionais que são relacionados com os conceitos já estudados.

Por serem um elemento de grande importância nos sistemas de inormação, as tecnologias voltadas para bancos de dados têm estado em constante evolução. Melhorias nas ormas de armazenamento, metodologias de acesso, conexão ísica, técnicas de recuperação e de acesso a dados são alvo de diversos estudos acadêmicos, técnicos e prossionais. Algumas áreas, como a segurança de dados, são muito importantes, já que em bancos de dados podem ser armazenadas grandes quantidades de inormações condenciais relevantes ao negócio de uma empresa, dados pessoais e/ou bancários que devem ser preservados. Estudos têm sido realizados, também, para desenvolver padrões de armazenamento e personalização dos dados. Nesse sentido, em conjunto com o crescente número de aplicações que envolvem bancos de dados baseadas no

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

189

AulA 7 • bAnco de dAdos

ambiente da Internet , surgiu a linguagem XML, que tem tido uma orte ligação com os sistemas de bancos de dados. Os tópicos de segurança e utilização de XML serão estudados nesta aula. 7.1 XML Extensible Markup Language , ou linguagem de marcação extensível, é

uma linguagem que permite a estruturação de documentos. Linguagens muito diundidas, como HTML – Hypertext Transer Protocol  –, também se enquadram na categoria das linguagens de marcação. Porém as marcações em HTML são rígidas, 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 usuário (da linguagem). Nesse contexto, uma marcação reere-se a qualquer elemento de um documento que não sirva como parte de sua saída impressa (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). Por exemplo, partes de um texto podem ser ormatadas de maneira dierente, isso pode ser expresso por meio de marcações. Dois conceitos principais são usados para construir um documento XML: elementos e atributos (ELMASRI; NAVATHE, 2005). É importante observar que, em XML, o termo atributo não é usado da mesma maneira que a terminologia habitual em bancos de dados, mas da maneira como é usado em linguagens de marcação para descrição de documentos estruturados. Os atributos ornecem inormações que descrevem os elementos. Existem basicamente dois tipos de elementos, os simples, que contêm valores de dados, e os complexos, que são construídos hierarquicamente a partir de outros elementos, simples ou também complexos. Tanto a linguagem XML quanto HTML são derivadas da linguagem SGML – Standard Generalized Markup Language  –, que é bastante complexa e contém elementos que permitem a estruturação de documentos em diversos aspectos. XML ganha destaque por permitir que o usuário crie suas próprias marcações, também chamada de tags , de maneira que o documento que estruturado de acordo com as regras denidas para uma aplicação, situação ou simplesmente atenda os requisitos de estruturação denidos pelo usuário. A denição das tags, que poderão ser utilizadas para estruturar um documento XML, ca armazenada em um arquivo do tipo DTD – Document Type  Denition. A partir da estrutura pré-denida em um DTD, podem-se especicar os elementos que estarão contidos no documento XML. Essa denição também pode ser eita utilizando-se uma  API – Application Program Interace  –, que permite que aplicações possam inserir, excluir e alterar elementos contidos no documento. Essa API é chamada de DOM – Document Object Model . A partir da denição de uma estrutura para os documentos XML e da criação de tags próprias, podemos considerar que uma nova linguagem de marcação oi criada. Por essa razão, muitos autores chamam a linguagem XML 190

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 7 • bAnco de dAdos

de metalinguagem. Essa possibilidade az com que documentos XML se tornem poderosas erramentas de intercâmbio de dados, já que são acilmente processados e transmitidos no ambiente da Internet  (a transmissão é eita utilizando o protocolo HTTP, o mesmo usado para páginas HTML). Ao denir uma estrutura de documento que seja utilizada como ormato para intercâmbio, diversas aplicações com arquiteturas dierentes podem compartilhar dados de maneira eciente sem que seja necessário reazê-las. Outra característica marcante da linguagem XML é que a estrutura pode ser denida em um arquivo, enquanto o conteúdo, ou seja, os dados que serão estruturados de acordo com a estrutura denida podem ser armazenados em outro arquivo. Além disso, é importante ressaltar que o conteúdo de um documento XML contém, basicamente, os dados estruturados (geralmente de maneira hierárquica em orma de árvore) e, ao contrário de HTML, não contém inormações sobre como os dados devem ser apresentados. A orma de apresentação dos dados pode ser determinada de várias maneiras. Duas das mais comuns são a utilização de CSS – Cascade Stlyle  Sheet – ou Folhas de Estilo em cascata, e  XSL  – Extensible Stylesheet Language . A denição da orma de apresentação independente do conteúdo e da estrutura conere à linguagem XML uma fexibilidade muito grande, tornando os documentos acilmente personalizáveis. A Figura a seguir ilustra gracamente a relação entre conteúdo, estrutura e apresentação de um documento XML. Figura Composição de um documento XML.

Observe que o conteúdo estruturado de acordo com regras pré-denidas dá origem ao documento XML, escrito em uma estrutura hierárquica em árvore. A partir daí já poderíamos utilizar os dados estruturados para uma quantidade muito grande de aplicações. Uma delas seria apresentar ao usuário de um sistema de inormações qualquer os dados contidos no documento. Nesse momento, entram em cena as regras de apresentação, que, aplicadas ao documento XML, azem com que ormatações sejam aplicadas às tags denidas quando o documento or apresentado em um browser (navegador web).

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

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 não são exatamente iguais aos atributos em bancos de dados, essa associação pode ser eita sem prejuízos quando estivermos alando de bancos de dados relacionais. Se uma determinada entidade pode ser denida a partir de seus atributos, podemos associar a estrutura de uma tabela em um banco de dados relacionais à estrutura de um documento XML.

Algumas abordagens têm sido propostas para a organização do conteúdo de documentos XML para acilitar sua subseqüente consulta e recuperação. Segundo Elmasri e Navathe (2005), as abordagens mais comuns são 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 conteúdo do documento XML como elemento de dados: essa abordagem unciona para o armazenamento

de uma coleção de documentos que seguem um esquema (estrutura) especíco XML estabelecida em um DTD. Como todos os documentos têm a mesma estrutura, é possível 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 compatível com a estrutura do documento XML e também 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 não aça 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

hierárquico poderia ser projetado e implementado. O sistema incluiria técnicas especializadas de indexação e de consultas e uncionaria para todos os tipos de documentos XML. Considerando que documentos XML são basicamente arquivos de texto, poderia incluir técnicas de compressão para reduzir o tamanho dos documentos para armazenamento; 192

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 7 • bAnco de dAdos

•

criação ou publicação de documentos XML customizados a partir de bancos de dados relacionais preexistentes : como existem enormes quan-

tidades de dados já armazenados em bancos de dados relacionais, parte desses dados pode precisar ser ormatada como documento para troca ou exibição pela web. Essa abordagem usaria uma camada de sotware middleware  separada para tratar as conversões necessárias entre o banco de dados e os documentos XML.

7.2 Segurança em bancos de dados

Segundo Date (2004), geralmente, questões sobre segurança de dados estão associadas à integridade. No entanto são conceitos bem dierentes. Observe a dierença entre eles a seguir. Segurança: signica proteger os dados contra usuários não-autorizados; • Integridade: signica proteger os dados de usuários autorizados. • Nesta parte da aula, o nosso interesse é puramente a segurança. A segurança em banco de dados é uma área bastante ampla, que, segundo Elmasri e Navathe (2005), se reere a muitas questões. • Questões legais e éticas reerentes ao direito de acesso a certas inormações. Questões políticas no nível governamental, institucional ou corporativo, • como quais tipos de inormações não devem ser tornados disponíveis publicamente. Questões relacionadas ao sistema, como os níveis de tratamento de • segurança (SGBD, sistema operacional, aplicação, etc.). • Necessidades de algumas organizações em categorizar níveis de segurança e enquadrar os dados nesses níveis. Quando o assunto é segurança, é comum que se pense também sobre quais os tipos de ameaças queremos nos prevenir. Os objetivos principais da segurança em bancos de dados é eliminar ameaças que aetem a integridade, a disponibilidade e a confdencialidade dos dados. Para proteger os bancos de

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

193

AulA 7 • bAnco de dAdos

dados contra os diversos tipos de ameaças, algumas medidas podem ser implementadas, como: controle de acesso • controle de inerência • controle de fuxo • criptograa • Uma das maneiras de garantir o controle de acesso é denir contas para os usuários. Geralmente o DBA – Data Base Administrator  – possui uma conta de sistema, ou conta de superusuário, que habilita capacidades que não estão disponíveis para os usuários comuns de um banco de dados. Entre essas capacidades estão: criação de contas, concessão de privilégios, revogação de privilégios e atribuição de nível de segurança. Para melhorar o esquema de segurança, somente devem ter uma conta de acesso usuários que tenham uma necessidade legítima de acessar o banco de dados. O sistema de banco de dados também deve manter inormação de todas as operações que são aplicadas por um usuário durante cada sessão de conexão, que consiste em uma seqüência de interações que um usuário realiza desde o momento de conexão (login) até o momento de desconexão (logo ). Essas inormações, associando também o terminal a partir do qual os comandos oram enviados, podem ser armazenadas em um log de acesso do sistema (ELMASRI; NAVATHE, 2005). Podemos destacar dois tipos principais de controle de acesso: o discriminatório e o mandatário. Segundo Date (2004), no caso do controle de acesso discriminatório, determinado usuário terá, em geral, direitos de acesso (também chamados de privilégios) dierentes sobre objetos dierentes. Além disso, há bem poucas limitações inerentes a respeito de quais usuários podem ter privilégios dierentes sobre dierentes objetos (por exemplo, um usuário A tem direitos sobre um objeto X, mas não sobre Y, enquanto um usuário B tem direitos sobre Y, mas não sobre X), tornando esse modelo bastante fexível. No caso do controle mandatário, cada objeto de dados é assinalado com certo nível de classicação e cada usuário recebe certo nível de liberação. O acesso a um determinado objeto de dados só pode ser eito por usuários com a liberação apropriada. Os esquemas mandatários tendem, assim, a ser hierárquicos por natureza, e, desse modo, comparativamente rígidos. Outra erramenta que pode ser usada para segurança em bancos de dados é a criptograa. 7.2.1 Criptograa

A criptograa é um recurso de segurança muito útil quando os dados se encontram nas mãos de usuários ilegítimos, possivelmente por um erro no canal de comunicação entre computadores (rede) ou mesmo aproveitando de uma 194

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 7 • bAnco de dAdos

vulnerabilidade em um aplicativo ou na própria transmissão de dados. Nesse caso, o uso de criptograa permite que os dados sejam protegidos, já que, mesmo de posse das inormações presentes no banco de dados, elas não estão escritas de orma inteligível.

O algoritmo de criptograa em si não necessita ser secreto, porém a chave usada para criptograar e descriptograar os dados deve ser de posse única de usuários que tenham real necessidade de acesso a esses dados. Em bancos de dados, a utilização de criptograa aumenta a segurança dos dados se eles orem armazenados e transmitidos na orma de texto cirado, pois, ao serem acessados indevidamente, transportados sicamente, ou interceptados em uma comunicação, estarão seguros. Existem diversas técnicas de criptografa, algumas delas são baseadas em substituição, outras em permutação de caracteres em um texto puro. Outros ainda utilizam essas duas técnicas combinadas, como o DES – Data Encryption Standard  –, que oi desenvolvido pela IBM e adotado como padrão ederal dos Estados Unidos em 1977 (DATE, 2004). Para usar o DES, o texto comum é dividido em blocos de 64 bits e cada bloco é criptograado com o uso de uma chave de 64 bits.

Na medida em que computadores se tornaram mais rápidos e precisos, as chaves de 64 bits usadas no DES oram se tornando relativamente pequenas, já que ataques de orça bruta (testar todas as combinações possíveis) se tornaram viáveis em algumas situações. Assim outros padrões ganharam orça, como o AES – Advanced Encryption Standard –, que utiliza chaves de 128, 192 e 256 bits, muito mais seguras. Existe ainda o modelo de criptograa de chave pública. Os algoritmos de chave pública são baseados em operações matemáticas, em vez de operações sobre bits. Além disso, dierem da então criptograa tradicional por utilizarem duas chaves ao invés de uma só. As duas chaves são chamadas de pública e privada. A privada é sempre mantida em segredo (ELMASRI; NAVATHE, 2005). Como sugerido no nome desse modelo, a chave pública é tornada pública para outros usarem, ao passo que a privada é conhecida apenas por seu proprietário. Um algoritmo de criptograa de chave pública genérica se baseia em uma chave para cirar e outra chave dierente, porém relacionada, para decirar, de acordo com os seguintes passos: cada usuário gera seu par de chaves para cirar e decirar os dados; •

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

195

AulA 7 • bAnco de dAdos

•

•

•

cada usuário coloca uma das duas chaves em um registro público ou em outro arquivo acessível (essa é a chave pública). A outra chave que a acompanha é mantida secreta; se um remetente deseja enviar uma mensagem privada para um destinatário, o remetente cira a mensagem utilizando a chave pública do destinatário; quando o destinatário receber a mensagem, decira a mensagem utilizando a chave privada do destinatário. Nenhum outro receptor pode decirar a mensagem, já que somente o destinatário conhece a sua própria chave privada.

Portanto os conceitos de segurança em bancos de dados são muito importantes, já que aspectos como a condencialidade são requisitos para um banco de dados conável. Considerando que existem muitos sistemas baseados na web, aspectos de segurança cam ainda mais em evidência e devem poder ser aplicados às novas tecnologias, como XML.

Nesta aula, apresentamos os conceitos undamentais da linguagem XML  e algumas das possibilidades de utilizá-la como uma erramenta para a área de bancos de dados. Essa tecnologia pode ser usada tanto como ormato para intercâmbio na troca de inormações, quanto ormato para armazenamento ou ainda como padrão para apresentação dos dados ao usuário. Outro tópico abordado oi a segurança em bancos de dados , que muitas vezes não é percebida pelo usuário. Apresentamos os métodos baseados em controle de acesso e também conceitos de criptografa.

1. Sobre XML, assinale a alternativa incorreta. a) Pelo ato da transerência de dados em XML ser eita utilizando o mesmo protocolo que HTML, o protocolo HTTP, é muito diícil para os sistemas de bancos de dados decodicar as inormações. 196

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 7 • bAnco de dAdos

b) XML, assim como HTML, é uma linguagem de marcação. c) As marcações de um documento XML podem ser denidas em um documento chamado DTD e podem também refetir o domínio da aplicação em questão. d) A ormatação dos dados contidos em um arquivo XML pode ser denida em outro arquivo, por exemplo, do tipo CSS. 2. A segurança em bancos de dados é um dos aspectos mais importantes. Sobre segurança, assinale a alternativa correta. a) A segurança em um banco de dados é implementada diretamente e somente na aplicação que interage como banco de dados. b) A única orma de implementar segurança em um banco de dados é por meio do controle de acesso eetuado no SGBD. c) A criptograa de chave pública é uma maneira de proteger os dados mesmo que eles caiam nas mãos de pessoas não autorizadas. d) Segurança em bancos de dados é um sonho impossível, já que os dados sempre são armazenados na sua orma denitiva e qualquer um que os acessar pode decirá-los sem problema algum. 3. A separação entre estrutura, conteúdo e ormatação é uma característica 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 técnicas de segurança para a área de bancos de dados. Essas técnicas devem ser utilizadas separadamente, ou podemos implementar um “pacote” de segurança contendo diversas técnicas?

Considerando os objetivos da aula, que estão relacionados aos temas XML e segurança em banco de dados, vamos comentar as questões propostas nas atividades para vericar se você os atingiu. Na atividade um, a alternativa (a) está incorreta, já que o ato de dados em XML serem transmitidos utilizando o protocolo HTTP representa uma das vantagens desse padrão, pois uma série de problemas de transmissão de dados já está resolvida. Aliás, essa é uma das razões de XML estar se tornando um padrão cada vez mais em uso. A alternativa (b) é correta, pois como já oi exposto, a linguagem XML é uma linguagem de marcação, assim como HTML, e a construção dos documentos é baseada na utilização de tags. A alternativa (c) expressa corretamente uma possibilidade de separação da

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

197

AulA 7 • bAnco de dAdos

defnição da estrutura do documento e do preenchimento do seu conteúdo. A alternativa (d) apresenta outra característica da linguagem XML, que é a possibilidade de defnir a ormatação de cada tipo de marcação em um arquivo separado.

Na atividade dois, a alternativa (a) é incorreta, pois a implementação da segurança em bancos de dados pode ser eita em diversos níveis, de aplicação, SGBD, etc., e não somente nas aplicações. A alternativa (b) é incorreta, pois o controle de acesso é uma das ormas de garantir a segurança dos dados, porém não é a única. A alternativa (c) é a resposta correta, já que dados criptograados com a tecnologia de chaves públicas somente podem ser decirados com a utilização de uma chave provada, que somente um proprietário possui. Dessa maneira, outras pessoas não podem acessar indevidamente os dados. A segurança da inormação é um aspecto chave na sociedade atual. Muitos esorços têm sido realizados nesse sentido, porém, ainda existem muitas vulnerabilidades a serem solucionadas. Entretanto há ambientes seguros para a troca de inormações, por isso não podemos considerar a segurança um sonho, já que em muitos sistemas a diculdade em burlar os mecanismos de segurança seria muito grande. Diante do exposto, a alternativa (d) é alsa. A atividade três chamou você para refetir sobre uma das principais características da linguagem XML, que é a separação entre conteúdo, estrutura e apresentação. No contexto de bancos de dados, podemos utilizar essas características de diversas ormas dierentes. Uma delas seria a possibilidade de armazenar grandes quantidades de documentos XML sem a necessidade de armazenar, em conjunto, os aspectos de ormatação de cada um, já que um único esquema de ormatação pode ser denido em separado e aplicado a todos os documentos armazenados. Outra possibilidade seria personalizar a apresentação dos dados para dierentes categorias de usuários, ou ainda, validar, baseando-se em uma estrutura pré-denida, os dados contidos em um documento antes de armazená-los no banco de dados. Na atividade quatro, você armou que a segurança de um sistema de banco de dados tem vários níveis, por exemplo, os usuários, a aplicação, o SGBD e os próprios dados. Algumas técnicas de segurança, como o controle de acesso, atuam em apenas uma dessas camadas, sozinha não é o suciente para garantir a segurança das inormações. A junção de técnicas soa como uma solução mais completa e ecaz, já que, se uma barreira or vencida, ainda restarão outros mecanismos para impedir que os dados sejam prejudicados ou acessados indevidamente. Por exemplo, eetuar o controle de acesso com senhas criptograadas ou, ainda, criptograar as denições de permissão para os dierentes usuários dicultam um possível ataque utilizando inormações sobre um determinado usuário. 198

3º PeRÍodo • Análise e desenvolvimento de sistemAs • unitins

AulA 7 • bAnco de dAdos

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

unitins • Análise e desenvolvimento de sistemAs • 3º PeRÍodo

199

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF