Você está na página 1de 13

Introduo

Devido ao ambiente de grande competitividade em que as organizaes de hoje tm


que actuar, estas so foradas a distribuir-se geograficamente, procurando as
condies locais mais favorveis produo e/ou explorao do seu negcio.

Por essa razo, hoje vulgar o caso de organizaes cujas instalaes se encontram
dispersas por vrios pontos geogrficos, dispondo cada um destes de bases de dados e
meios de processamento prprios. Contudo, apesar da relativa autonomia dessas
bases de dados locais, normal haver a necessidade de manter uma perspectiva
integrada dos dados da organizao.

Ou seja, os dados apesar de fisicamente distribudos devero estar logicamente
integrados. Essa a justificao principal para as bases de dados distribudas.


Bases de Dados Distribudas

Um sistema de bases de dados distribudas consiste em mltiplos servidores, cada
um responsvel pelos seus dados. Estes dados podem ser acedidos utilizando uma rede
e, apesar de estarem fisicamente distribudos, devem apresentar-se ao utilizador
logicamente integrados, como se estivessem num nico servidor.






A principal razo para utilizar bases de dados distribudas o facto do problema
em anlise ter uma natureza distribuda. Por exemplo, no caso de uma organizao que
tenha a sua sede em Coimbra e uma fbrica A em Braga, um armazm B em Aveiro e
uma fbrica C em vora, pode fazer sentido utilizar uma base de dados distribuda, pois
espelha a estrutura da organizao.

Mas, s vezes, no faz sentido ter um servidor em vrios locais. Por exemplo, se
uma empresa tem sede na alta de Coimbra e 3 lojas na baixa, no faz sentido ter um
servidor em cada local. Nesta situao, talvez seja mais adequada uma soluo
cliente/servidor. Portanto, se o problema no tiver uma natureza distribuda, no
devemos utilizar uma base de dados distribuda.

Cada Servidor que participa na base de dados distribuda tem uma autonomia
local, ou seja, administrado (contas, segurana, ...) separada e independentemente dos
outros servidores. Esta autonomia local tem vrias vantagens:
Os nodos dos sistemas podem espelhar mais facilmente a estrutura lgica das
organizaes onde se inserem;
Os dados locais so controlados por um administrador local, pelo que o domnio de
administrao menor e mais manejvel;
A recuperao de falhas pode, em muitos casos, ser efectuada numa base
estritamente local;
Os nodos do sistema podem ter a dimenso mais adequada a cada problema local e
crescer independentemente.
Uma base de dados distribuda surge ao utilizador como se fosse uma
nica base de dados, mas na realidade constituda por vrias bases
de dados distribudas por diversos servidores.
Bases de Dados Distribudas Oracle
2
Resoluo de nomes

Antes de verificarmos como as vistas e os sinnimos permitem obter transparncia na
localizao de objectos numa base de dados ORACLE distribuda, vamos fazer uma
pequena abordagem sobre a resoluo de nomes deste sistema.







Para os nomes de objectos locais: o SGBD garante a unicidade de nomes dentro de
cada esquema; o SGBD garante a unicidade de nomes de esquemas em cada base de
dados local; cada dicionrio local s contm nomes dos objectos locais.


Para os nomes globais, cada base de dados local que participa na base de dados
distribuda tem um nome global unvoco (nome da base de dados + domnio da rede
que contm a base de dados). No ORACLE, este mecanismo no automtico.
usual ser o DBA a pessoa responsvel por dar os nomes s bases de dados.








Como o SGBD ORACLE assegura que o nome de um objecto nico dentro de uma
base de dados, podemos estar certos que ele de facto nico ao longo de todas as bases
de dados, se forem atribudos nomes globais nicos de bases de dados.

SELECT * FROM scott.emp@bdlisb.di.lis.pt;
esquema objecto Base de dados domnio
Cada objecto (ex: Tabela) de qualquer esquema existente na base de
dados distribuda tem de ter um nome unvoco.
Bases de Dados Distribudas Oracle
3
Comandos Remotos e Distribudos

