Buscar

Bancos de dados distribuídos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 53 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 53 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 53 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Brasília-DF. 
Banco de dados distriBuídos
Elaboração
Ednewton de Vasconcelos
Produção
Equipe Técnica de Avaliação, Revisão Linguística e Editoração
Sumário
APrESEntAção ................................................................................................................................. 4
orgAnizAção do CAdErno dE EStudoS E PESquiSA .................................................................... 5
introdução.................................................................................................................................... 7
unidAdE i
Introdução a Banco de dados dIstrIBuídos ................................................................................. 9
CAPítulo 1
conceIto de Banco de dados dIstrIBuídos ...................................................................... 9
CAPítulo 2 
algumas questões prelImInares ....................................................................................... 16
CAPítulo 3 
Funções adIcIonaIs do Banco de dados dIstrIBuído ................................................... 20
unidAdE ii
prIncípIo de Banco de dados dIstrIBuídos ................................................................................... 22
CAPítulo 1 
Fundamentos do Banco de dados dIstrIBuídos ............................................................. 22
unidAdE iii
arquItetura e projeto de Banco de dados dIstrIBuídos............................................................. 32
CAPítulo 1 
transações ......................................................................................................................... 32
CAPítulo 2 
tIpos de sIstemas Bdd ......................................................................................................... 38
CAPítulo 3 
proBlemas de sIstemas dIstrIBuídos .................................................................................. 41
unidAdE iV
controle, sIncronIzação e atualIzação em sIstemas dIstrIBuídos ........................................... 49
CAPítulo 1 
processamento de consulta, sIstemas de dIretórIos e protocolos de acesso ao 
dIretórIo ............................................................................................................................. 49
PArA (não) finAlizAr ..................................................................................................................... 52
rEfErênCiA .................................................................................................................................... 53
4
Apresentação
Caro aluno
A proposta editorial deste Caderno de Estudos e Pesquisa reúne elementos que se entendem 
necessários para o desenvolvimento do estudo com segurança e qualidade. Caracteriza-se pela 
atualidade, dinâmica e pertinência de seu conteúdo, bem como pela interatividade e modernidade 
de sua estrutura formal, adequadas à metodologia da Educação a Distância – EaD.
Pretende-se, com este material, levá-lo à reflexão e à compreensão da pluralidade dos conhecimentos 
a serem oferecidos, possibilitando-lhe ampliar conceitos específicos da área e atuar de forma 
competente e conscienciosa, como convém ao profissional que busca a formação continuada para 
vencer os desafios que a evolução científico-tecnológica impõe ao mundo contemporâneo.
Elaborou-se a presente publicação com a intenção de torná-la subsídio valioso, de modo a facilitar 
sua caminhada na trajetória a ser percorrida tanto na vida pessoal quanto na profissional. Utilize-a 
como instrumento para seu sucesso na carreira.
Conselho Editorial
5
organização do Caderno 
de Estudos e Pesquisa
Para facilitar seu estudo, os conteúdos são organizados em unidades, subdivididas em capítulos, de 
forma didática, objetiva e coerente. Eles serão abordados por meio de textos básicos, com questões 
para reflexão, entre outros recursos editoriais que visam a tornar sua leitura mais agradável. Ao 
final, serão indicadas, também, fontes de consulta, para aprofundar os estudos com leituras e 
pesquisas complementares.
A seguir, uma breve descrição dos ícones utilizados na organização dos Cadernos de Estudos 
e Pesquisa.
Provocação
Textos que buscam instigar o aluno a refletir sobre determinado assunto antes 
mesmo de iniciar sua leitura ou após algum trecho pertinente para o autor 
conteudista.
Para refletir
Questões inseridas no decorrer do estudo a fim de que o aluno faça uma pausa e reflita 
sobre o conteúdo estudado ou temas que o ajudem em seu raciocínio. É importante 
que ele verifique seus conhecimentos, suas experiências e seus sentimentos. As 
reflexões são o ponto de partida para a construção de suas conclusões.
Sugestão de estudo complementar
Sugestões de leituras adicionais, filmes e sites para aprofundamento do estudo, 
discussões em fóruns ou encontros presenciais quando for o caso.
Praticando
Sugestão de atividades, no decorrer das leituras, com o objetivo didático de fortalecer 
o processo de aprendizagem do aluno.
Atenção
Chamadas para alertar detalhes/tópicos importantes que contribuam para a 
síntese/conclusão do assunto abordado.
6
Saiba mais
Informações complementares para elucidar a construção das sínteses/conclusões 
sobre o assunto abordado.
Sintetizando
Trecho que busca resumir informações relevantes do conteúdo, facilitando o 
entendimento pelo aluno sobre trechos mais complexos.
Exercício de fixação
Atividades que buscam reforçar a assimilação e fixação dos períodos que o autor/
conteudista achar mais relevante em relação a aprendizagem de seu módulo (não 
há registro de menção).
Avaliação Final
Questionário com 10 questões objetivas, baseadas nos objetivos do curso, 
que visam verificar a aprendizagem do curso (há registro de menção). É a única 
atividade do curso que vale nota, ou seja, é a atividade que o aluno fará para saber 
se pode ou não receber a certificação.
Para (não) finalizar
Texto integrador, ao final do módulo, que motiva o aluno a continuar a aprendizagem 
ou estimula ponderações complementares sobre o módulo estudado.
7
introdução
Imaginação é mais importante que inteligência. 
Albert Einstein
As empresas, os bancos, o comércio, as indústrias e os mais diversos segmentos sociais têm estado 
muito interessados na descentralização do processamento de suas informações independentemente 
da localização geográfica de seus escritórios. E com a explosão da Internet ligada aos avanços 
tecnológicos e aos avanços nas telecomunicações, estas empresas estão cada vez mais propícias a 
utilizarem Banco de Dados Distribuídos (BDD).
A tecnologia de BDD surgiu como uma fusão de duas tecnologias: a de banco de dados e a tecnologia 
de rede e telecomunicações de dados. Enquanto os primeiros bancos de dados se voltaram para 
a centralização e resultaram em bancos de dados monolíticos nos anos 1970, logo nas décadas 
seguintes, o sistema de banco de dados foi-se alterando em pequenas proporções até chegar aos 
dias de hoje com o avanço de sistemas distribuídos e também decorrente dos sistemas operacionais 
distribuídos. 
Ao contrário dos sistemas paralelos, em que os processadores são bastante acoplados e constituem 
um único sistema de banco de dados, um sistema de banco de dados distribuídos consiste em sites 
poucos acoplados, que não compartilham componentes físicos. Além do mais, os sistemas de banco 
que executam em cada site podem ter um grau de independência mútua substancial. 
Outro fator relevante foi a comunidade de pesquisa de banco de dados ter desenvolvido um trabalho 
considerável para tratar as questões de distribuição de dados distribuídos e de outros tópicos, bem 
como ter desenvolvido muitos protótipos de pesquisa. 
Neste caderno será abordado, o tema banco de Dados Distribuídos, desenvolvimento de tecnologia de 
banco de dados que está aproximadamente vinculada aos avanços da tecnologia de telecomunicações 
e de rede.
objetivos
 » Apresentar as principais metodologias voltadas para a área de desenvolvimentode 
projetos de banco de dados distribuídos.
 » Conhecer os procedimentos para um entendimento entre os bancos de dados 
distribuídos e paralelos.
 » Apresentar os mecanismos para a implantação de banco de dados distribuídos.
 » Refletir sobre a gerência, manutenção de banco de dados distribuídos.
 » Elaborar algumas variedades de banco de dados diferentes gerenciados por vários 
SGBDs.
8
9
unidAdE i
introdução A 
BAnCo dE dAdoS 
diStriBuídoS
Se vocês acham que os seus professores são rudes, esperem até terem um chefe. Ele 
não vai ter pena de vocês. 
Bill Gates
CAPítulo 1
Conceito de banco de dados 
distribuídos
Os bancos de dados distribuídos trazem as vantagens da computação distribuída para o domínio 
do gerenciamento de banco de dados. Um sistema de computação distribuída consiste em vários 
elementos de processamento, não necessariamente homogêneos, que são interconectados por 
uma rede de computador e cooperam na execução de certas tarefas. Como uma meta genérica, os 
sistemas de computação distribuídos dividem um problema grande e intratável em partes menores 
e os resolvem de maneira eficiente e coordenada. 
Podemos definir um Banco de Dados Distribuído (BDD) como uma coleção de múltiplos bancos de 
dados logicamente interrelacionados distribuídos por uma rede de computadores, e um sistema de 
Gerenciamento de Banco de Dados Distribuídos (SGBD) como um sistema de software que gerencia 
um banco de dados distribuído enquanto torna a distribuição transparente para o usuário. 
Uma coleção de arquivos armazenados em nós diferentes de uma rede e a manutenção de inter-
relacionamentos entre eles via hiperlinks se tornou uma configuração comum na Internet, com os 
arquivos Web.
As funções comuns de gerenciamento de banco de dados, incluindo o processamento uniforme 
de consultas e o processamento de transações, não se aplicam, contudo, a esse cenário. Porém, a 
tecnologia está se modificando em uma direção tal que bancos de dados distribuídos no World Wide 
Web (WWW) se tornarão uma realidade no futuro próximo.
10
UNIDADE I │INtroDUção A BANco DE DADos DIstrIBUíDos
Banco de dados homogêneos e heterogêneos
 Em um sistema de banco de dados distribuídos homogêneo, todos os sites possuem software de 
