Banco de Dados II
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 inormação i normação e aplicativos em geral manipulam dados e inormaçõ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 denições conceituais e revisão, também questões de implantação e de manutenção da conabilidade, 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. • Oerecer 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 Classicaçã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 sotwares que compõem os sistemas de inormação podem ser considerados apenas uma interace 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 inormações (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). A qualidade de um projeto é tão importante quanto a qualidade dos sotwares que azem a interace 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 denida como uma restrição entre dois conjuntos de atributos de uma mesma entidade/relação (ALVES, 2004). Essa denição pode ser eita sob uma linguagem mais precisa. Elmasri e Navathe (2005) armam que uma dependência uncional, denotada por X →Y entre dois conjuntos de atributos (que são subconjuntos) de uma relação R especicam 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 signica 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 exemplicado 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 inormaçõ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, dierentemente 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 inormaçõ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 inormações como nome_aluno, estamos duplicando desnecessariamente uma inormação. Uma solução aparente para esse problema seria unifcar as relações, de maneira que as inormaçõ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 inormações duplicadas. Complementando, podemos armar 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 inormações duplicadas devem ser propagadas para cada registro que contiver aquelas inormaçõ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 deniçã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 sucientes para termos uma boa deniçã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
•
eciência
•
acilidade de manutenção e alteração
•
fexibilidade
•
conabilidade
Vejamos, nos tópicos a seguir, as três ormas normais para que haja denição da estrutura do banco de dados. 1.2.1 A primeira forma normal
Existem muitos bancos de dados que armazenam inormações multivaloradas. Essas inormações são passíveis de decomposição. Uma inormação que não pode, ou não precisa ser decomposta é chamada de inormaçã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 inormaçõ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 rená-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 armando 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 signica que atributos parcialmente dependentes da chave serão removidos. A remoção dos atributos parcialmente dependentes não signica propriamente que essas inormaçõ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 inormaçõ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 eetuada sem a perda da capacidade de recuperação das inormaçõ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 vericando 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 identicaçã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 • eciência • acilidade de manutenção e alteração fexibilidade • • conabilidade 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 identicaçã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 dierentes.
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 armar 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 transerir 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 conerir 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 deniçã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á denido. 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 denido. 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 dierentes tipos de anomalias, por exemplo, anomalias de inserção que nos orçam a inserir inormações duplicadas e, além disso, obrigam a um esorç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 inormaçõ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 denitivo. 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 inormações relacionadas, no qual cada uma das inormaçõ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 eciente, 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 inormaçã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 denido 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 é eciente, mas pode resultar no aparecimento dos mesmos problemas do armazenamento não ordenado. Uma possibilidade de minimizar esses problemas é usar um arquivo de overow . 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), eetuam 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 eciê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 transormar 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 dierentes 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 dierentes. 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 uniorme, no qual os registros cam distribuídos de maneira equilibrada nos diversos blocos disponíveis. Um espalhamento é dito uniorme quando a dierenç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 inormações desejadas (SILBERCHARTZ; KORTH; SUDARSHAN, 2006). A utilização de um índice remissivo somente é útil se ele estiver ordenado, diminuindo o esorç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 dene 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 reerenciado por um índice dierente. 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 é dierente 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á armado 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 deniçã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 justicado 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 deniçã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 inormações e, ao mesmo, tempo ornece um mecanismo eciente 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 signica 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 dierentes 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 deasada 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 transerência globais (ELMASRI; NAVATHE, 2005). Portanto a utilização de uma técnica de armazenamento e a recuperação de inormações adequada pode se tornar o dierencial de um determinado banco de dados em relação a outros. Aspectos como a quantidade de inormações de um banco de dados, os dispositivos ísicos de armazenamento disponíveis e os recursos de sotware 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 eciê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 dierentes 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 perormance. 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 inormaçõ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 armar 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 conerir! 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 eetuar 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 eciente) 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 armado. 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 inormaçõ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 eciente às operações eetuadas 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 transerê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 Denindo transações
Date (2004, p. 63) arma 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 é transormar 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 inormar ao sistema quando dierentes 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 transerência bancária. Em meio a um processo de transerê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 transerê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 transerê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 conerê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 armar 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 é deseita; transações de dierentes 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 qualicada como uma transação. Vejamos agora, segundo Date (2004), o que signica cada uma delas. 3.3.1 Atomicidade
Uma transação deve ser uma unidade atômica de trabalho: ou todas as suas modicaçõ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 desazer 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, modicações eitas por transações simultâneas devem ser isoladas das modicaçõ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á sorendo 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 eeitos 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 modicações persistem até mesmo no caso de uma queda do sistema. Se todas as ações orem realizadas com sucesso, não signica 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 vericar 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 eetivação, eetivada, em processo de aborto e concluída. Uma transação pode se encontrar em dierentes estados. O grao 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 eetivaçã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 eetivadas com sucesso (não soram 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 eetivação. Suas ações já realizadas devem ser deseitas (ROLLBACK); eetivada: entra nesse estado após o SGBD conrmar 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 buers em disco, entre outros; concluída: estado nal de uma transação, ele indica uma transação que • deixa o sistema. As inormações das transações mantidas em catálogo podem ser excluídas (operações eitas, dados manipulados, buers 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 é transormar 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 deseita. 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 dierentes usuários que envolvem dados compartilhados são executadas em seqüência. Compreendeu também que, para ser qualicada 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 grao de transição de estados. Finalmente, viu que os estados de uma transação podem ser: ativa, em processo de eetivação, eetivada, em processo de aborto e concluída.
1. A partir do exposto na aula, como você dene transação? 2. Leia e analise atentamente as seguintes armativas 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 eetivadas com sucesso em um banco de dados ou nenhuma delas se eetiva. Isso é realizado para preservar a integridade do banco de dados. II. A propriedade de isolamento dene que cada transação deve ser isolada dos eeitos da execução concorrente de outras transações. III. A propriedade que dene 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 armativa I está incorreta. b) Somente as armativas I e II estão corretas. c) Somente as armativas II e III estão incorretas. d) Todas as armativas estão corretas. 3. Para você, qual é a importância das transações em um SGBD? 4. Leia atentamente as armativas 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 conrma que todas as modicações da transação estão garantidas no banco de dados. III. Eetivada é 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 armativas II e III estão incorretas. b) As armativas I e III estão incorretas. c) Somente a armativa IV está correta. d) As armativas I e IV estão incorretas.
Na atividade um, você armou que uma transação é a unidade lógica de trabalho, constituída de um conjunto de operações. Seu objetivo é transormar 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 armativa (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 dene que cada transação executada isoladamente deve preservar a consistência do banco de dados, e a propriedade de durabilidade dene 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 deseita. 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 deniçã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 armativas (II) e (III) estão incorretas, pois o estado eetivado é o estado em que o SGBD conrma que todas as modicaçõ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 dierente, 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 eetuada 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; identicar 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 interram 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 supercial, é semelhante ao problema apresentado na seção anterior, já que resulta na leitura inconsistente de valores por uma transação. A dierenç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 exemplicar 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 classicadas em técnicas pessimistas e otimistas. Elmasri e Navathe (2005) citam a seguinte classicação: a) pessimista •
bloqueio
•
timestamp (marcas de tempo)
b) otimista •
validação
As técnicas pessimistas presumem que sempre ocorrerá intererê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 intererê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 tarea. Logo o que ocorre em todos os protocolos nada mais é que uma deniçã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 diundidos 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 aetará 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 transerê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 eetua 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 reerido 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 denir o timestamp de uma transação. É por meio desses timestamp denidos 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. Conorme 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 denido para cada operação sobre o item de dados Q de uma transação. Esse protocolo, conorme 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) é denido 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 dene 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 é denido. 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 vericaçã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 eetivadas. 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 denidos três times- tamps dierentes para cada operação de uma transação. Conorme 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 inormação cuja plataorma é 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 conorme 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 conorme 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 denido o times- tamp de uma transação, são seguidas regras que denem 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 identicar 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 signica acesso às inormaçõ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 sotware , 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 Classicação de falhas
Existem vários tipos de alhas que podem ocorrer em um sistema, cada um deles precisa ser tratado de uma maneira dierente. O tipo mais simples de alha é o que não resulta na perda de inormações no sistema. Falhas que causam perda de inormaçõ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 , sotware 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ástroes : reerem-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 identicar os modos de alha dos dispositivos usados para armazenamento de dados. Em seguida, temos de considerar como esses modos de alhas aetam 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 eetuadas apesar das alhas (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). Essas ações podem ser tomadas durante a execução das transações para garantir que haja inormações sucientes 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 signica, 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 inormações sobre as alterações que oram aplicadas no banco de dados pelas várias transações executadas. Geralmente, essas inormaçõ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 reazendo as operações das transações armazenadas no log até o instante da alha. b) Quando o banco de dados não or danicado 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, desazendo algumas operações. Além disso, será necessário reazer 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 modicaçõ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 sucientes para que a transação seja reeita, caso necessário. Em geral, uma entrada de log, conorme Silberschatz, Korth e Sudarshan (2006) contém os seguintes campos: identifcador de transação: é o identicador 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 : identicador ú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 desazer 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 modicado. Após o registro em log da transação, a modicaçã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 danicado 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 eetuada 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 eciê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 eetivaçã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 eetivação, há a gravação do log em um meio estável de armazenamento, então as atualizações podem ser eetuadas sobre o banco de dados. Se uma transação alhar antes de alcançar o seu ponto de eetivação, não será necessário desazer nenhuma alteração, pois a transação não aetou o banco de dados no disco. Assim, segundo Elmasri e Navathe (2005), podemos denir 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 eetivação; b) uma transação que não alcança o seu ponto de eetivaçã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 aetam 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 inormando 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 eetivação. Outra opção é compor comandos que gerem relatórios e os mantenham como tareas em lote, sendo executadas apenas depois que a transação alcançar seu ponto de eetivação. Caso a transação alhe, as tareas em lote são canceladas. 5.2.3 Recuperação baseada na atualização imediata
As técnicas de modicação imediata permitem que as modicações no banco de dados sejam enviadas ao sistema quando a transação ainda está em estado ativo. As modicaçõ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 modicados 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 eetivaçã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 identicar dois tipos principais de algoritmos de atualização imediata, que citamos a seguir. • Algoritmo de recuperação UNDO/NO-REDO (desaz e não reaz) : 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 eetivar . Dessa orma, em caso de alha na transação, não será necessário reazer as atualizações, apenas desazer as que já executaram. • Algoritmo UNDO/REDO (desaz-reaz): se é permitido que a transação seja eetivada 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 vericação ( checkponts )
Quando ocorre uma alha do sistema, é preciso consultar o arquivo de log para determinar quais transações precisam ser reeitas e quais transações precisam ser deseitas. Em muitos casos, é preciso percorrer todo o arquivo de log para obter essa inormação. Conorme Silberschatz, Korth e Sudarshan (2006), essa técnica apresenta duas difculdades: o processo de busca é demorado; • • a maioria das transações que precisam ser reeitas já enviaram suas atualizações para o banco de dados. Embora reazê-las não cause dano algum, a recuperação leva mais tempo. Para reduzir esse tipo de sobrecarga, são utilizados os pontos de vericaçã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 modicados; 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 identicar a transação T que oi iniciada após o último ponto de vericação. Dessa maneira, apenas precisarão ser deseitas, ou reeitas 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 buer 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 desazer 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 modicado 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 reeita. 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 eetivada. 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 dierentes sítios e ainda sob a gerência de dierentes 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 inormaçõ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 eetivação a m de inormar 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 “eetivar” para cada participante, que gravará as alterações em log. A idéia é que todos os bancos de dados eetivem 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 eetivada 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 (deseita), enquanto que uma alha durante a ase 2 requer que a transação seja revertida e, em seguida, eetivada (deseita e reeita novamente). 5.2.7 Sistema de backup
Certamente você já ouviu alar em backup e, provavelmente, a denição mais encontrada para esse termo é cópia de segurança. Muitos administradores de bancos de dados eetuam essa tarea 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 danicado 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 eetuada e aplicar sobre essa cópia todos os registros de log das transações eetuadas 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 dierentes para aumentar a confabilidade do sistema de detecção de alhas. Transerê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 inormações correspondem a um dos bens mais preciosos das instituições. A perda dessa inormação pode trazer um prejuízo muito grande em termos de tempo, de reazer 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 inormações sucientes para que transações sejam reeitas quando necessário. Vimos também os métodos baseados em atualização adiada e imediata. O primeiro sugere que os dados sejam eetivados no banco de dados denitivo 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 denem 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 identicar as transações eetuadas 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 armar 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 reazer 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 vericar 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 reerencie 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 sucientemente instrumentadas para lidar com alhas causadas pelos usuários, pois permitem desazer e reazer 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 armaçã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 suciente 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 dierenç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 sotwares 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 inormaçã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 desaos surgiram. Um desses desaos era azer com que uma única aplicação pudesse operar de modo transparente sobre dados dispersos, armazenados em bases de dados dierentes e gerenciados por dierentes 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 eciente, 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 sotware 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 dierenç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) dierentes (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 dierentes, 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 eciente 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 dierente (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 dierentes. 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 transerê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 inormações dos clientes de uma determinada cidade cassem armazenadas localmente. Dessa orma, apenas seria necessário transerir 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 dierente. 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 dierente. É necessário, porém, associar cada uma das colunas ragmentadas à relação original. Isso pode ser eito adicionando um campo que identique 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 diculta acessos indevidos a uma linha completa de uma tabela. Assim os dados acessados indevidamente podem não ser completos ou signicativos, 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 sotware que é utilizado em todo o sistema. Se os servidores e clientes utilizam sotware de um mesmo abricante ou ornecedor ( sotwares 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 denir um padrão de interoperabilidade. A interoperabilidade diz respeito à capacidade de um sistema interagir com outros, de dierentes 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 é denir um protocolo comum de comunicação. Dessa maneira, mesmo com tecnologias dierentes, pode-se utilizar uma linguagem comum. Outro aspecto que pode ser usado para classicaçã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 sorer nenhuma intererê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 tareas, 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 é tarea similar a de azer o mesmo em bancos de dados isolados, mas, no caso das transações globais, essa tarea 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 tareas 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 dierentes estão baseados nessa idéia, mas eles dierem 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 modicaçã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 dierentes. 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 inorma 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 inorma 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 dierentes 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 desaos 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 desaos é 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 dierentes 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 dierentes. 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 dierentes. d) A vantagem é armazenar os dados em um púnico ragmento, por isso é chamada de vertical. 2. Sobre transações distribuídas, é incorreto armar que: a) podem ser classicadas 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 dierenças entre o controle de concorrência em bancos de dados distribuídos e bancos de dados isolados? 4. Quais as principais dierenç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, dicultando 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 dierentes 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 dierentes – horizontal – ou se conjuntos de atributos são armazenados em sítios dierentes). 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 sorer 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 classicadas como locais ou globais. A alternativa (b) é correta, já que transações locais são eetuadas 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 dierenç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 dierentes sítios. Além disso, os mecanismos de bloqueio devem considerar dierentes 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 dierentes 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 dierentes 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 especicamente 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 inormaçã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 prossionais. Algumas áreas, como a segurança de dados, são muito importantes, já que em bancos de dados podem ser armazenadas grandes quantidades de inormações condenciais 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 diundidas, como HTML – Hypertext Transer 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 reere-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 dierente, 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 inormaçõ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 denidas para uma aplicação, situação ou simplesmente atenda os requisitos de estruturação denidos pelo usuário. A denição das tags, que poderão ser utilizadas para estruturar um documento XML, ca armazenada em um arquivo do tipo DTD – Document Type Denition. A partir da estrutura pré-denida em um DTD, podem-se especicar os elementos que estarão contidos no documento XML. Essa denição também pode ser eita utilizando-se uma API – Application Program Interace –, 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 deniçã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 denir uma estrutura de documento que seja utilizada como ormato para intercâmbio, diversas aplicações com arquiteturas dierentes podem compartilhar dados de maneira eciente sem que seja necessário reazê-las. Outra característica marcante da linguagem XML é que a estrutura pode ser denida em um arquivo, enquanto o conteúdo, ou seja, os dados que serão estruturados de acordo com a estrutura denida 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 inormaçõ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 denição da orma de apresentação independente do conteúdo e da estrutura conere à linguagem XML uma fexibilidade muito grande, tornando os documentos acilmente personalizáveis. A Figura a seguir ilustra gracamente 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é-denidas 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 inormaçõ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 denidas 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 denida 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 sotware 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 dierentes. Observe a dierença entre eles a seguir. Segurança: signica proteger os dados contra usuários não-autorizados; • Integridade: signica 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 reere a muitas questões. • Questões legais e éticas reerentes ao direito de acesso a certas inormações. Questões políticas no nível governamental, institucional ou corporativo, • como quais tipos de inormaçõ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 aetem 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 inerência • controle de fuxo • criptograa • Uma das maneiras de garantir o controle de acesso é denir 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 inormaçã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 inormaçõ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) dierentes sobre objetos dierentes. Além disso, há bem poucas limitações inerentes a respeito de quais usuários podem ter privilégios dierentes sobre dierentes 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 classicaçã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 criptograa. 7.2.1 Criptograa
A criptograa é 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 criptograa permite que os dados sejam protegidos, já que, mesmo de posse das inormações presentes no banco de dados, elas não estão escritas de orma inteligível.
O algoritmo de criptograa em si não necessita ser secreto, porém a chave usada para criptograar e descriptograar 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 criptograa aumenta a segurança dos dados se eles orem armazenados e transmitidos na orma de texto cirado, 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 é criptograado 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 criptograa 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, dierem da então criptograa 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 criptograa de chave pública genérica se baseia em uma chave para cirar e outra chave dierente, porém relacionada, para decirar, de acordo com os seguintes passos: cada usuário gera seu par de chaves para cirar e decirar 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 cira a mensagem utilizando a chave pública do destinatário; quando o destinatário receber a mensagem, decira a mensagem utilizando a chave privada do destinatário. Nenhum outro receptor pode decirar 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 condencialidade 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 inormaçõ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 transerê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 decodicar as inormaçõ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 denidas 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 denida 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 eetuado no SGBD. c) A criptograa 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 denitiva e qualquer um que os acessar pode decirá-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 vericar 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 criptograados com a tecnologia de chaves públicas somente podem ser decirados 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 inormação é um aspecto chave na sociedade atual. Muitos esorços têm sido realizados nesse sentido, porém, ainda existem muitas vulnerabilidades a serem solucionadas. Entretanto há ambientes seguros para a troca de inormações, por isso não podemos considerar a segurança um sonho, já que em muitos sistemas a diculdade 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 dierentes. 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 denido em separado e aplicado a todos os documentos armazenados. Outra possibilidade seria personalizar a apresentação dos dados para dierentes categorias de usuários, ou ainda, validar, baseando-se em uma estrutura pré-denida, os dados contidos em um documento antes de armazená-los no banco de dados. Na atividade quatro, você armou 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 suciente para garantir a segurança das inormações. A junção de técnicas soa como uma solução mais completa e ecaz, já que, se uma barreira or vencida, ainda restarão outros mecanismos para impedir que os dados sejam prejudicados ou acessados indevidamente. Por exemplo, eetuar o controle de acesso com senhas criptograadas ou, ainda, criptograar as denições de permissão para os dierentes usuários dicultam um possível ataque utilizando inormaçõ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