Interrogao remota
o Selecciona (Select) informao de uma ou mais tabelas todas residentes no
mesmo n remoto.
Actualizao remota
o Modifica dados numa ou mais tabelas todas residentes no mesmo n remoto.
Interrogao distribuda
o Selecciona informao de dois ou mais ns da BDD.
Actualizao distribuda
o Modifica dados em dois ou mais ns da BDD.

Transaces Remotas e Distribudas

Transaco remota
o Contm um ou mais comandos remotos, todos referenciando o mesmo n.
Transaco distribuda
o Inclui comandos que acedem a dados em dois ou mais ns distintos.

Transaces Distribudas

Uma transaco distribuda termina com commit em todos os servidores que
participam na transaco, ou ento termina com rollback em todos os servidores;

O mecanismo/protocolo mais conhecido para garantir a execuo de transaces
distribudas o two-phase-commit.

Transparncia numa base de dados distribuda

Na localizao fsica de objectos;
Nas interrogaes e actualizaes distribudas;
Nas transaces distribudas;
Na replicao de objectos;
Bases de Dados Distribudas Oracle
4
Transparncia na localizao de objectos

Apesar de, num sistema de bases de dados distribudas, os dados se encontrarem
dispersos, pretende-se que, ao nvel dos utilizadores do sistema e das aplicaes, se
tenha uma perspectiva integrada dos mesmos.

Assim, um utilizador deve poder referenciar uma mesma tabela sempre da mesma
maneira, independentemente do n a que se liga.

No SGBD ORACLE, a transparncia na localizao de objectos pode ser conseguida
atravs da utilizao de vistas locais e de sinnimos.


Vistas (Locais) e transparncia na localizao de objectos

As vistas locais podem fornecer transparncia na localizao para tabelas locais e
remotas, num sistema distribudo. Por exemplo:

Vamos assumir que a tabela ALUNOS est armazenada na base de dados local e a
tabela DEPT (departamentos) est armazenada numa base de dados remota. Para tornar
a localizao e o relacionamento destas tabelas transparente para os utilizadores do
sistema, podemos criar uma vista na base de dados local, que faa a juno das duas
tabelas:

CREATE VIEW Universidade AS
SELECT A.numalu, A.nomealu, B.nomedep
FROM Arnaldo.ALUNOS A, Anibal.DEPT@bdbib.fct.uc.pt B
WHERE A.numdept = B.numdept;

Quando os utilizadores acedem vista Universidade, no precisam saber onde que os
dados esto fisicamente armazenados nem se os dados foram acedidos a partir de uma
ou mais tabelas. Para visualizar os dados da vista acima criada, podemos utilizar a
seguinte instruo:

SELECT * FROM Universidade

Devemos, no entanto, ter em conta que se uma das tabelas acima referidas mudasse
de localizao, tnhamos que mudar a definio da vista. Contudo, no acesso vista
tudo continuava a ser transparente.

Podem-se apontar como vantagens da utilizao de vistas:
Simplificao do acesso remoto;
A localizao fsica dos objectos pode ser alterada sem que isso tenha impacto nos
utilizadores finais ou nas aplicaes.

Uma vista uma tabela lgica que permite aceder aos dados de outras tabelas e/ou de
outras vistas. As vistas podem-se consultar, actualizar (com as limitaes j conhecidas)
e apagar como as tabelas.
Bases de Dados Distribudas Oracle
5
Sinnimos e transparncia na localizao de objectos

Os sinnimos tambm podem conferir transparncia na localizao dos objectos, pois
escondem a identidade dos objectos referidos. Se o objecto referido pelo sinnimo for
mudado para outro local, s necessrio alterar a definio do sinnimo.