sistema de gerenciamento de banco de dados idêntico, conhecem um ao outro e concordam em 
cooperar nas solicitações dos usuários do processamento. Neste tipo de sistema, os sites locais 
entregam uma parte de sua autonomia em termos do seu direito de mudar esquemas ou software de 
sistema de gerenciamento de banco de dados. Esse software também precisa cooperar com outros 
sites na troca de informações sobre transações, para tornar o processamento da transação possível 
entre vários sites.
Ao contrário, em um banco de dados distribuídos heterogêneo, diferentes sites podem usar 
diferentes esquemas e softwares de sistemas de gerenciamento de banco de dados. Os sites podem 
não ser cientes um do outro e podem oferecer facilidades apenas limitadas para cooperação no 
processo da transação. As diferenças nos esquemas normalmente são um problema importante 
para o processamento da consulta, enquanto a divergência no software se torna um obstáculo para 
o processamento de transações que acessam múltiplos sites.
Arquitetura cliente/servidor
O objetivo geral desses sistemas é fornecer suporte ao desenvolvimento e à execução de aplicações 
de banco de dados. Portanto, sob um ponto de vista de mais alto nível, um sistema desse tipo pode 
ser considerado de estrutura muito simples em duas partes, consistindo em um servidor, também 
chamado back end, e um conjunto de clientes, chamados front ends. 
O servidor é o próprio SGBD. Ele admite todas as funções básicas de SGBD, definição e manipulação 
de dados, segurança e integridade de dados, e assim por diante. Em outras palavras, o termo 
“servidor” neste contexto é tão somente um outro nome para o SGBD.
Os clientes são as diversas aplicações executadas no SGBD, tanto aplicações escritas por usuários 
quanto aplicações internas. No que se refere ao servidor, não existe diferença alguma entre 
aplicações escritas pelos usuários e aplicações internas; todas elas empregam a mesma interface 
para o servidor especificamente, a interface de nível externo. Certas aplicações especiais, chamadas 
“utilitárias”, podem constituir uma exceção ao que vimos antes, já que elas às vezes podem ter de 
operar diretamente no nível interno do sistema. Esses utilitários normalmente são considerados 
componentes internos do SGBD, em vez de aplicações no sentido mais comum.
As aplicações são divididas em dois tipos: aplicações escritas pelo usuário e aplicações fornecidas 
pelo fabricante.
As aplicações escritas pelo usuário são basicamente programadas de aplicação comuns, escritas (em 
geral) em uma linguagem de programação convencional de terceira geração (L3G), como C++ ou 
COBOL, ou então em alguma linguagem proprietária de quarta geração (L4G), embora em ambos os 
casos a linguagem precisa ser, de algum modo, acoplada a uma sublinguagem de dados apropriada.
11
Introdução a Banco de dados dIstrIBuídos│ unIdade I
As aplicações fornecidas por fabricante, também conhecidas de ferramentas, são aquelas cuja 
finalidade básica é auxiliar na criação e execução de outras aplicações. As criadas são aplicações 
adaptadas a alguma tarefa específica (elas podem não ser muito semelhantes às aplicações no 
sentido convencional). De fato, a finalidade das ferramentas é permitir aos usuários, em especial aos 
usuários finais, criar aplicações sem ter de escrever programas em uma linguagem de programação 
convencional. Por exemplo, uma ferramenta fornecida pelo fabricante será um gerador de relatórios 
cuja finalidade é permitir que os usuários finais obtenham relatórios formatados a partir do sistema 
sob requisição. Qualquer requisição de relatórios pode ser considerada um pequeno programa de 
aplicação, escrito em uma linguagem de geração de relatórios de nível muito alto.
Como o sistema por completo pode estar tão claramente dividido em duas partes, servidores e 
clientes, surge a possibilidade de executar os dois em máquinas diferentes. Em outras palavras, existe 
o potencial para o processamento distribuído. O processamento distribuído significa que máquinas 
diferentes podem estar conectadas entre si para formar algum tipo de rede de comunicações, de 
maneira que uma única tarefa de processamento de dados possa ser dividida entre várias máquinas 
na rede. Na verdade, essa possibilidade é tão atraente por diversos motivos, principalmente de 
ordem econômica, que o termo cliente/servidor passou a se aplicar quase exclusivamente ao caso 
em que o cliente e o servidor estão de fato localizados em máquinas diferentes.
Processamento distribuído
A expressão processamento distribuído significa que máquinas diferentes podem estar conectadas 
entre si em uma rede de comunicações. Um exemplo clássico é a Internet, em que uma única tarefa 
de processamento de dados possa se estender a várias máquinas na rede. A comunicação entre as 
várias máquinas é efetuada por algum tipo de software de gerenciamento de rede, possivelmente 
uma extensão do gerenciador DC ou, mais provavelmente, um componente de software separado.
 Gerenciador DC – Data Communications.
As mensagens de comunicação são transmitidas sob o controle de um outro 
componente de software. 
O gerenciador não faz parte do SGBD.
São possíveis muitos níveis ou variedades de processamento distribuído. Um caso simples envolve 
a execução do back end do SGBD (o servidor) em uma das máquinas e dos front ends da aplicação 
(os clientes), conforme a Figura 1.
12
UNIDADE I │INtroDUção A BANco DE DADos DIstrIBUíDos
Figura 1 – cliente(s) e servidor funcionando em máquinas diferentes
Como exercício de esclarecimento, esboce três exemplos de empresas que utilizem 
banco de dados distribuídos. 
Explique em detalhes, conforme a Figura 1.
Como vimos no item “Arquitetura Cliente/Servidor”, o termo cliente/servidorpassou a ser quase 
sinônimo da disposição ilustrada na Figura 1, na qual o cliente e o servidor funcionam em máquinas 
diferentes. De fato, há muitos argumentos em favor de um esquema desse tipo:
a. o argumento mais comum sobre o processamento paralelo, especificamente, 
duas ou mais máquinas estão sendo agora aplicadas na tarefa geral, enquanto o 
processamento do servidor (o banco de dados) e do cliente (a aplicação) está sendo 
feito em paralelo. Assim, o tempo de resposta e a vazão (throughput) devem ser 
melhorados;
b. além disso, a máquina servidora pode ser uma máquina feita por encomenda para 
se ajustar à função do SGBD e, assim, fornecer melhor desempenho ao SGBD;
c. mesmo assim, a máquina cliente poderia ser uma estação de trabalho pessoal, 
adaptada às necessidades do usuário final e, portanto, capaz de oferecer interfaces 
melhores, alta disponibilidade, respostas mais rápidas e, de modo geral, maiores 
com facilidade de utilização para o usuário;
d. várias máquinas clientes distintas poderiam ser capazes (na verdade, normalmente 
serão capazes) de obter acesso à máquina servidora. Assim, um único banco de dados 
poderia ser compartilhado entre vários sistemas clientes distintos, conforme Figura 2.
13
Introdução a Banco de dados dIstrIBuídos│ unIdade I
Figura 2 – uma máquina servidora, várias máquinas clientes
Como exercício de esclarecimento, analise a Figura 2 e cite exemplos de instituições 
que trabalham com esse tipo de serviço de banco de dados.
Além dos argumentos anteriores, existe também o fato de que as execuções dos clientes e dos 
servidores em máquinas diferentes correspondem ao modo como as empresas operam na realidade. 
É bastante comum que uma única empresa, um banco, por exemplo, opere muitos computadores, 
de tal modo que os dados correspondentes a uma parte da empresa sejam armazenados em um 
computador e os dados de outra parte sejam armazenados em outro computador. Prosseguindo 
com o exemplo do banco, é muito provável que os usuários de uma agência ocasionalmente tenham 
de obter acesso a dados armazenados em outra agência. Portanto, observe que as máquinas clientes 
poderiam ter seus próprios dados armazenados, e a máquina servidora poderia ter suas próprias 
aplicações. Dessa forma, em geral, cada máquina atuará como um servidor para alguns usuários e 
como cliente para outros, conforme a Figura 3. 
14
UNIDADE I │INtroDUção A BANco DE DADos DIstrIBUíDos
Figura 3 – cada máquina pode executar tanto os clientes como o servidor
Como exercício de esclarecimetno, analise a Figura 3 tente explicar com suas palavras 
o qeu você conseguiu entender.
O último ponto a mencionar é que uma única máquina cliente poderia ser capaz de obter acesso 
a várias máquinas servidoras diferentes conforme mostrado na Figura 2. Esse recurso é desejável 
porque, como já estudamos, as empresas, em geral, operam de tal maneira que a totalidade de seus 
dados não fica armazenada em uma única máquina, mas se espalha por muitas máquinas distintas, 
e as aplicações às vezes precisarão ter a capacidade de acessar dados de mais de uma máquina. 
Basicamente, esse acesso pode ser fornecido de dois modos distintos:
a. determinado cliente pode ser capaz de obter acesso a qualquer quantidade de 
servidores, mas somente um de cada vez, ou seja, cada requisição individual ao 
banco de dados tem de ser direcionada para apenas um servidor. Em um sistema 
desse tipo não é possível, dentro de uma única requisição, combinar dados de dois 
ou mais servidores diferentes. Além disso, o usuário de tal sistema tem de saber 
qual máquina em particular contém quais partes dos dados;
b. O cliente pode ser capaz de obter acesso a vários servidores simultaneamente, isto 
é, uma única requisição ao banco de dados poderia ter a possibilidade de combinar 
dados de vários servidores. Nesse caso, os servidores aparentam para o cliente, de 
um ponto de vista lógico, ser raramente um único servidor, e o usuário não precisa 
saber qual máquina contém cada uma das partes constituintes dos dados.
O item b constitui um exemplo daquilo que se costuma chamar sistema de banco de dados 
distribuído. Este tema é um grande tópico por si só. Levado a sua conclusão lógica, o suporte 
completo a bancos de dados distribuídos implica que uma única aplicação deve ser capaz de operar 
“de modo transparente” sobre dados espalhados por uma variedade de bancos de dados diferentes, 
15
Introdução a Banco de dados dIstrIBuídos│ unIdade I
gerenciados por uma variedade de SGBDs diferentes, funcionando em uma variedade de máquinas 
distintas, com suporte de uma variedade de sistemas operacionais diferentes e conectados entre si 
por meio de uma variedade de redes de comunicações diferentes.
“Modo transparente” significa que a aplicação opera de um ponto de vista lógico, 
como se os dados fossem todos gerenciados por um único SGBD executado em uma 
máquina.
16
CAPítulo 2 
Algumas questões preliminares
um sistema de banco de dados distribuído consiste em uma coleção de sites, interligados por meio 
de algum tipo de rede de telecomunicações, em que:
a. cada site é por ele próprio, um site completo do sistema de banco de dados;
b. os sites concordam em atuar juntos, de modo que um usuário em qualquer site 
pode ter acesso aos dados em qualquer lugar da rede, exatamente como se os dados 
estivessem armazenados no site do próprio usuário.
Ocorre que o chamado “banco de dados distribuído” é na verdade uma espécie de banco de dados 
virtual cujas partes componentes estão fisicamente armazenadas em vários bancos de dados “reais” 
distintos em vários sites distintos (com efeito, é a união lógica desses bancos de dados reais). Um 
exemplo claro é a Figura 4.
Figura 4 – um sistema de banco de dados distribuído típico
Como exercício de esclarecimento, analise a Figura 4. Se um cliente estiver em Lisboa, 
poderá acessar as mesmas informações do cliente que está em Brasília? Explique sua 
resposta.
17
Introdução a Banco de dados dIstrIBuídos│ unIdade I
Observe que, repetindo, cada site é um site do sistema de banco de dados por si mesmo. Em 
outras palavras, cada site possui seus próprios bancos de dados locais “reais”, seus próprios 
usuários locais, seu próprio SGBD local e software de gerenciamento de transações, e seu próprio 
gerenciador de comunicações de dados local (gerenciador DC). Em particular, qualquer usuário 
pode executar operações sobre dados no seu site local exatamente como se esse site não participasse 
de modo algum do sistema distribuído. O sistema de banco de dados distribuído em geral pode, 
portanto, ser considerado como um tipo de parceria entre SGBD individuais locais nos sites locais 
individuais; um novo componente de software em cada site uma extensão lógica do SGBD local 
fornece a funcionalidade necessária à parceria e é a combinação desse novo componente com o 
SGBD existente, o que constitui aquilo que se costuma chamar sistema de gerenciamento de 
banco de dados distribuído.
Vantagens
O gerenciamento de bancos de dados distribuídos tem sido proposto por diversas razões que variam 
desde a descentralização organizacional e a economia de processamento até a maior autonomia. 
Destacamos algumas dessas vantagens a seguir:
 » Gerenciamento de dados distribuídos com níveis diferentes de transparência 
