1. Projeto de Banco de Dados Distribuído

Propaganda
Trabalho de Banco de Dados
Distribuído
Tópico: Banco de Dados Ingres
Grupo
Antonio Chiacchio Petruccelli
Denis Calixto
Eric Sander
1
ÍNDICE
Página
1.
Projeto de Banco de Dados Distribuído .................................................................................................. 3
a) Suporte a Fragmentação (Horizontal, Vertical, Híbrida) ........................................................................ 3
b) Mecanismos de Replicação .................................................................................................................... 3
Vantagens de se utilizar o Ingres/Replicator : ............................................................................................ 4
Tipos de Réplica ......................................................................................................................................... 4
Diferenças entre o Ingres/Replicator e o Ingres/Star. ................................................................................. 5
Resumo de Replicação ............................................................................................................................... 6
2.
Controle de Ambiente Distribuído.......................................................................................................... 9
a) Gerenciamento de View ......................................................................................................................... 9
b) Controle de Segurança ........................................................................................................................... 9
c) Controle de Integridade .........................................................................................................................10
3.
Transparência ........................................................................................................................................11
a) Distribuição ...........................................................................................................................................11
b) Replicação .............................................................................................................................................11
c) Fragmentação ........................................................................................................................................11
4.
Processamento Distribuído de Consulta ................................................................................................12
a) Suporte ao Processamento Distribuído de Consulta ..............................................................................12
b)Tipo de Otimizador de Consulta Utilizado .............................................................................................12
c) Mecanismos de Otimização de Consulta Distribuída ............................................................................12
2
1. Projeto de Banco de Dados Distribuído
a) Suporte a Fragmentação (Horizontal, Vertical, Híbrida)
O Banco de Dados Distribuído Ingres não suporta as fragmentações. A sua
unidade de distribuição é a relação. Não há uma fragmentação, já que os dados podem ser
encontrados em vários servidores remotos. Consideramos isso uma replicação
fragmentada dos dados.
O gráfico abaixo demonstra isso graficamente:
Iremos ver com mais detalhes nos mecanismos de replicação o conceitos de
organização de dados replicados utilizando o Ingres/Replicator que são: Consistent
Distributed Data Set (CDDS) - Consistência de conjunto de dados distribuídos.
b) Mecanismos de Replicação
O Ingres possui o Ingres/Replicator. É um componente utilizado para fazer a
réplica assíncrona dos dados por transação. O Ingres/Replicator é transparente para o
usuário já que ele está entre o banco de dados e a aplicação. A integridade dos dados é
reforçada pelo protocolo Two-Phase Commit. Os dados de uma transação só estão
disponíveis para uma replicação após a transação ser comitada localmente. Isso garante a
integridade dos dados no caso de uma falha em algum ponto do sistema distribuído.
O Ingres/Replicator permite que o usuário atualize o banco de dados local em um
modo assíncrono, tornando-o transparente para o usuário local. O Ingre/Replicator
3
percorre cada réplica a ser feita e utilizando o protocolo Two-Phase Commit direciona
essa transação para o banco de dados a ser replicado. O protocolo Two-Phase Commit
garante que todas as réplicas serão feitas. Caso haja algum problema durante o TwoPhase Commit, essa solicitação será refeita. Caso algum dos bancos de dados a ser
replicado caia, todas as réplicas que seriam feitas nesse banco serão mantidas em espera e
enviadas na ordem correta assim que o banco estiver no ar.
Vantagens de se utilizar o Ingres/Replicator :

Melhora na performance
Reduz o tráfego de rede e evita o acúmulo de solicitações a um determinado banco de
dados (evitando o gargalo).

Tolerância a Falhas
Caso algum servidor saia do ar, o dados poderá estar disponível em outro servidor. Caso
dois banco de dados se tornem inconsistentes, o Ingres/Replicator tem recursos de
reconciliá-los que funciona em conjunto com o procedimento de recuperação. Já que os
dados estão localizados em mais de um local, a perda de dados em uma máquina não é
catastrófica.