Os sinnimos devem ser pblicos e tm que ser declarados em todas as bases de dados
locais. Por exemplo, vamos assumir que em todas as bases de dados de um sistema
distribudo definido um sinnimo pblico DISCIPLINA para uma tabela DISC
pertencente ao esquema ANTUNES armazenada na base de dados LISB.

CREATE PUBLIC SYNONYM disciplina FOR antunes.disc@lisb.di.ul.pt;

Se a tabela DISC for mudada da base de dados LISB para a base de dados PORTO, s
necessrio mudar a definio dos sinnimos pblicos nas bases de dados do sistema
distribudo. Para os utilizadores, o acesso informao transparente.

CREATE PUBLIC SYNONYM disciplina FOR antunes.disc@porto.di.up.pt;

Um sinnimo um nome alternativo para uma tabela, vista, sequncia, procedure,
snapshot ou outro sinnimo.

Transparncia nas consultas e actualizaes distribudas

Os comandos DML (Select, Insert, Update, Delete,...) devem poder ser utilizados para
acessos remotos e distribudos como se fosse para acessos locais.

Exemplos:

INSERT INTO scott.emp@vendas.cc.pt
SELECT * FROM emp;

SELECT A.nfunc, A.fnome, B.dnome
FROM scott.emp@vendas.cc.pt A, princ.dept@sede.cc.pt B
WHERE A.ndept = B.ndept;


Transparncia nas transaes distribudas

As transaces distribudas so controladas pelos mesmos comandos standard (Commit,
Savepoint, Rollback) das transaces locais, sem necessidade de qualquer outra aco:
Os comandos numa transaco podem referenciar qualquer nmero de tabelas locais
ou remotas;
O SGBD garante que todos os nodos envolvidos na transaco tomam a mesma
aco; ou fazem todos commit ou fazem todos rollback (protocolo Two-Phase-
Commit);
Se houver uma falha na rede durante a transaco distribuda, o sistema deve
garantir que a transaco resolvida globalmente, sem necessidade de interveno
explcita.

Bases de Dados Distribudas Oracle
6
Replicao

Uma das decises que temos que tomar num sistema de bases de dados distribudas
optar por distribuir ou replicar os dados. Esta escolha deve ser principalmente
determinada pela necessidade de ter a informao repetida em vrios nodos do
sistema ou se os dados podem estar claramente divididos pelos nodos.

Num ambiente replicado existem vrios nodos com as cpias dos mesmos dados.
Manter mltiplas cpias (rplicas) desses dados requer mais recursos do sistema e torna
ainda mais complexa a gesto do mesmo, pois, se h duplicao de dados, necessrio
manter a sua coerncia global.


Transparncia na replicao de objectos

O SGBD deve ter mecanismos para, de uma maneira transparente, replicar certos
objectos muito crticos.

Manter cpias de uma mesma tabela em vrios pontos da base de dados
distribuda pode ter interesse se:
A tabela interrogada frequentemente, pelo que uma cpia local melhora a
velocidade;
A tabela modificada muito raramente, pelo que o custo da gesto das rplicas
baixo;
Se uma das cpias falhar, o sistema dever permitir o acesso a uma rplica da tabela
localizada noutro n.

O SGBD Oracle tem uma ferramenta grfica que nos permite administrar o ambiente
replicado a partir de um dado local Oracle Replication Manager.

Com esta ferramenta, podemos criar grupos de replicao constitudos por tabelas,
vistas, triggers, etc. Podemos fazer Drag and Drop de um grupo de replicao para
outras bases de dados, para adicionar novos stios de replicao ao ambiente. Se
adicionarmos ou eliminarmos objectos de um grupo de replicao, essas alteraes so
automaticamente propagadas a todos os stios. O Replication Manager tambm pode ser
utilizado na resoluo de erros.
Bases de Dados Distribudas Oracle
7
Gesto de Tabelas replicadas numa Base de Dados Distribuda