– de forma ideal, um SGBD deveria ser transparente na distribuição, no sentido 
de esconder os detalhes de onde cada arquivo (tabela, relação) está armazenado 
fisicamente dentro do sistema.
 » Transparência de distribuição ou de rede – esta se refere à liberdade para o usuário 
em relação aos detalhes operacionais da rede.
 » Transparência de replicação – cópias dos dados podem ser armazenadas em 
múltiplos sites para obter melhor disponibilidade, desempenho e confiabilidade. A 
transparência de replicação faz o usuário não precisar estar ciente da existência das 
cópias.
 » Transparência de fragmentação – existem dois tipos de fragmentação. A 
fragmentação horizontal distribui umarelação em conjuntos de tuplas (linhas). 
Exemplo: Se a relação r for fragmentada, r será dividida em uma série de fragmentos 
r1, r2, ..., rn. Esses fragmentos contêm informações suficientes para permitir a 
reconstrução da relação original r. A fragmentação vertical distribui uma relação 
em sub-relações, nas quais cada sub-relação é definida por um subconjunto das 
colunas da relação original. Exemplo: A fragmentação vertical divide a relação 
decompondo o esquema R da relação r. A fragmentação vertical de r(R) envolve 
a definição de vários subconjuntos de atributos R1, R2, ..., Rn. A fragmentação 
horizontal normalmente é usada para manter tuplas nos sites em que são mais 
usados, para minimizar a transferência de dados.
 » Melhoria na confiabilidade e na disponibilidade – estas são duas das potenciais 
vantagens mais comuns citadas para bancos de dados distribuídos. A confiabilidade 
18
UNIDADE I │INtroDUção A BANco DE DADos DIstrIBUíDos
é definida de maneira ampla como a probabilidade de que um sistema esteja em 
operação (não seja inoperante) em um determinado momento, ao passo que a 
disponibilidade é a probabilidade de que o sistema esteja continuamente disponível 
durante um intervalo de tempo. Quando os dados e o software do SGBD são 
distribuídos por vários sites, um site pode falhar, então os outros não podem ser 
acessados. Isso faz aumentar a confiabilidade e a disponibilidade. Uma melhoria 
é obtida por meio de replicação criteriosa de dados e de software em mais que 
um site. Em um sistema centralizado, a falha em um dado torna o sistema inteiro 
indisponível para todos os usuários. Em um banco de dados distribuído, alguns 
dos dados podem ficar inalcançáveis, mas os usuários ainda podem acessar outras 
partes do banco de dados.
 » Melhoria de desempenho – um SGBD distribuído fragmenta o banco de dados 
mantendo os dados mais próximos de onde eles são mais necessários. A localização 
dos dados reduz a disputa pela CPU e por operações de Entrada/Saída, e 
simultaneamente reduz os atrasos de acesso envolvidos em redes remotas WAN. 
Quando um grande banco de dados é distribuído por múltiplos sites, bancos de 
dados menores existem em cada site. Como resultado, consultas e transações locais 
que acessam dados em um único site têm um desempenho melhor por causa dos 
bancos de dados menores locais. Além disso, cada site possui um número menor de 
transações que são executadas do que se todas as transações fossem submetidas a um 
único banco de dados centralizados. O paralelismo entre consultas (interqueries) e 
o paralelismo dentro das consultas (intraqueries) podem ser obtidos pela execução 
de múltiplas consultas em diferentes sites, ou pela quebra de uma consulta em 
diversas subconsultas que são executadas em paralelo. Isso contribui para a 
melhoria do desempenho.
 » Expansão mais fácil – em um ambiente distribuído a expansão do sistema quanto a 
acréscimo de mais dados, aumento do tamanho dos bancos de dados ou acréscimo 
de mais processadores é muito mais fácil.
Por que bancos de dados distribuídos são desejáveis? A resposta básica a essa pergunta é que 
normalmente as empresas já são distribuídas, pelo menos logicamente, em divisões, departamentos, 
grupos de trabalho etc. e, com grande probabilidade, também, fisicamente em fábricas, laboratórios 
entre outros. Disso decorre que os dados também já estão normalmente distribuídos, porque cada 
unidade organizacional dentro da empresa necessariamente manterá dados que são relevantes para 
sua própria operação. O patrimônio total das informações da empresa é, desse modo, disseminado 
naquilo que às vezes se costuma chamar de ilhas de informações. Um sistema distribuído fornece 
as pontes necessárias para conectar essas ilhas. Em outras palavras, ele permite que a estrutura do 
banco de dados reflita a estrutura da empresa. Dados locais podem ser mantidos em instalações 
locais, às quais eles pertencem logicamente, enquanto dados remotos estão disponíveis para serem 
acessados quando for necessário.
Um exemplo esclarecerá o que foi dito. Suponha que existam apenas dois sites, um em São Paulo 
e o outro no Rio de Janeiro, e que se trata de um sistema bancário, com dados de contas para as 
19
Introdução a Banco de dados dIstrIBuídos│ unIdade I
contas de São Paulo armazenadas em São Paulo e dados de contas para as contas do Rio de Janeiro 
armazenadas no Rio de Janeiro. Então, as vantagens são óbvias: o arranjo distribuído combina 
eficiência de processamento (os dados são mantidos próximos ao local em que são usados mais 
frequentemente) com maior facilidade de acesso (é possível ter acesso a uma conta no Rio de Janeiro 
a partir de São Paulo e vice-versa, por meio da rede de telecomunicações).
Fazer com que a estrutura do banco de dados reflita a estrutura da empresa é 
provavelmente a principal vantagem dos sistemas distribuídos.
20
CAPítulo 3 
funções adicionais do banco de dados 
distribuído
A distribuição leva a uma maior complexidade no projeto e na implementação do sistema. Para 
obter as vantagens potenciais listadas no tópico anterior, o software do SGBDD deve ser capaz de 
prover as seguintes funções, além daquelas de um SGBD centralizado:
 » Rastreamento de dados – habilidade para rastrear a distribuição, a fragmentação e 
a replicação dos dados por meio da ampliação do catálogo do SGBDD.
 » Processamento de consultas distribuídas – habilidade para acessar sites remotos 
e transmitir consultas e dados entre os vários sites por meio de uma rede de 
comunicação.
 » Gerenciamento de transações distribuídas – habilidade para conceber estratégias 
de execução para consultas e transações que acessam dados de mais de um site, 
e para sincronizar o acesso aos dados distribuídos e para manter a integridade do 
banco de dados global.
 » Gerenciamento dos dados replicados – habilidade para decidir qual a cópia de um 
item de dados replicado será acessada e para manter a consistência das cópias de 
um item de dados replicado.
 » Recuperação de banco de dados distribuído – habilidade para recuperar a partir de 
falhas em um site individual e a partir de novos tipos de falhas como a queda e dos 
links de comunicação.
 » Segurança – as transações distribuídas devem ser executadas com o gerenciamento 
adequado da segurança dos dados e dos privilégios de autorização/acesso dos 
usuários.
 » Gerenciamento do diretório (catálogo) distribuído – um diretório contém 