Flexibilidade
Com as constantes anterações nos ambientes de bancos de dados, o Ingres/Replicator
oferce soluções de conectividade. Se o seu sistema opera sobre diferentes bancos de
dados, você pode usar o Ingres/Replicator para conectá-los. O Ingres/Replicator opera
com banco de dados que não são Ingres utilizando o produto que fornece um gateway
entre os diferentes bancos; o Ingres/Enterprise Access. Você poderá manter os seus
sistemas legados ou usar o Ingres/Replicator para fazer um controle completo de
migração para um sistema de banco de dados Ingres. Os usuários dos sistemas legados
poderão ter acesso à dados criados em outros ambientes heterogênios.
Tipos de Réplica
O Ingres/Replicator fornece um controle significativo sobre o fluxo de dados.
Você pode configurar o Ingres/Replicator para satisfazer suas necessidades utilizando o
Consistent Distributed Data Set (CDDS) - Consistência de conjunto de dados
distribuídos.
O CDDS é um conjunto de daods que é mantida consistente (idêntica) em dois ou
mais bancos de dados. O CDDS provê um método de definição e agrupamento de dados,
de modo que um banco inteiro ou partes de bancos de dados possam ser replicados para
diferentes sites. (vide gráfico reproduzido no ítem 1a.)
O CDDS fornece ao banco de dados distribuído a disponibilidade de fazer a
réplica de dados de acordo com as necessidades do negócio (empresa).
O CDDS consiste de :
a) Qual dado a ser replicado
4
Pode-se replicar qualquer tipo de combinação abaixo:
– Todo o Banco
– Conjunto de tabelas
– Conjunto de Colunas (particionamento vertical)
– Conjunto de linhas (particionamento horizontal baseado em um valor
específico )
b) Para aonde a réplica vai
Pode-se configurar o Ingres/Replicator para que o dado seja replicado:
– Em uma direção com um alvo específico (Central-to-Backup : Mater Slave)
– Em uma direção com alvos variados
– Em duas direções entre dois bancos de dados (Peer-to-Peer)
– Em várias direções em alguns bancos de dados (Central-to-Branch)
– Uma combinação dessas opções
c) Por qual caminho a réplica é feita
Deve-se especificar o caminho (rota) que o dado replicado deve fazer para chegar
ao seu alvo.
d) Quando o dado será replicado
Pode-se especificar quando o Ingres/Replicator deve propagar os dados ;
Continuamente, Um vez ao dia ou sobre demanda.
e) Que tipo de banco pode ser usado
Pode-se usar o banco de dados Ingres de qualquer forma utilizando o
Ingres/Replicator. Alguns bancos de dados Ingres/ Enterprise Access (gateways)
podem ser usados tanto como fonte quanto quanto alvo; outros, entretanto,
podem ser usados somente como banco de dados alvo com a capacidade de readonly.
Diferenças entre o Ingres/Replicator e o Ingres/Star.
Tanto o Ingres/Replicator quanto o Ingres/Star mantêm os dados entre dois ou
mais bancos de dados distribuídos. No Ingres/Star usa o protocolo Two-Phase Commit
entre o banco local e o remoto. Durante a atualização de um usuário local, o Ingres/Star
bloqueia os dados no banco de dados local e remoto e não libera esse bloqueio enquanto
o protocolo de Two-Phase Commit for completado com sucesso. Esse bloqueio pode
gerar atrasos para o usuário local.
Já o Ingres/Replicator atualiza os dados do banco de dados local de um modo
assíncrono, a aí faz o bloqueio em cada banco de dados remoto utilizando o protocolo
5
Two-Phase Commit. Portanto resultará em um ganho significante de performance
utilizando o Ingres/Replicator ao invés do Ingres/Star.
Com o Ingres/Replicator pode-se customizar o ambiente de replica que não
acontece no Ingres/Star. Como o Ingres/Star, um transação é completada em todos os
bancos de dados ou em nenhum. Já com o Ingres/Replicator dois usuários poderão
atualizar o mesmo dado em diferentes bancos de dados replicados, podendo causar assim
um problema de colisão.
Resumo de Replicação
Cada vez que uma tabela registrada no banco de dados para replicação for
manipulada, a replicação desta tabela será executada seguindo os passos abaixo:
1. O usuário atualiza o banco no servidor local.
2. O Change Recorder atualiza a tabela shadow.
3. O Change Recorder atualiza a tabela archive.
4. O Change Recorder aiciona uma linha ao input queue.
5. Depois de ser comitada, as threads de distribuição lêem o input queue e a
tabela de caminhos de popagação (propagation paths table) para determinar como
e onde o dados devem ser replicados.
6. As threads de distribuição atualizam o distribution queue com a replicação e a
informação do destino.
7. As threads de distrubuição deletam a replicação do input queue.
8. As threads de distribiução alertam um servidor de Réplica.
9. O Servidor de Réplica (Replicator server) lê o distribution queue.
10. O Servidor de Réplica atualiza o banco de dados remoto utilizando SQL
remoto ou porcedures de banco de dados.
11. Se o servidor remoto for full peer ou protected read-only target, o Replicator
server atualiza a tabela shadow correspondente.
12 Se o servidor remoto for full peer target, o Replicator atualiza a tabela archive
correspondente.
13. Se o servidor remoto for full per target, uma linha é adicionada no input
queue remoto.
14. A linha é deletada do distribution queue do banco de dados local.
O Replicator server apaga a linha correspondente do distribution queue local.
15. As alterações no banco de dados remoto e local são serguradas utilizando o
two-phase commit.
O gráfico abaixo ilusta cada um desse passos:
6
Base Table
The base table is the table manipulated by the
user.
Shadow Table
The shadow table maintains a history of previous
transactions. It contains a row for each row in the
base table that has been manipulated. Shadow
table rows include the system-generated replicated
transaction key for that manipulation, plus the
previous replicated transaction key, along with the
base table’s designated unique key.
Note: Shadow tables are used only in full peer or
protected read-only targets.
7
Archive Table
The archive table contains the “before-images” of
rows that have been updated or deleted. Archive
table rows include all the replicated columns of
the base table, along with the replication key of
the manipulation that altered that row. Each row
in the archive table corresponds to a row in the
shadow table.
Note: Archive tables are used only in full peer
targets.
Input Queue Table
The input queue table contains a transient entry
for each row manipulated in a replicated table.
Distribution Queue Table
The distribution queue table contains a transient
entry for each replicated row that is to be
transmitted to another database. It contains the
identifier of the target database.
8
2. Controle de Ambiente Distribuído
Um Banco de Dados distribuído pode ser composto por tabelas, visões,
procedures e índices no banco de dados Ingres local, banco de dados Ingres remoto e
banco de dados que não sejam Ingres que podem ser acessados pelos produtos de
Entreprise Access.
O Ingres/Star permite o acesso à bancos de dados diversos simultaneamente. O
usuário não precisa saber onde o dado está localizado. Combinando o Ingres/Star com o
Ingres/Net permite à usuários o acesso a banco d dados locais quanto remotos, não
importanto onde eles estão localizados na rede. Você pode efetuar operações complexas
como joins e subselects entre DB2 e IMS, o que seria muito difícil sem a utilização do
Ingres/Star.
Quando o banco de dados distribuído é criado, o Star cria o Star Catalog que é o
catálogo responsávbel pela coordenação de acesso à todos os dados. O Star Catalog é
uma coleção de tabelas que guardam informações sobre o banco de dados distribuído. Ele
descreve cada banco de dados local que faz parte do banco de dados distribuído quanto os
objetos do banco de dados distribuído.
Combinando o Ingres/Star, Net e o Enterprise Access o acesso à banco de dados
que não são Ingres será possível simultaneamente em qualquer ponto da rede. O ambiente
distribuído heterogêneo será explicado posteiormente.
a) Gerenciamento de View
As views também são objetos registrados no banco de dados distribuídos.
Portanto elas também estarão registradas no Star Catalog. A utilização da view no Ingres
é semelhante à utilizada em outros sistema distribuídos. No Ingres, não é aconselhado a
utilização de views para atualizar as tabelas às quais ela referencia. OBS: Essa é uma
particularização da utilização de views no Ingres
b) Controle de Segurança
9
Os usuários do Star devem estar autorizados no banco local quanto no remoto
que eles querem acessar. Os componentes Netutil e o Ingnet podem também fornecer essa
autorização. Use o Netutil (Network Autorization and Connection Information) ou o
Ingnet no servidor local para definir o login de autorização para sua conta em um
servidor remoto.
Os usuários devem definir sua senha de acesso local e a senha de acesso remoto
somente uma vez. Essa autorização será mantida até o momento que os usuários decidam
apagá-la.
Além da utilização do Netutil e Ingnet, pode-se haver uma outra estratégia de
segurança quando utilizamos o Ingres/Net. Nesse caso o usuário deverá ter acesso à rede
pela qual ele deve trafegar para chegar ao servidor remoto, além do acesso no banco de
dados.
A segurança que já existe no banco de dados é considerada da mesma forma no
sistema distribuído utilizando a idéia de grupos e regras.
c) Controle de Integridade
O Ingres/Star não implementa integridade. No caso do dado estar localizado em
múltiplas localizações, o particionamento por essas várias localidades é controlado pelo
banco de dados local. Se for preciso uma obter algum dado de integridade de um objeto
registrado, faça um direct connect para o banco de dados local apropriado e faça uma
query no catálogo padrão.
Quando utilizamos o Ingres/Replicator o controle de integridade é feito através
de um mecanismo de detecção de colisões. Mas podem existir situações que no caso de se
estar utilizando integridade referencial de constraints, pode criar conflitos que não
poderão ser resolvidos.
Por exemplo se um registro de consumidor for deletado em um banco de dados
,mas no mesmo momento um novo pedido é registrado para aquele determinado
consumidor em outro banco de dados. Se existir integridade referencial por constraints
referenciando o consumidor, vai então haver um problema quando o dado for replicado
para outro banco de dados.
A melhor maneira de se evitar a colisão e a prevenção. Projete o seu sistema de
réplica com o objetivo de reduzir a probabilidade de colisão. Mesmo em sistemas de
banco de dados bem projetados pode existir colisões durante um erro no sistema quando
se é necessário toca entre bases replicadas. Por essa razão , deve-se planejar como se
tratar colisões em um sistema de replicação.
10
3. Transparência
a) Distribuição
O Ingres possibilita o usuário a ver todos os sites como apenas um data source
lógico, eliminando a necessidade de saber onde está o dado. Como funciona: cria-se um
banco de dados virtual composto por todos os data sources ligados a todos os sites onde
pelos quais o banco está distribuído. Assim, todos os data sources aparecem copmo se
fossem apenas um banco gigantesco. Dessa forma, os desenvolvedores de aplicações e
usuários em geral podem executar suas consultas sem saber onde estão localizados os
dados. O componente encarregado disso é o Star, que coordena o banco de dados
distribuído. Todavia, essa transparência só é visualizada pelo usuário final.
Desenvolvedores de aplicação em geral precisa, através de linha de código, se conectar
ao bando de dados onde estão as informações com as quais ele quer trabalhar.
b) Replicação
O Ingres implementa transparência de replicação através do Ingres/Replicator,
um componente que faz parte do SGBD que cuida de tudo relacionado a replicação. O
Ingres/Replicator se porta como uma camada entre o banco de dados e a aplicação, sendo
transparente ao usuário. Quando um usuário faz uma consulta ou atualiza uma tabela, o
Ingres/Replicator cuida para que esse usuário não precise atualizar cada réplica existente
desse banco, bem como não mostra ao usuário se o conjunto resposta veio de uma réplica
ou do banco original.
c) Fragmentação
Não foi encontrado nenhum documento falando sobre transparência de
fragmentação no Ingres, a não ser durante a otimizaçao de uma consulta, quando a
consulta é quebrada em fragmentos (não visíveis ao usuário, que acha que a consulta está
sendo executada localmente) e cada fragmento é resolvido por um site responsável, sendo
coordenados pelo site de onde partiu a consulta.
11
4. Processamento Distribuído de Consulta
a) Suporte ao Processamento Distribuído de Consulta
Star tem suporte para otimização distribuída de consulta, escolhendo o mais
eficiente acesso ou plano de consulta entre os diferentes bases de dados e diferentes nós
da rede. Enquanto o plano de consulta está sendo desenvolvido, o Star tem a habilidade
de mover tuplas de dados de um site para outro com o intuito de maximizar os recursos
do processamento ao mesmo tempo que minimiza a movimentação de dados. O Star é
capaz de analizar variações nos fatores de custo de transmissão entre nós da rede e tempo
de processamento da CPU, bem como escolher quando e para onde (ou de onde)
transferir dados em busca de uma performance ótima.
b)Tipo de Otimizador de Consulta Utilizado
Heurística. O Ingres possui um componente chamado Ingres Query Optimizer
(que no caso do banco de dados distribuído é utilizado pelo do Star), que se utiliza de
informações básicas tais como tamanho da tabela, número de tuplas, chaves primárias e
índices definidos, mas também se utiliza de informações mais específicas como
quantidade de dados duplicados (recuperados através de estatísticas geradas) em uma
coluna e tráfego de rede (através do componente Ingres/Net).
c) Mecanismos de Otimização de Consulta Distribuída
O Star mantem dados estatísticos em um catálogo chamado iistatistics e dados a
respeito do banco distribuição em uma tabela chamada iihistograms. Quando o Query
Optimizer avalia uma query, ele gera um QEP (Query Execution Plan) mostrando como a
query será executada. Uma vez que o QEP foi gerado, ele pode ser usado uma ou mais
vezes para executar a mesma query. Como geralmente existem outras maneiras de se
otimizar uma query, escolher o melhor QEP causa um dano à performance. Por isso, o
Star te possibilita visualizar um gráfico desse QEP, sendo assim possível detectar um
problema na performance. Agora, dependendo da própria query, o Query Optimizer pode
gerar mais de um QEP. Queries contendo subqueries, Union, Group By e/ou Views que
precisam ser montadas são os casos. O site de onde parte a consulta determina como será
feita a consulta. Logo, é híbrido.
12
5. Processamento Distribuído de Transação
Two-Phase Commit
Fase 1
Se alguma parte da fase 1 falhar, por exemplo, se o Star perder a conexão com
um nó antes de todos os bancos de dados estarem preparados para comitar, o Star
dá um roll back sobre a transação em todos os sites, inclusive naqueles que já
estão prontos para comitar.
Fase 2
Se a conexão a um banco de dados local for perdida entre o tempo que o Star
decide comitar e o tempo que o banco de dados local de fato acata aquela
instrução, Star continua tentando completar a transação até a conexão ser
restaurada e o commit efetuado. Star não retorna o controle ao usuário final até
que todos os nós tenham comitado. Se alguma parte da fase 2 falhar, o Star ainda
assim comita a transação.
Quando O Two-Phase Commit Não É Usado
Nem todas as transações distribuídas requerem o two-phase commit. Por exemplo, uma
transação que não atualiza, ou que atualiza apenas um banco de dados, não requer coordenador
entre os bancos de dados. Neste caso, Star usa o single-phase commit que consiste no envio de
mensagens de commit para cada banco de dados.
As vezes uma transação distribuída não pode usar o protocolo de two-phase commit pelo
fato de um dos bancos de dados não envolvidos não suportá-lo.
Tais bancos de dados ainda podem participar em uma transação distribuída se seus dados
não são atualizados, ou se os bancos de dados estão no único site que está sendo atualizado em
uma transação. Se um único site não capaz do two-phase commit estiver envolvido em uma
atualização de múltiplos sites, o Star simulará o two-phase commit.
Simulação do Two-Phase Commit
No caso onde uma atualização é realizada para um site que não é capaz do two-phase
commit e onde uma transação de atualização em múltiplos sites é requerida, o Star simula o twophase commit. Ele faz isso primeito enviando um prepare-to-commit para todos os sites que são
capazes desse protocolo, então enviando um commit para o site individual que não é capaz do
two-phase commit, e finalmente enviando commits para todos os outros sites preparados. Note
que o Star apenas suporta a simulação do two-phase commit quando um site individual não capaz
do two-phase commit está envolvido numa atualização de sites múltiplos. Se mais de um site não
é capaz do two-phase commit é atualizado, o Star se recusa a atender a atualização.
Utilitário StarView
13
O Star tem um utilitário gerenciador de banco de dados distribuído chamado StarView, o
qual permite ao administrador de banco de dados do Star:



Obter informação sobre os nós, bancos de dados e tabelas que constituem um banco de dados
distribuído.
Testar as conexões de rede entre os nós no banco de dados distribuído.
Registrar tabelas locais num banco de dados distribuído e remover estes registros.
6. Suporte a acesso a dados de SBBD Heterogêneos
O Ingres dá suporte a cesso a dados de banco de dados que não sejam Ingres atra’ves
dos compenentes Ingres/Star, Ingres/Net e Enterprise Access. No final desse
documento consta um apêndice dando mais detalhes sobre o funcionamento de cada
um desses componentes.
Bancos de Dados que Acessa:





Oracle
Sybase
Sql Server
Informix
DB2
Apêndice: Ingres/Star (Gateway)
É um gerenciador de dados que adiciona ao Ingres a capacidade de um sistema de banco
de dados relacional distribuído, o qual inclui acesso, armazenamento e processamento distribuído.
Ele faz com que se combine um número de bancos de dados separados para criar uma simples
view de seus dados, que é acessada como se fosse um simples banco de dados local.
Qual produto do Ingres deve ser usado:

Para acesso local aos dados
Apenas o Ingres

Para acesso remoto aos dados
Quando seu computador faz parte de uma rede, Net permite acessar um simples banco de
dados armazenado em um outro computador pelo seu computador local.