Actualizao sncrona
o Utilizando Triggers para desencadear a actualizao (atmica) de todas as
rplicas assim que uma delas alterada.
Os trigggers podem ser utilizados, como alternativa aos snapshots, para manter cpias
de tabelas em mltiplos nodos de um sistema de bases de dados distribudas. Cada
rplica pode ser actualizada. As alteraes de uma rplica so automtica e
imediatamente propagadas s outras rplicas distribudas.

A replicao de uma tabela se for implementada utilizando triggers, tem as
seguintes caractersticas:
Cada cpia pode ser consultada e actualizada. Todas as actualizaes so
propagadas imediatamente a todas as rplicas.
As actualizaes remotas realizadas pelos triggers so confirmadas (commited) pela
transaco contida no trigger de Actualizao, utilizando o protocolo Two-Phase-
Commit.
Se os triggers estiverem desactivados, as operaes de replicao no so efectuadas
at que os triggers fiquem activados de novo.
Se ocorrer uma falha na rede entre os nodos que tm rplicas, nem a cpia local nem
as remotas podem ser actualizadas at que a falha na rede seja resolvida, limitando,
assim, a performance.

CREATE TRIGGER emp_upd
BEFORE UPDATE ON emp
FOR EACH ROW
BEGIN

UPDATE Anibal.emp@lisb.fc.ul.pt SET
numemp = :new.numemp,
numdept = :new.numdept,
WHERE numemp = :old.numemp;

END;

O trigger acima indicado dispara imediatamente antes de cada actualizao feita na
tabela EMP da base de dados local, e vai actualizar a tabela EMP (rplica) da base de
dados LISB.


A replicao sncrona til em situaes em que temos uma rede estvel e
necessitamos que os dados replicados estejam continuamente sincronizados.

Bases de Dados Distribudas Oracle
8

Actualizao assncrona
o H uma tabela mestre e um nmero arbitrrio de rplicas (snapshots);
o A tabela mestre est num dos nodos e a nica que pode ser actualizada; as
rplicas so s de leitura;
o As rplicas (snapshots) so periodicamente actualizadas, de modo a reflectir
o estado mais recente da tabela mestre.

Esta abordagem tem a desvantagem de no se conseguir espelhar totalmente a tabela
mestre. No caso de esta ser actualizada e antes de ser feita a actualizao (peridica) das
rplicas se se fizer uma consulta a essas mesmas rplicas, vem-se os dados antigos.

Quando se utilizar a propagao assncrona, deve ter-se em conta o seguinte:

As actualizaes so propagadas nos intervalos de tempo que forem convenientes.
Para simular uma situao prxima da replicao em tempo real, pode-se utilizar um
intervalo de poucos segundos.
As alteraes na tabela mestre no so reflectidas imediatamente nas rplicas locais,
resultando numa inconsistncia temporria entre as rplicas.

Criar um snapshot semelhante a criar uma tabela. Pode-se especificar as suas
caractersticas de armazenamento (data blocks, extent sizes, parmetros de
armazenamento, tablespace). Podemos especificar o modo de actualizao (rpida ou
completa) e a query distribuda que define o snapshot. Uma actualizao rpida requer
um snapshot log e actualiza somente os registos que foram alterados desde a ltima
actualizao. Uma actualizao completa regenera por completo o snapshot, a partir da
tabela mestre. No exemplo seguinte, cria-se um snapshot, na base de dados LISB, da
tabela EMP, que est na base de dados PORTO.

CREAT SNAPSHOT emp_lisb
PCTFREE 10 PCTUSED 70
TABLESPACE utilizadores
STORAGE (INITIAL 50K NEXT 50K PCTINCREASE 50)
REFRESH FAST
START WITH sysdate
NEXT sysdate + 7
AS SELECT * FROM emp@porto

Sempre que um snapshot criado, imediatamente carregado com os registos
devolvidos pela query que define o snapshot. A partir desse momento o snapshot
actualizado como especificado pela palavra refresh. Como os snapshots so contidos
no esquema, devem ter um nome nico, tendo em conta os outros objectos do esquema.