informações (metadados) sobre os dados no banco de dados. O diretório pode ser 
global para o BDD inteiro ou local para cada site. O posicionamento e a distribuição 
do diretório são questões de projeto e de política.
Essas funções por si só aumentam a complexidade de um SGBDD em relação a um SGBD centralizado. 
Antes que possamos perceber completamente as vantagens potenciais da distribuição, precisamos 
encontrar soluções satisfatórias para essas questões e para esses problemas de projeto. A inclusão 
de toda essa funcionalidade adicional é difícil de ser obtida, e encontrar soluções ótimas é um passo 
mais avançado.
21
Introdução a Banco de dados dIstrIBuídos│ unIdade I
No nível físico de hardware, os seguintes fatores principais distinguem um SGBDD de um sistema 
centralizado:
a. existem múltiplos computadores, chamados sites ou nós;
b. esses sites devem ser conectados por algum tipo de rede de comunicação para 
transmitir dados e comandos entre sites.
Os sites podem estar todos localizados fisicamente próximos, dentro do mesmo prédio ou do grupo de 
prédios adjacentes e conectados por uma rede local – LAN, ou eles podem ser distribuídos geograficamente 
por grandes distâncias e conectados por uma rede de enlace longo ou por uma rede remota – WAN. As 
redes locais geralmente utilizam cabos, ao passo que as redes de enlace longo utilizam linhas telefônicas 
ou satélites. Também é possível usar uma combinação dos dois tipos de redes.
As redes podem ter topologias diferentes que definem caminhos de comunicação direta entre os 
sites.O tipo e a topologia de rede utilizados podem ter um efeito significativo no desempenho e, 
consequentemente, nas estratégias para o processamento de consultas distribuídas e para o projeto 
de banco de dados distribuído. Entretanto, para as questões arquitetônicas de alto nível, não 
importa o tipo de rede utilizado. Apenas é relevante que cada site seja capaz de se comunicar, direta 
ou indiretamente, com todos os outros sites.
22
unidAdE ii
PrinCíPio dE 
BAnCo dE dAdoS 
diStriBuídoS
CAPítulo 1 
fundamentos do banco de dados 
distribuídos
Em um sistema distribuído, usuários devem comportar-se exatamente como se o sistema não fosse 
distribuído. Todos os problemas dos sistemas distribuídos são, ou deveriam ser, problemas internos 
ou do nível de implementação; não, problemas externos ou do nível do usuário.
O termo usuários no parágrafo anterior refere-se especificamente a usuários finais 
ou programadores de aplicações que estão executando operações de manipulação 
de dados.
As operações de definição de dados exigirão alguma extensão em um sistema distribuído, por 
exemplo, para que um usuário (talvez o DBA) no site A possa especificar que determinada RelVar 
deve ser dividida em “fragmentos”que serão armazenados nos sites B e C.
O fundamento de BDD conduz doze regras, conforme a seguir:
1. Autonomia local.
2. Não dependência de um site central.
3. Operação contínua.
4. Independência de localização.
5. Independência de fragmentação.
6. Independência de replicação.
7. Processamento de consultas distribuído.
8. Gerenciamento de transações distribuído.
9. Independência do hardware.
23
PrincíPio de Banco de dados distriBuídos│ unidade ii
10. Independência do sistema operacional.
11. Independência da rede.
12. Independência do SGDB.
Entenda que essas regras não são todas independentes umas das outras nem são necessariamente 
completas nem igualmente significativas (usuários diferentes darão graus diferentes de importância 
a objetivos diferentes em ambientes diferentes; na verdade, alguns delas podem ser totalmente 
não aplicáveis em algumas situações). Contudo, as regras são úteis como base para a compreensão 
da tecnologia distribuída e como uma estrutura para caracterizar a funcionalidade de sistemas 
distribuídos específicos. 
É importante distinguir sistemas de bancos de dados distribuídos verdadeiros, generalizados, dos 
sistemas que apenas fornecem alguma espécie de acesso a dados remotos (é tudo o que os sistemas 
cliente/servidor realmente fazem). Em um sistema de acesso a dados remotos, o usuário pode ser 
capaz de operar sobre dados em um site remoto ou mesmo sobre dados em vários sites remotos 
simultaneamente, mas “as emendas aparecem”, ou seja, o usuário está definitivamente ciente, em 
maior ou menor grau, de que os dados são remotos e precisa se comportar de acordo com esse 
fato. Ao contrário, em um verdadeiro sistema de banco de dados distribuídos, as emendas ficam 
escondidas. 
As 12 regras
Autonomia
Os sites, em um sistema distribuído, devem ser autônomos. Autonomia local significa que todas 
as operações em determinado site são controladas por ele mesmo; nenhum site A deve depender 
de algum outro site B para sua operação ser bem-sucedida (de outra forma, o fato de que o site C 
esteja inativo poderia significar que o site A não poderia funcionar, mesmo que não houvesse nada 
de errado como o próprio site A, o que evidentemente seria indesejável). A autonomia local também 
implica que dados locais são de propriedade e gerenciamento locais, com contabilidade local; todos 
os dados “realmente” pertencem a algum banco de dados local, mesmo que sejam acessíveis a partir 
de outros sites. Assim, questões como segurança, integridade e representação de armazenamento 
físico de dados locais permanecem sob o controle e a jurisdição do site local.
Na verdade, a regra de autonomia local não é completamente realizável; há várias situações em que 
um determinado site A precisa ceder um certo grau de controle a algum outro site B. O objetivo 
de autonomia , então, seria mais precisamente enunciado como: os sites devem ser autônomos na 
maior extensão possível. 
não dependência de um site central
Autonomia local implica que todos os sites devem ser tratados como iguais. Em particular, portanto, 
não haverá qualquer dependência de um site “mestre” central que forneça algum serviço central. 
24
UNIDADE II │PrINcíPIo DE BANco DE DADos DIstrIBUíDos
Por exemplo: serviços centralizados de processamento de consultas, gerenciamento de transações 
ou nomeações tais que o sistema inteiro dependa desse site central. Desse modo, essa segunda regra 
é uma continuação da primeira regra (se a primeira regra for realizada, a segunda virá logo em 
seguida). Porém, a “não dependência de um site central” é desejável por si, mesmo que não seja 
alcançada a completa autonomia local, motivo pelo qual a enunciamos como uma regra separada.
A dependência de um site central seria indesejável pelo menos por estas duas razões: primeiro, esse 
site central poderia ser um gargalo; segundo, e mais importante, o sistema seria vulnerável se o site 
central caísse, todo o sistema cairia (o problema do único ponto de falha).
operação contínua
Uma vantagem dos sistemas distribuídos em geral é que eles devem fornecer maior confiabilidade 
e maior disponibilidade.
Assim como foi explicitado no item Vantagens, referenciado no Capítulo 2, a 
confiabilidade e a disponibilidade são questões preliminares (funções Adicionais 
de BDD) e tratadas como gerência, mas também são regras claras e precisas para a 
utilização de BDD.
 » Confiabilidade é a probabilidade de o sistema funcionar sem queda em qualquer 
momento dado. A confiabilidade é melhor nos sistemas distribuídos porque esses 
sistemas não seguem a proposta de tudo ou nada. Eles podem continuar a funcionar 
(em nível reduzido) mesmo diante da falha de algum componente individual, 
como um site isolade é a probabilidade de o sistema estar pronto e funcionando 
continuamente sem queda durante um período especificado. Assim como a 
confiabilidade, a disponibilidade é melhor em um sistema distribuído, em parte 
pela mesma razão, em parte devido à possibilidade de replicação de dados.
As discussões anteriores se aplicam ao caso em que uma parada não planejada (isto é, uma falha 
de algum tipo) ocorreu em algum momento no sistema. As paradas não planejadas são obviamente 
indesejáveis, mas difíceis de evitar inteiramente. Ao contrário, as paradas planejadas nunca devem 
ser necessárias; isto é, nunca deve ser preciso desligar o sistema para a execução de alguma tarefa, 
como adicionar um novo site ou atualizar o SGBD em um site existente para uma nova versão.
Sem dúvida, você já deve ter percebido que a independência de localização é 
somente uma extensão do conceito familiar de independência (física) de dados.
25
PrincíPio de Banco de dados distriBuídos│ unidade ii
independência de localização
A idéia básica da independência de localização (também chamada transparência de localização) é 
simples: os usuários não devem ser obrigados a saber onde estão fisicamente armazenados os dados, 
mas devem ser capazes de se comportar pelo menos de um ponto de vista lógico como se os dados 
estivessem todos armazenados em seu próprio site local. A independência de localização é desejável 
porque simplifica os programas de aplicações e as atividades do usuário final; em particular, permite 
que dados migrem de um site para outro sem invalidar qualquer desses programas ou atividades. 
Essa capacidade de migração é desejável porque permite que dados sejam deslocados pela rede em 
resposta a alterações de exigências de desempenho.
independência de fragmentação
Um sistema admite fragmentação de dados se determinada Relação Variável armazenada pode ser 
dividida em pedaços ou fragmentos para fins de armazenamento físico, e os fragmentos distintos 
podem ser armazenados em sites diferentes. A fragmentação é desejável por motivos de desempenho:os dados podem ser armazenados no local em que são utilizados mais frequentemente, de modo 
que a maior parte das operações seja apenas local, e o tráfego da rede seja reduzido. Por exemplo: 
considere o RelVar EMP (“empregados”), com a amostra de valores apresentada na parte superior 
da Figura 5. Em um sistema que admitisse a fragmentação, poderíamos definir dois fragmentos:
FRAGMENT EMP AS
S_EMP AT SITE ‘SÃO PAULO’ WHERE DEPTO# = ‘D1’
OR
DEPTO# = ‘D3’,
R_EMP AT SITE ‘RIO DE JANEIRO’ WHERE DEPTO# = ‘D2’;
Figura 5 – um exemplo de fragmentação
26
UNIDADE II │PrINcíPIo DE BANco DE DADos DIstrIBUíDos
Vimos que existem duas espécies de fragmentação, horizontal e vertical, correspondentes às 
operações relacionais de restrição e projeção, respectivamente. (A Figura 5 ilustra uma fragmentação 
horizontal).
Suponha que tuplas EMP são mapeadas no armazenamento físico de modo bastante 
direto, e que D1 e D3 são departamentos de São Paulo, e D2 é um departamento do 
Rio de Janeiro. Tuplas para empregados em São Paulo serão armazenadas no site de 
São Paulo, e tuplas para empregados no Rio de Janeiro serão armazenadas no site do 
Rio de Janeiro. Observe na Figura 5 os nomes dos fragmentos internos do sistema, 
S_EMP e R_EMP.
A reconstrução da RelVar básica original a partir dos fragmentos é feita através de operações de 
junção e união adequadas (junção para fragmentos verticais, união para fragmentos horizontais). 
A propósito, no caso de união, observe que a eliminação de duplicatas não será necessária, graças à 
primeira das duas regras anteriores, ou seja, a união será uma união disjunta.
 Se realmente quisermos armazenar o mesmo fragmento de informações em vários 