Para acesso a dados heterogêneos
O Enterprise Access permite acessar dados armazenados em bancos de dados nãoIngres.
14

Para acesso a dados distribuídos
Star dá acesso a múltiplos bancos de dados simultaneamente. Não é preciso saber onde os
dados requisitados estão. Os outros bancos de dados e suas configurações são invisíveis.
Trabalha transparentemente com o banco de dados distribuído Star como se ele fosse um
banco de dados local Ingres no seu próprio computador.
Star + Net
Dá acesso remoto como se fossem bancos de dados locais, não importando em que lugar da
rede estes bancos de dados estão armazenados.
Star + Enterprise Access
Permite o acesso a ambos os bancos de dados Ingres e não-Ingres, ou mesmo diferentes tipos
de banco de dados não-Ingres.
Star + Net + Enterprise Access
Permite o acesso a ambos os bancos de dados Ingres e não-Ingres simultaneamente, em
qualquer lugar da rede.
Sintaxe de Acesso Distribuído:
IngresCommand [vnode.:]distdbname/server_class
Deve ser especificado um nome vnode se o banco de dados distribuído reside num nó remoto.
Deve ser especificado o server_class como /star para significar que está acessando um banco
de dados distribuído pelo servidor Star.
ARQUITETURA DO STAR
Catálogos do Star
Quando é criado um banco de dados distribuído, o Star cria catálogos para coordenar o acesso
a todos os dados. Esses catálogos são coleções de tabelas que armazenam informações sobre
banco de dados distribuído. Ele descreve todo banco de dado local que é componente de um
banco de dados distribuído, assim como os objetos do banco de dados distribuído.
Componentes
15