Bases de Dados Distribudas Oracle
9

Seleccionar o mtodo de replicao de uma tabela uma tarefa muito importante.

Se a tabela a ser replicada for actualizada bastantes vezes e essas alteraes s
necessitarem de ser reflectidas nas outras rplicas periodicamente, ento a utilizao
de snapshots a melhor alternativa. Utilizar triggers nesta situao provoca uma
degradao desnecessria da performance.

Se as actualizaes a uma tabela replicada devem reflectir sempre (continuamente) o
estado corrente da tabela nas outras rplicas, ento a replicao sncrona, utilizando
triggers deve ser considerada.



Tambm podemos escolher um ambiente replicado no qual alguns nodos propagam as
alteraes de um modo sncrono enquanto os outros utilizam a propagao assncrona.
Bases de Dados Distribudas Oracle
10
Atomicidade nas transaces distribudas

Problema: Garantir que numa transaco distribuda os ns envolvidos na transaco
ou fazem todos commit ou fazem todos rollback.

Surge Quando: Uma transaco contm comandos DML que referenciam objectos
remotos (usando o nome global do objecto) com o objectivo de modificar os dados
neles contidos.

(Se um n remoto referenciado apenas para leitura no necessita de
participar nas aces que garantem execuo atmica da transaco)


Protocolo two-phase-commit

Fase de preparao
o O coordenador global (n que inicia o processo comeando a executar o
comando commit) pergunta aos ns que participam na transaco se esto
preparados para terminar a transaco (commit ou rollback).

Fase de concluso (commit phase)
o Se todos os participantes respondem ao coordenador que esto preparados,
ento o coordenador manda efectuar o commit;

o Se algum dos participantes diz que no est preparado ento o coordenador
manda todos os ns envolvidos efectuar rollback.

Fase de Preparao

Em resposta ao n coordenador (para preparar o fim da transaco) cada n participante
pode responder uma de trs coisas:

Preparado
o Todos os dados do n referidos pelos comandos DML da transaco
distribuda j foram modificados e o n est preparado para terminar a
transaco;
S de leitura
o Os comandos executados na transaco no alteram dados no n, pelo que
no necessria qualquer preparao;
Abortar
o Ocorreu um erro e o n no est preparado para terminar a transaco com
xito.

Bases de Dados Distribudas Oracle
11
Passos na fase de preparao

Depois de ter recebido ordem para se preparar, um n executa os seguintes passos:

Indica aos seus descendentes, se houver, (ns subsequentemente referidos por este
n) para se prepararem;
Reserva todos os recursos necessrios para fazer o commit;
Efectua uma srie de aces, de modo a garantir que os dados bloqueados (os que
foram alterados) vo sobreviver a eventuais falhas;
Responde ao n que lhe ordenou para se preparar, de acordo com o resultado da sua
fase de preparao.

Insucesso na fase de preparao

Quando um n no se consegue preparar para terminar a transaco com xito:

Efectua rollback da parte local da transaco;
Liberta todos os recursos afectos a essa transaco;
Responde ao n que lhe solicitou para se preparar a indicar que abortou a transaco

Estas aces so propagadas aos outros ns envolvidos na transaco

Fase de concluso (commit phase)

Nesta fase h garantia de que todos os ns envolvidos esto em condies de terminar a
transaco com xito:

1. Todos os ns recebem a ordem para efectuar commit;

2. Em cada n o SGBD faz o commit da parte local da transaco e liberta os bloqueios
correspondentes; Regista que a transaco terminou nas estruturas que garantem
tolerncia a falhas.

Falhas durante o two-phase-commit

Uma grande variedade de falhas pode ocorrer durante a execuo do mecanismo two-
phase-commit:

Falhas nos ns;
Falhas na rede;
Falhas de software.


O objectivo das tcnicas de tolerncia a falhas
garantir que no h perda de dados, qualquer que seja a
falha, mesmo que esta ocorra durante a execuo do
mecanismo de two-phase-commit.
Bases de Dados Distribudas Oracle
12
Concluso