lugares diferentes, poderemos fazê-lo por meio do mecanismo de replicação do 
sistema, a fim de obter o efeito desejado.
Devemos nos aprofundar mais um pouco sobre a questão de fragmentação vertical. Visto que tal 
fragmentação deve ser realizada sem perdas, fica claro que a fragmentação da RelVar EMP da Figura 
5 em suas projeções sobre, digamos, {EMP#,DEPTO#} e {SALÁRIO} não seria válida. Contudo, em 
alguns sistemas, RelVars armazenadas são consideradas como tendo uma “ID de tupla”, ou atributo 
TID oculto, fornecido pelo sistema, onde a TID para determinada tupla armazenada é, em linhas 
gerais, o endereço da tupla em questão. Esse atributo TID é claramente uma chave candidata para 
a RelVar em questão. Assim, por exemplo, se a RelVar EMP incluísse tal atributo, ela poderia ser 
fragmentada de modo válido em suas projeções sobre {TID,EMP#,DEPTO#} e {TID,SALÁRIO}, 
pois essa fragmentação, sem dúvida, seria sem perdas. Observe ainda que o fato de os atributos 
TID serem ocultos não viola o Princípio da Informação, pois a independência de fragmentação, 
que discutiremos em seguida, significa que o usuário, de qualquer forma, não está ciente da 
fragmentação.
A propósito, observe que a facilidade de fragmentação e a facilidade de reconstrução são duas das 
muitas razões pelas quais os sistemas distribuídos são relacionais; o modelo relacional fornece 
exatamente as operações necessárias para essa tarefa.
Agora, chegamos ao ponto mais importante: um sistema que admita fragmentação de dados 
também deve admitir independência de fragmentação (também conhecida como transparência de 
fragmentação). Isto é, os usuários devem ser capazes de se comportar, pelo menos de um ponto 
de vista lógico, como se os dados na verdade não estivessem fragmentados de modo algum. A 
independência de fragmentação (como a independência de localização) é desejável porque simplifica 
programas do usuário e atividades de terminal. Em particular, ela permite que os dados sejam 
refragmentados a qualquer momento, e os fragmentos sejam redistribuídos a qualquer momento 
27
PrincíPio de Banco de dados distriBuídos│ unidade ii
em resposta a mudanças nas exigências de desempenho, sem invalidar quaisquer desses programas 
ou atividades do usuário.
A independência de fragmentação implica que será apresentada aos usuários uma visão dos dados 
na qual os fragmentos estão combinados logicamente por meio de junções e uniões adequadas. É 
responsabilidade do otimizador determinar a quais fragmentos é necessário ter acesso físico para 
satisfazer a qualquer requisição do usuário. Por exemplo, dada a fragmentação mostrada na Figura 
5, se o usuário emitir a requisição:
EMP WHERE SALÁRIO > 40K AND DEPTO# = ‘D1’
O otimizador saberá, pelas definições do fragmento que estarão armazenadas no catálogo que o 
resultado inteiro pode ser obtido no site de São Paulo. Não haverá necessidade alguma de acessar o 
site do Rio de Janeiro.
Examinaremos esse exemplo com um pouco mais de detalhe. Em primeiro lugar, a RelVar EMP, tal 
como é percebida pelo usuário, pode ser considerada (informalmente) uma visão dos fragmentos 
básicos S_EMP e R_EMP:
VAR EMP “VIEW” /*pseudocódigo*/
S_EMP UNION R_EMP;
Assim, o otimizador transforma a requisição original do usuário na seguinte:
(S_EMP UNION R_EMP) WHERE SALÁRIO >40, 
 AND DEPTO# = DEPTO# (‘D1’)
Essa expressão pode ainda ser transformada em:
(S_EMP WHERE SALÁRIO > 40K AND DEPTO# = DEPTO (‘D1’))
UNION
(R_EMP WHERE SALÁRIO > 40K AND DEPTO# = DEPTO (‘D1’))
(porque a restrição é distributiva em relação à união). Em seguida, a partir da definição do 
fragmento R_EMP no catálogo, o otimizador sabe que o segundo desses dois operandos de UNION 
é equivalente a:
EMP WHERE SALÁRIO > 40K AND
 DEPTO# = DEPTO# (‘D1’) AND DEPTO# DEPTO# (‘D2’)
Essa expressão deverá ser avaliada como uma relação vazia, pois a condição na cláusula WHERE 
nunca poderá ter o valor TRUE. A consulta original pode então ser simplificada para apenas:
R_EMP WHERE SALÁRIO > 40K AND DEPTO# = DEPTO (‘D1’)
28
UNIDADE II │PrINcíPIo DE BANco DE DADos DIstrIBUíDos
Agora, o otimizador sabe que só precisa ter acesso ao site de São Paulo.
Considere o que significa para o otimizador lidar com a requisição:
EMP WHERE SALÁRIO > 40K
independência de replicação
Um sistema admite replicação de dados se determinada RelVar básica, ou, mais geralmente, 
determinado fragmento de determinada RelVar básica pode ser representada por muitas cópias ou 
réplicas distintas, armazenadas em muitos sites distintos. Por exemplo:
REPLICATE S EMP AS
 SR_EMP AT SITE ‘SÃO PAULO’;
REPLICATE R EMP AS
 RS_EMP AT SITE ‘RIO DE JANEIRO’;
Veja a Figura 6. Observe os nomes internos de réplicas do sistema, SR_EMP e RS_EMP.
Figura 6 – um exemplo de replicação
A replicação é desejável por ao menos dois motivos. Primeiro, pode significar melhor desempenho 
(aplicações podem operar sobre cópias locais, em vez de terem de se comunicar com site remotos); 
segundo, também pode significar melhor disponibilidade (algum objeto replicado permanece 
disponível para processamento pelo menos para acesso, enquanto houver no mínimo uma cópia 
disponível). Naturalmente, a maior desvantagem da replicação é que, quando determinado objeto 
replicado é atualizado, todas as cópias desse objeto precisam ser atualizadas: o problema da 
propagação de atualizações.
29
PrincíPio de Banco de dados distriBuídos│ unidade ii
 Exercício de esclarecimento. Qual é a diferença de independência de fragmentação 
e independência de replicação? Dê exemplos nos dois casos.
Observamos de passagem que a replicação em um sistema distribuído representa uma aplicação 
específica da ideia de redundância controlada.
A replicação, como a fragmentação, deve no caso ideal ser “transparente para o usuário”. Em 
outras palavras, um sistema que admita replicação de dados também deve admitir independência 
de replicação (também conhecida como transparência de replicação), isto é, os usuários devem 
ser capazes de se comportar, pelo menos de um ponto de vista lógico, como se os dados de fato 
não fossem replicados de modo algum. A independência de replicação (como a independência 
de localização ou de fragmentação) é desejável porque simplifica os programas deaplicações e as 
atividades do usuário final; em particular, ela permite que réplicas sejam criadas ou destruídas 
em qualquer momento, em resposta a mudanças de requisitos, sem invalidar quaisquer um desses 
programas ou atividades.
A independência de replicação implica a responsabilidade do otimizador do sistema de determinar 
a quais réplicas é necessário atribuir acesso físico para satisfazer qualquer requisição de um 
determinado usuário. Omitimos aqui os detalhes específicos da questão.
Muitos produtos comerciais atuais admitem uma forma de replicação que não inclui a independência 
de replicação total, ou seja, ela não é totalmente “transparente para o usuário”.
Processamento de consultas distribuído
Há dois aspectos gerais a serem analisados:
I. Considere a consulta “Obter fornecedores em São Paulo de peças vermelhas”. Suponha 
que o usuário esteja no site do Rio de Janeiro e que os dados estejam armazenados 
no site de São Paulo. Suponha também que existem “n” fornecedores que satisfazem 
à requisição. Se o sistema for relacional, a consulta envolverá basicamente duas 
mensagens: uma para enviar a requisição de São Paulo para o Rio de Janeiro e outra 
para retornar o conjunto de resultados de “n” tuplas do Rio de Janeiro para São 
Paulo. Se, por outro lado, o sistema não for relacional, mas sim um sistema de um 
registro por vez, a consulta envolverá basicamente “2n” mensagens: “n” de São Paulo 
para o Rio de Janeiro solicitando o “próximo” fornecedor, e “n” do Rio de Janeiro 
para São Paulo, a fim de retornar “o próximo” fornecedor. Assim, o exemplo ilustra 
o fato de que o sistema distribuído relacional provavelmente irá superar um sistema 
não relacional em desempenho, possivelmente por várias ordens de grandeza.
II. A otimização é ainda mais importante em um sistema distribuído do que em um 
sistema centralizado. O detalhe é que, em uma consulta como a mencionada no 
item I, envolvendo diversos sites, haverá muitos modos possíveis de mover os 
30
UNIDADE II │PrINcíPIo DE BANco DE DADos DIstrIBUíDos
dados pelo sistema de maneira a satisfazer à requisição e é de importância crucial 
que se encontre uma estratégia eficiente. Por exemplo, uma requisição de união 
de uma relação ra armazenada no site A e uma relação “rb” armazenada no site 
B poderia ser executada movendo-se “rb“ para A ou movendo-se “ra” para B, ou 
ainda movendo-se ambas para um terceiro site C etc. Para resumir rapidamente o 
exemplo, são analisadas seis diferentes estratégias para processamento da consulta 
sob um certo conjunto de hipóteses plausíveis, e o tempo de resposta varia de um 
mínimo de um décimo de segundo a um máximo de aproximadamente seis horas. 
Portanto, a otimização é claramente crucial e esse fato, por sua vez, pode ser visto 
como mais uma razão pela qual os sistemas distribuídos são sempre relacionais 
(observando-se que as requisições relacionais podem ser otimizadas enquanto as 
requisições não relacionais não podem).
Analise, com calma, os itens I e II e explique a principal diferença entre eles.
gerenciamento de transações distribuído
Existem dois aspectos principais do gerenciamento de transações: recuperação e concorrência. 
Cada um deles exige um extenso tratamento no ambiente distribuído. Para explicar esse extenso 
tratamento, é preciso antes introduzir um novo termo, agente. Em um sistema distribuído, uma 
única transação pode envolver a execução de código de vários sites; em particular, pode envolver 
atualizações em muitos sites. Dizemos então que cada transação consiste em vários agentes, em 
que um agente é o processo executado em favor de determinada transação em um site específico. 
E o sistema precisa saber quando dois agentes são ambos da mesma transação. Por exemplo: dois 
agentes que fazem parte da mesma transação obviamente não podem ter um impasse (deadlock) 
entre eles.
Passando agora especificamente à recuperação: para garantir que determinada transação é atômica 
(tudo ou nada) no ambiente distribuído, o sistema deve, portanto, assegurar que o conjunto de 
agentes para essa transação tenha feito o commit em uníssono ou o roll back em uníssono. Esse 
efeito pode ser obtido por meio de protocolo de COMMIT em duas fases.
31
PrincíPio de Banco de dados distriBuídos│ unidade ii
independência do hardware
Na verdade, não há muito a dizer sobre esse assunto, pois o título já diz tudo. Instalações de 
computadores do mundo real, em geral, envolvem uma multiplicidade de máquinas diferentes, 
(máquinas IBM, máquinas Fujitsu, máquinas HP, PCs e estações de trabalho de várias espécie). E 
existe uma necessidade real de ser capaz de integrar os dados em todos esses sistemas e apresentar 
ao usuário uma “imagem de um único sistema”. Assim, é desejável poder executar o mesmo 
SGBD em diferentes plataformas de hardware e, ainda mais, ter todas essas máquinas diferentes 
participando como parcerias em um sistema distribuído.
independência do sistema operacional
Esse objetivo é, em parte, uma sequência do item anterior e também não exige muita discussão aqui. 
Obviamente, é desejável não apenas poder executar o mesmo SGBD em diferentes plataformas de 
hardware, mas também poder executá-lo em diferentes plataformas de sistemas operacionais, 
inclusive sistemas operacionais distintos no mesmo hardware. Por exemplo: fazer uma versão 
OS/390, uma versão UNIX e uma versão Windows participarem todas do mesmo sistema distribuído.
independência da rede
Mais uma vez, não há muito a dizer. Se o sistema deve ser capaz de admitir muitos sites diferentes, 
com diferentes tipos de hardware e sistemas operacionais distintos, é evidente que ele precise 
admitir diversas redes de telecomunicações distintas.
independência do SgBd
Consideramos o que está envolvido na ação de relaxar a hipótese de homogeneidade estrita. Podemos 
afirmar que essa hipótese é um pouco forte. É necessário apenas que as instâncias do SGBD em sites 
diferentes admitam todas a mesma interface, elas não precisam ser todas necessariamente cópias 
do mesmo software de SGBD.
32
unidAdE iii
ArquitEturA E 
ProjEto dE
BAnCo dE dAdoS 
diStriBuídoS
CAPítulo 1 
transações
Normalmente, uma coleção de várias operações sobre o banco de dados parece ser uma única 
entidade do ponto de vista do usuário do banco de dados. Por exemplo: uma transferência de fundos 
de uma conta corrente para uma conta poupança é uma única operação do ponto de vista do cliente, 
contudo, dentro do sistema de banco de dados, ela consiste em várias operações. Logicamente, é 
essencial que todas essas operações ocorram ou que, no caso de uma falha, nenhuma delas ocorra. 
Seria inaceitável se a conta corrente fosse debitada, mas a conta poupança não fosse creditada.
Coleções de operações que formam uma única unidade lógica de trabalho são chamadas 
transações. Um sistema de banco de dados precisa garantir a execução apropriada de transações 
apesar das falhas, ou a transação inteira é executada, ou nenhuma parte dela é executada. Além 
do mais, ele precisa gerenciar a execução simultânea de transações de modo a evitar a introdução 
da inconsistência. Em nosso exemplo de transferência de fundos, uma que calcula calculando o 
valor total do cliente poderia ver o saldo da conta corrente antes de ser debitado pela transação de 
transferência de fundos, mas ver o saldo da poupança depois de ser creditado. Como resultado, ela 
obteria um resultado incorreto.
Conceito de transação
Uma transação é uma unidade de execução do programa que acessa e possivelmente atualiza vários 
itens de dados. Normalmente, uma transação é iniciada por um programa do usuário escrito em 
uma linguagem de manipulação de dados ou linguagem de programação de alto nível, por exemplo, 
SQL, C++ ou Java, em que é delimitada pelas instruções (ou chamadas de função) na forma Begin 
transaction e end transaction. A transação consiste em todas as operações executadas entre o Begin 
transaction e o end transaction.
Para garantir a integridade dos dados, é necessário que osistema de banco de dados mantenha as 
seguintes propriedades das transações:
33
ArquiteturA e Projeto de BAnco de dAdos distriBuídos│ unidAde iii
a. Atomicidade – todas as operações da transação são refletidas corretamente no 
banco de dados, ou nenhuma delas.
b. Consistência – a execução de uma transação isolada, ou seja, sem qualquer outra 
transação executando simultaneamente, preserva a consistência do banco de dados.
c. Isolamento – embora várias transações possam ser executadas simultaneamente, o 
sistema garante que, para cada par de transações Ti e Tj, parece para Ti que ou Tj 
terminou a execução antes que Ti começasse, ou Tj iniciou a execução depois que Ti 
terminou. Assim, cada transação não está ciente das outras transações executando 
simultaneamente no sistema.
d. Durabilidade – depois que uma transação for completada com sucesso, as mudanças 
que ela fez ao banco de dados persistem, mesmo que existam falhas no sistema.
Essas propriedades normalmente são conhecidas como propriedades ACID; o 
acrônimo é derivado da primeira letra de cada uma das quatro propriedades.
Para entender melhor as propriedades ACID e a necessidade delas, considere um sistema bancário 
simplificado, consistindo em várias contas e um conjunto de transações que acessem e atualizem 
essas contas. Por enquanto, vamos supor que o banco de dados resida permanentemente no disco, 
mas que alguma parte dele esteja residindo temporariamente na memória principal.
As transações acessam dados usando duas operações:
I. read(X), que transfere o item de dados X do banco de dados para um buffer local 
pertencente à transação que executou a operação read;
II. write(X), que transfere o item de dados X do buffer local da transação que executou 
o write de volta ao banco de dados.
Em um sistema de banco de dados real, a operação write não necessariamente resulta na atualização 
imediata dos dados no disco; a operação write pode ser armazenada temporariamente na memória 
e executada no disco mais tarde. Por enquanto, porém, vamos supor que a operação write atualize 
o banco de dados imediatamente. 
Suponha que Ti$ seja uma transação que transfere $50 da conta A para a conta B. Essa transação 
pode ser definida como:
TI : read(A);
 A := A – 50;
 Write(A);
 Read(b);
 B := B + 50;
 Write(B).
34
UNIDADE III │ArqUItEtUrA E ProjEto DE BANco DE DADos DIstrIBUíDos
Agora, vamos considerar cada uma das propriedades ACID. (Para facilitar a apresentação, 
consideramos as propriedades em uma ordem diferente da ordem A-C-I-D).
 » Consistência: o requisito de consistência aqui é que a soma de A e B seja inalterada 
pela execução da transação. Sem o requisito de consistência, o dinheiro poderia ser 
criado ou destruído pela transação. Podemos verificar facilmente que, se o banco 
de dados estiver consistente antes de uma execução da transação, ele permanecerá 
consistente após a execução da transação.
Garantir a consistência para uma transação individual é responsabilidade do 
programador de aplicação que codifica a transação.
 » Atomicidade: suponha que, imediatamente antes da execução da transação Ti, os 
valores das contas A e B sejam $1.000 e $2.000, respectivamente. Agora suponha 
que, durante a execução da transação Ti, aconteça uma falha que impede Ti de 
completar sua execução com sucesso. Os exemplos dessas falhas incluem falta de 
energia, falha de hardware e erros de software. Além disso suponha que a falha 
aconteceu depois da operação write(A), mas antes da operação write(B). Nesse 
caso, os valores das contas A e B refletidos no banco de dados são $950 e $2000. 
O sistema destruiu $50 como resultado dessa falha. Em particular, notamos que a 
soma A + B não é mais preservada.
Assim, devido à falha, o estado do sistema não reflete mais um estado real do 
mundo que o banco de dados deveria capturar. Chamamos esse estado de estado 
inconsistente. Temos de garantir que essas inconsistências não sejam visíveis em 
um sistema de banco de dados. Observe, porém, que o sistema precisa, em algum 
ponto, estar em um estado inconsistente. Mesmo que a transação Ti seja executada 
até o término, existe um ponto em que o valor da conta A é $950 e o valor da conta 
B é $2.000, o que claramente é um estado inconsistente. Porém, esse estado por fim 
será substituído pelo estado consistente, em que o valor da conta A é $950 e o valor 
da conta B é $2.050. Assim, se a transação nunca foi iniciada ou foi completada com 
sucesso, esse estado inconsistente não seria visível, exceto durante a execução da 
transação, ou seja, o motivo para o requisito de atomicidade. Se a propriedade de 
atomicidade estiver presente, todas as transações são refletidas no banco de dados, 
ou nenhuma delas.
A ideia básica por trás da garantia da atomicidade é esta: o sistema de banco de 
dados acompanha (em disco) os valores antigos de quaisquer dados em que uma 
transação realiza uma escrita e, se a transação não completa sua execução, o 
sistema de banco de dados restaura os valores antigos para que apareçam como se 
a transação nunca tivesse sido executada.
 » Durabilidade: quando a execução da transação termina com sucesso, e o usuário 
que iniciou a transação foi notificado de que a transferência de fundos aconteceu, é 
preciso que nenhuma falha no sistema resulte em perda dos dados correspondentes 
a essa transferência de fundos.
35
ArquiteturA e Projeto de BAnco de dAdos distriBuídos│ unidAde iii
A propriedade de durabilidade garante que, quando uma transação é executada 
com sucesso, todas as atualizações que ela executou no banco de dados persistem, 
mesmo que haja uma falha no sistema após a transação terminar sua execução.
Consideramos por enquanto que uma falha do sistema de computador pode resultar 
na perda de dados na memória principal, mas os dados gravados em disco nunca 
são perdidos. Podemos conseguir a durabilidade garantindo que:
1. as atualizações executadas pela transação sejam gravadas em disco antes que a 
transação termine;
2. as informações sobre as atualizações executadas pela transação e gravadas em disco 
sejam suficientes para permitir que o banco de dados reconstrua as atualizações 
quando o sistema de banco de dados for reiniciado após a falha.
Garantir a durabilidade é responsabilidade de um componente de software do 
sistema de banco de dados, chamado componente de gerenciamento de recuperação. 
O componente de gerenciamento de transação e o componente de gerenciamento 
de recuperação estão bastante relacionados.
 » Isolamento: mesmo que as propriedades de consistência e atomicidade 
sejam garantidas para cada transação, se várias transações forem executadas 
simultaneamente, suas operações podem intercalar de alguma maneira indesejável, 
resultando em um estado inconsistente.
Por exemplo, como já vimos, o banco de dados está temporariamente inconsistente 
enquanto a transação para transferir fundos de A para B está executando, com o 
total deduzindo gravado em A e o total aumentado ainda a ser gravado em B. Se uma 
segunda transação executada simultaneamente lê A e B nesse ponto intermediário e 
calcula A + B, ela observará um valor inconsistente. Além do mais, se essa segunda 
transação realizar atualizações sobre A e B com base nos valores inconsistentes 
que ela lê, o banco de dados pode ser deixado em um estado inconsistente mesmo 
depois que as transações tenham terminado.
Um modo de evitar o problema de transações executada simultaneamente é executar transações de 
modo serial, ou seja, uma após outra. Porém, a execução simultânea de transações oferece benefícios 
de desempenho significativos. Portanto, outras soluções foram desenvolvidas; elas permitem que 
várias transações sejam executadas simultaneamente.
A propriedade de isolamento de uma transação garante que a execução simultânea das transações 
resulte em um estado do sistema equivalente ao estado que poderia ter sido obtido se essas transações 
fossem executadas uma de cada vez em alguma ordem. A garantiada propriedade de isolamento 
é responsabilidade de um componente do sistema de banco de dados chamado componente de 
controle de concorrência.
36
UNIDADE III │ArqUItEtUrA E ProjEto DE BANco DE DADos DIstrIBUíDos
Estado da transação
Na ausência de falhas, todas as transações são completadas com sucesso. Porém, como observamos 
anteriormente, uma transação nem sempre pode completar sua execução com sucesso. Essa transação 
é considerada abortada. Se tivermos de garantir a propriedade de atomicidade, uma transação 
abortada não pode ter efeito sobre o estado do banco de dados. Assim, quaisquer mudanças que a 
transação abortada fez no banco de dados precisam ser desfeitas. Quando as mudanças causadas 
por uma transação abortada tiverem sido desfeitas, dizemos que a transação foi revertida. É parte 
da responsabilidade do esquema de recuperação gerenciar transações revertidas.
Uma transação que completa sua execução com sucesso é considerada confirmada. Uma transação 
confirmada que realizou atualizações transforma o banco de dados em um novo estado consistente, 
que precisa persistir mesmo que haja uma falha no sistema.
Quando uma transação tiver sido confirmada, não podemos desfazer seus efeitos abortando-a. A 
única maneira de desfazer os efeitos de uma transação confirmada é executar uma transação de 
compensação. 
Precisamos ser mais precisos a respeito do que significa término bem-sucedido de uma transação. 
Portanto, vamos estabelecer um modelo abstrato simples de transação. Uma transação precisa estar 
em um dos seguintes estados:
 » ativa, o estado inicial, a transação permanece nesse estado enquanto está executando;
 » parcialmente confirmada, depois que a instrução final foi executada;
 » falha, depois da descoberta de que a execução normal não pode mais prosseguir;
 » abortada, depois que a transação foi revertida e o banco de dados foi restaurado ao 
seu estado anterior ao início da transação;
 » confirmada, após o término bem-sucedido.
O diagrama de estado corresponde a uma transação conforme, na Figura 7. Dizemos que uma 
transação foi confirmada somente se ela entrou no estado confirmado. De modo semelhante, 
dizemos que uma transação foi abortada somente se ela entrou no estado abortado. Uma transação 
é considerada como terminada se tiver sido confirmada ou abortada.
37
ArquiteturA e Projeto de BAnco de dAdos distriBuídos│ unidAde iii
Figura 7 – diagrama de estado de uma transação
parcialmente
confirmada
ativa
falha abortada
confirmada
Uma transação começa no estado ativo. Quando ela termina sua última instrução, entra no estado 
parcialmente confirmado. Nesse ponto, a transação completou sua execução, mas ainda pode ser 
abortada, pois a saída real ainda pode estar temporariamente residindo na memória principal, por 
isso uma falha de hardware pode impedir seu término bem-sucedido.
38
CAPítulo 2 
tipos de Sistemas Bdd
O termo sistema de gerenciamento de banco de dados distribuído pode descrever vários sistemas 
que diferem uns dos outros em muitos aspectos. A característica principal que todos os sistemas 
desse tipo possuem em comum é o fato de que os dados e o software são distribuídos por múltiplos 
sites conectados por alguma forma de rede de telecomunicações. 
O primeiro fator que consideramos é o grau de homogeneidade do software do SGBDD. Se todos 
os servidores, ou SGBDs locais individuais, usam um software idêntico e todos os usuários, 
clientes, usam um software idêntico, o SGBDD é chamado homogêneo; caso contrário, é chamado 
heterogêneo. Um outro fator relacionado ao grau de homogeneidade é o grau de autonomia local. Se 
não há nenhuma provisão para o site local funcionar como um SGBD stand-alone, então o sistema 
não possui autonomia local. Por outro lado, se for permitido o acesso direto ao servidor para as 
transações locais, o sistema possui algum grau de autonomia local.
Em um extremo do espectro de autonomia, temos um SGBDD que se parece com um SGBD 
centralizado para o usuário. Existe um único esquema conceitual, e todos os acessos ao sistema 
ocorrem por meio de um site, que é parte do SGBDD, o que significa que nenhuma autonomia local 
existe. No outro extremo, encontramos um tipo de SGDBB chamado federado (ou de sistema de 
multibases de dados). Nesse tipo de sistema, cada servidor é um SGBD centralizado independente 
e autônomo que tem seus próprios usuários locais, transações locais e DBA e, consequentemente, 
possui um grau muito alto de autonomia local. O termo sistema de banco de dados federado (SBDF) 
é usado quando existir alguma visão ou esquema global da federação de banco de dados que é 
compartilhada pelas aplicações. Por outro lado, um sistema de multibases de dados (multidatabase) 
não possui um esquema global e constrói interativamente um esquema, conforme a necessidade 
da aplicação. Ambos os sistemas são híbridos entre os sistemas distribuídos e centralizados, e a 
distinção que fizemos entre eles não é seguida estritamente. Faremos referências a eles como SBDFs 
em um sentido genérico.
Em um SBDF heterogêneo, um servidor pode ser um SGBD relacional; um outro, um SGBD de rede; 
e um terceiro SGBD orientado por objeto ou hierárquico. Em tal caso, é necessário possuir uma 
linguagem de sistema canônica e incluir tradutores da linguagem para traduzir as subconsultas da 
linguagem canônica para a linguagem de cada servidor. 
gerenciamento de SBdf
 » Diferenças nos modelos de dados: os bancos de dados em uma organização vêm 
de uma variedade de modelos de dados, inclusive dos, assim chamados, modelos 
legados (de rede e hierárquico), do modelo de dados relacional, do modelo de dados 
orientado por objeto, e até mesmo de arquivos. As capacidades de modelagem dos 
modelos variam. Consequentemente, lidar com eles de maneira uniforme por meio 
de um único esquema global ou processá-los em uma linguagem única é desafiante. 
Mesmo se dois bancos de dados forem ambos do ambiente de SGBDR, a mesma 
39
ArquiteturA e Projeto de BAnco de dAdos distriBuídos│ unidAde iii
informação poderia ser representada com diferentes nomes de atributo, nome 
de relação ou valores em diferentes bancos de dados. Isso exige um mecanismo 
inteligente de processamento de consultas que possa relacionar a informação 
baseando-se nos metadados.
 » Diferenças em restrições: as facilidades de restrições para a especificação e 
a implementação variam de sistema para sistema. Existem características 
comparáveis que devem ser reconciliadas na construção de um esquema global. Por 
exemplo, os relacionamentos dos modelos ER são representados como restrições de 
integridade referencial no modelo relacional. Gatilhos podem precisar ser usados 
para implementar certas restrições no modelo relacional. O esquema global também 
deve tratar dos conflitos potenciais entre as restrições.
 » Diferenças nas linguagens de consulta: Mesmo com o modelo de dados igual, as 
linguagens e suas versões variam. Por exemplo, o SQL possui múltiplas versões 
como o SQL-89, o SQL-92 e o SQL-99, e cada sistema possui seu próprio conjunto 
de tipos de dados, de operadores de comparação, de características de manipulação, 
de cadeias de caracteres etc.
diferenças no significado
As diferenças no significado ou heterogeneidade semântica ocorre quando existem diferenças na 
interpretação e na intenção de uso dos mesmos dados ou de dados relacionados. A heterogeneidade 
semântica entre sistemas de banco de dados (SBDs) componentes cria o maior obstáculo no projeto 
de esquemas globais de banco de dados heterogêneos. A autonomia de projeto de componentes de 
SBDs refere-se à sua liberdade de escolher os seguintes parâmetros de projeto, que, por sua vez, 
afetam a complexidade eventual do SBDF:
 » o universo de discurso a partir do qual os dados são retirados – por exemplo, duas 
contas de clientes, banco de dados na federação, podem ser do Brasil e do Japão com 
conjuntos de atributos completamente diferentes sobre contas de clientes necessárias 
para as atividadesde contabilidade. As flutuações da taxa de câmbio também 
apresentariam um problema. Consequentemente, as relações nesses dois bancos de 
dados que possuem nomes idênticos, CLIENTE ou CONTA, podem possuir algumas 
informações em comum e algumas informações completamente distintas;
 » representação e nomenclatura – a representação e a nomenclatura dos elementos 
de dados e a estrutura do modelo de dados podem ser pré-especificadas para cada 
banco de dados local;
 » a compreensão, significado e interpretação subjetiva dos dados – este é um 
contribuinte principal para a heterogeneidade semântica;
 » política de transações e de restrições – estas tratam do critério de serialização, da 
compensação de transações e de outras políticas de transações;
 » derivação de sumários – agregação, sumarização e outras características de 
processamento de dados e de operações que têm o suporte do sistema.
40
UNIDADE III │ArqUItEtUrA E ProjEto DE BANco DE DADos DIstrIBUíDos
A autonomia de comunicação de um SBD componente refere-se à sua habilidade em decidir se há 
comunicações com outro SBD componente. A autonomia de execução refere-se à habilidade de um 
SBD componente em executar operações locais sem a interferência de operações externas por outros 
SBDs componentes e à sua habilidade em decidir se e quanto compartilhar de sua funcionalidade 
(as operações que ele fornece suporte) e de seus recursos (dados que ele gerencia) com outros SBDs 
componentes. O desafio principal do projeto de SBDFs é fazer os SBDs componentes interoperarem 
enquanto ainda lhes são proporcionados os tipos de autonomia acima.
Uma típica arquitetura de esquema e cinco níveis para fornecer suporte a aplicações globais no 
ambiente de SBDF são mostradas na Figura 8. Nessa arquitetura, o esquema local é o esquema 
conceitual (definição completa de banco de dados) de um banco de dados componente, e o esquema 
do componente é derivado por meio da tradução do esquema local em um modelo de dados canônico 
ou em um modelo comum de dados (CDM – Common Data Model) para o SBDF. A tradução do 
esquema a partir do esquema local para o esquema do componente é acompanhada pela geração de 
mapeamentos para transformar os comandos, em um esquema de componente, em comandos no 
esquema local correspondente.
Figura 8 – arquitetura de esquema de cinco níveis em um sistema de banco de dados (sBdF)
Fonte: adaptado de sheth e larson, Federated database systems for managing distribuited Heterogeneous autonomous 
databases. acm computing surveys. v. 22, n. 3, setembro de 1990.
O esquema de exportação representa o subconjunto de um esquema de componente que está 
disponível para o SBDF. O esquema federado é o esquema ou visão global, resultado da integração 
de todos os esquemas de exportação compartilháveis. O esquema externo define o esquema para um 
grupo de usuários ou para uma aplicação como na arquitetura de esquema de três níveis.
Para uma discussão detalhada das autonomias e da arquitetura de cinco níveis dos 
SGBDFs, consulte Sheth e Larson (1990).
41
CAPítulo 3 
Problemas de sistemas distribuídos
Vamos aprofundar um pouco a discussão sobre alguns dos problemas mencionados anteriormente. 
O problema principal é que as redes de telecomunicações, pelo menos as redes remotas – WANs, 
são lentas. Uma WAN típica poderia ter uma taxa de dados efetiva de cerca de 5 mil a 10 mil bytes 
por segundo; ao contrário, uma unidade de disco típica tem uma taxa de dados de cerca de 5 a 
10 milhões de bytes por segundo. Por outro lado, algumas redes locais admitem taxas de dados 
da mesma ordem de grandeza que as unidades de discos. Deste modo, um objetivo essencial nos 
sistemas distribuídos (pelo menos no caso de WANs e, até certo ponto, também no caso de LANs) é 
minimizar a utilização da rede, isto é, minimizar o número e o volume de mensagens. Esse objetivo, 
por sua vez, gera problemas em várias outras áreas, entre elas as seguintes (esta lista não pretende 
ser completa):
 » Processamento de consultas.
 » Gerenciamento de catálogo.
 » Propagação de atualizações.
 » Recuperação.
 » Concorrência.
Processamento de consultas
O objetivo de minimizar a utilização da rede implica que o próprio processo de otimização de 
consultas precisa ser distribuído, como também o processo de execução de consultas. Em outras 
palavras, o processo geral de otimização consistirá normalmente em uma etapa de otimização 
global, seguida por etapas de otimização global, seguida por etapas de otimização local em cada site 
afetado. Por exemplo, suponha que uma consulta Q seja apresentada no site X, e suponha que Q 
envolva uma junção de uma relação ry de 10 tuplas no site Y com uma relação rz de 10 milhões de 
tuplas no site Z. O otimizador do site X escolherá a estratégia global para executar Q; e logicamente 
é desejável que ele decida mover ry para Z, e não rz para Y (ou, dependendo da cardinalidade do 
resultado da junção, poderia ser melhor mover ry e rz para X). Suponha que ele decida mover ry 
para Z. Em seguida, a estratégia para executar a junção real no site Z será decidida pelo otimizador 
local em Z. 
Apresentamos, a seguir, uma ilustração mais detalhada do que foi dito.
 » Banco de dados (Fornecedores e peças, simplificado):
F {F#, CIDADE } 10.000 tuplas armazenadas no site A
42
UNIDADE III │ArqUItEtUrA E ProjEto DE BANco DE DADos DIstrIBUíDos
P {P#, COR } 100.000 tuplas armazenadas no site B
FP {F#, P# } 1.000.000 tuplas armazenadas no site A
Suponha que toda tupla armazenada tenha 25 bytes (200 bits) de extensão.
 » Consulta (“Obter números de fornecedores para fornecedores em Londres de peças 
vermelhas”):
( ( F JOIN FP JOIN P ) WHERE CIDADE = ‘Londres’ AND
 COR = COR (‘Vermelho’) ) { F#}
 » Cardinalidade estimadas de certos resultados intermediários:
Número de peças vermelhas = 10
Número de remessas por fornecedores de Londres = 100.000
 » Hipóteses de comunicações:
Taxa de dados = 50.000 bits por segundo
Retardo de acesso = 0,1 segundo
Examinamos agora rapidamente seis estratégias possíveis para processar essa consulta, e para cada 
estratégia i calculamos o tempo de comunicação total Ti a partir da fórmula:
( retardo de acesso total ) + ( volume de dados total / taxa de dados )
Que se torna (em segundos):
( número de mensagens / 10 ) + ( numero de bits / 50000)
1. Mover peças para o site A e processar a consulta em A.
T1 = 0,1 + ( 100000 * 200 ) / 50000
 = 400 segundos aprox. (6,67 minutos)
2. Mover fornecedores e remessas para o site B e processar a consulta em B:
T2 = 0,2 + ( ( 10000 + 1000000 ) * 200 ) / 50000
 = 400 segundos aprox. (1.12 horas)
3. Fazer a junção de fornecedores e remessas no site A, restringir o resultado a 
fornecedores de Londres e, em seguida, para cada um desses fornecedores, verificar 
no site B se a peça correspondente é vermelha. Cada uma dessas verificações 
43
ArquiteturA e Projeto de BAnco de dAdos distriBuídos│ unidAde iii
envolverá duas mensagens, uma consulta e uma resposta. O tempo de transmissão 
para essas mensagens será pequeno comparado com o retardo de acesso.
T3 = 20000 segundos aprox. (5,56 horas)
4. Restringir peças no site B às que são vermelhas, e depois, para cada uma dessas 
peças, verificar no site A se existe uma remessa relacionando a peça a um fornecedor 
de Londres. Cada uma dessas verificações envolverá duas mensagens; novamente, 
o tempo de transmissão para essas mensagens será pequeno comparado com o 
retardo de acesso.
T4 = 2 segundos aprox.
5. Fazer a junção de fornecedores e remessas no site A, restringir o resultado a 
fornecedores em Londres, projetar o resultado sobre F# e P# e mover o resultado 
para o site B. Completar o processamento no site B.
T5 = 0,1 + ( 100000 * 200 ) / 50000
 = 400 segundos aprox. (6.67 minutos)
6. Restringir peças no site B às que são vermelhas e mover o resultado para o site A. 
Completar o processamento no site A.
Algumas estratégias permitem

Outros materiais