Um banco de dados coordenador
Um banco de dados coordenador contém os catálogos que o servidor Star usa para guardar
rotas de objetos distribuídos. Quando um usuário requisita informação, o servidor Star acessa
o banco de dados coordenador e associa bancos de dados locais via o servidor local SGBD
para pegar a informação.

Entradas nos catálogos de definição de instalação
Estas entradas contém informações que definem cada banco de dados distribuído e banco de
dados coordenador na instalação, e mostra que banco de dados coordenador é associado com
que banco de dados distribuído. Ele também contém informação de configuração que permite
o Star processar eficientemente as consultas.

Link opcional de usuário específico para dados em outros bancos de dados
Links opcionais para outros dados são gerados pelo registro como statement link. Quando
registra dados existentes para um banco de dados distribuído, informações sobre a localização
dos dados são adicionadas aos catálogos específicos do Star no banco de dados coordenador.
Diagrama de como o Star acessa os dados:
O Star recebe requisições de dados por múltiplos clientes e passa essas requisições de
dados para um servidor local de SGBD. (O servidor Star nunca acessa diretamente dados de um
banco de dados). O servidor local de SGBD pode suportar acessos simultâneos de usuários à
banco de dados locais e consultas do servidor Star. O SGBD local acessa seu banco de dados e
retorna os resultados. O Star retorna os resultados da consulta distribuída para a aplicação.
16
Download