O processamento distribudo mais adaptado estrutura de muitas das organizaes
actuais. Proporciona melhor desempenho e maior facilidade de expanso, e aumenta a
disponibilidade do sistema. No entanto, devemos ter em conta que, sob determinadas
condies, o desempenho e a disponibilidade do sistema tambm podem diminuir. Por
outro lado, tem maior complexidade, tornando-se mais difcil de controlar.

Para se conseguir obter transparncia na localizao dos objectos, devem-se utilizar
vistas ou sinnimos. Mas quando os dados mudam de local, tem que se alterar quer a
definio das vistas quer dos sinnimos.

Os snapshots so actualizados periodicamente, com as vrias actualizaes a ocorrerem
numa nica operao, permitindo, assim, manter a consistncia transaccional entre as
vrias cpias da tabela mestre. Alternativamente, a replicao de uma tabela utilizando
triggers implica que, sempre que ocorra uma alterao, se actualizem imediatamente
todas as outras rplicas. Portanto, se ocorrer um nmero significativo de actualizaes,
os snapshots so mais eficientes do que os triggers, porque vrias actualizaes so
concentradas numa nica operao, a qual requer menos trfego na rede. Por outro lado,
se algum nodo ou a rede forem abaixo quando se estiver a fazer uma actualizao, e
estivermos a utilizar triggers, a actualizao no pode ser concluda. Adicionalmente, os
snapshots so mais simples de implementar do que os triggers. Assim, podemos
concluir que s se devem utilizar triggers para fazermos a replicao de uma tabela, se a
aplicao requiser as caractersticas que os triggers oferecem.

Basicamente, a gesto de tabelas replicadas num sistema de base de dados distribudas
pode ser feita de duas maneiras:
Actualizao sncrona Utilizando triggers para desencadear a actualizao
(atmica) de todas as rplicas assim que uma delas alterada.
Actualizao Assncrona H uma tabela mestre e um nmero arbitrrio de rplicas
(snapshots); s a tabela mestre actualizada; as rplicas so s de leitura; as rplicas
so periodicamente actualizadas de modo a reflectir as ltimas alteraes na tabela
mestre.

No SGBD Oracle, a atomicidade das transaces garantida atravs do protocolo two-
phase-commit. Este protocolo garante que numa transao distribuda, os nodos
envolvidos ou fazem todos commit ou fazem todos rollback. Se um nodo referenciado
apenas para leitura, no necessita de participar nas aces que garantem a execuo
atmica da transao.

Quando optamos entre uma propagao assncrona e uma propagao em tempo real
(sncrona), estamos a escolher entre eficcia e complexidade.
Com um ambiente completamente sncrono, temos a vantagem de termos sempre a
informao mais recente em todos os nodos. Portanto, tomamos as decises baseados na
informao mais recente.
Com um ambiente completamente assncrono, tem-se a vantagem de ter uma eficcia
contnua, pois nenhum nodo dependente de outro, para permitir que uma actualizao
seja realizada. Se um site for abaixo, pode-se trocar para outro e continuar a trabalhar.
As nossas necessidades iro determinar qual dos mtodos de propagao o mais
apropriado.
Bases de Dados Distribudas Oracle
13

Bibliografia
Abbey, M. and Corey, M., Oracle 8: A Beginners Guide, Oracle Press, 1997.
Oracle Corp., Oracle7 Server SQL Language Reference Manual.
Oracle Corp., Oracle7 Server Application Developers Guide.
Pereira, J. L., Tecnologia de Bases de Dados (2. Edio), FCA Editora de
Informtica, 1998. (Captulo 7).
Oracle7 Server Distributed Systems Volume I: Distributed Data
Oracle7 Server Distributed Systems Volume I: Replicated Data
Oracle7 Server Distributed Systems Volume II: Replicated Data