banco de dados distribuído

Propaganda
ADABAS D
BANCO DE DADOS DISTRIBUÍDO
ADABAS
Grupo:
Ana Carolina Brito
Helena Alves
Isa Madalena
Joelma Dias
1
28/05/17
ADABAS D
Índice
123456-
Projeto de BD-Distribuído
Controle do Ambiente Distribuído
Transparência
Processamento Distribuído de Consulta
Processamento Distribuído de Transação
Suporte a Acesso a Dados de SGBD Heterogêneo
2
28/05/17
ADABAS D
1- Projeto de BD-Distribuído:
-
Suporte à fragmentação

Horizontal, em função de valores de determinadas colunas ( Ex.: Separar dados de
acordo com a região: Clientes do RJ, clientes de SP etc)
Vertical, em função das colunas mais acessadas em um determinado site
Híbrida


Para obter fragmentação no Adabas D é necessário ter a ferramenta Adabas
Vista, que distribui um arquivo Adabas grande em vários arquivos chamados
partições. O arquivo original é particionado de acordo com os valores do campo
particionamento do Adabas.
Os dados no particionamento não são replicados; cada registro é armazenado
em uma única partição.
Benefícios: Custo de manutenção reduzido, maior flexibilidade, aumento de
disponibilidade (Partições individuais podem ser acessadas remotamente); Rápido
acesso aos dados (Consultas são direcionadas dinamicamente para uma única
partição, se for apropriada).
3
28/05/17
ADABAS D
Características do Adabas Vista

Acesso distribuído e direcionado

Pode pegar uma ou mais partições offline enquanto as aplicações continuam
acessando as partições restantes.

Facilidade de restringir partições

Manutenção das Partições-> Cada partição é separada em arquivos Adabas.
É possível operar os arquivos individualmente e paralelamente.

Acesso misto -> As aplicações podem acessar os dados por um arquivo de
partição específico através do arquivo real em paralelo com acesso à uma
view baseada no acesso através do Vista.

Consolidação

Uma nova partição pode ser criada para cada período de tempo e os dados
antigos podem ser recuperados para um armazenamento barato para ser
acessível pelas aplicações.

As partições não são armazenadas no mesmo local do banco de dados
Adabas. Elas podem ser distribuídas sobre vários banco de dados em uma
rede de computadores.
4
28/05/17
ADABAS D
-
Mecanismos de Replicação

Replicação Completa

Assíncrona

Propriedade Master/Slave

Mecanismo: Snapshot e Replicação Transacional
Para implementar a replicação assíncrona é usado o Empire Transaction
Propagator. Neste caso, o dado replicado é atualizado e sincronizado com o dado
mestre de acordo com o intervalo estabelecido pelo usuário. Os arquivos mestres
podem estar localizados próximos do local onde seus dados são frequentemente
modificados e as suas cópias próximas a locais que o acesso somente leitura seja
suficiente.
Os Snapshots são tabelas de leituras (read-only) e que são atualizadas
explicitamente pelo comando “refresh”. O “Refresh” tem que ser solicitado
explicitamente em uma primeira vez através do comando específico (Refresh). Com
isso, o usuário pode programar os próximos “refreshes” (Parametros START_WITH
e NEXT) para serem realizados automaticamente. O “Refresh” não é definido pelo
comando de criação do snapshot.
Se uma tabela snapshot só conter dados de uma tabela “base” e se existir um
snapshot log, ou seja, um protocolo de operacoes de modificação realizadas entre o
último "refresh" e o ponto atual, só estas modificações são realizadas na tabela
snapshot (Replicação Transacional). Caso contrário, toda a tabela é reconstruída.
As modificações da base de dados iniciadas por “triggers” que seguem outras
tuplas de tabelas são executadas sincronamente.
O comando “updmaster” organiza a extensão e o procedimento de atualização. A
manutenção dos dados reais é feita chamando o comando “updslave”.
5
28/05/17
ADABAS D
2- Controle do Ambiente Distribuído:
- Gerenciamento de View
. Views Atualizáveis:
O conceito de join view consiste em uma view cuja cláusula FROM referencie
duas ou mais tabelas.
O Adabas D permite que operações de modificação sejam feitas sobre join
views (INSERT, UPDATE, DELETE). Dessa forma, uma alteração que referencie uma
join view, irá alterar as tabelas base que a compõem.
Para que alterações possam ser feitas sobre join views, estas devem ser criadas
como “with check option” e deve conter as primary keys de todas as tabelas base.
Além disso foreign keys entre as tabelas base devem ser definidas.
As seguintes construções não podem ser feitas sobre join views: GROUP BY,
HAVING, DISTINCT, UNION, INTERSECT, EXCEPT, Outer Join e Subqueries.
Como o acesso aos dados através de views é síncrono, isto é, todas as vezes que
um usuário desejar realizar uma operação sobre a view, o SGBD terá que acessar as
tabelas que formam a mesma. Como essas tabelas podem estar em sites diferentes,
esse acesso pode gerar um custo alto devido ao tráfego na rede.
6
28/05/17
ADABAS D
. Snapshots
O uso de snapshots minimiza o problema de custo causado pelo uso de views.
Snapshots são cópias estáticas de uma tabela que são armazenadas fisicamente
no banco de dados.
Alterações na tabela base não são automaticamente atualizadas nos snapshots.
As modificações podem ser feitas assincronamente através da cópia inteira dos
dados ou através da utilização de um log de alterações. A execução das
modificações são feitas através do comando REFRESH.
Somente cláusulas SELECT são permitidas em um snapshot. INSERT, UPDATE ou
DELETE não são permitidos.
Views em databases distribuídos
Através do módulo Adabas Vista, o ADABAS D permite que views sejam definidas
sobre partições. Essas partições podem estar localizadas em um único database ou
em databases distribuídos pela rede. Uma view é acessada como se fosse uma única
entidade mesmo que ela acesse fragmentos localizados em databases distribuídos.
Consultas Distribuídas
Views sobre fragmentos podem implicar em consultas distribuídas. Acesso
distribuído e direcionado -> Ex.: Particionamento pela chave mais acessada. As
consultas sobre views definidas com base nesta chave são endereçadas para só uma
das partições(direcionado). Se uma consulta feita sobre uma view que não seja
7
28/05/17
ADABAS D
baseada nesta chave, ela é enviada para todas as partições e o Vista irá agrupar os
resultados encontrados (distribuído).
-
Controle de Segurança
. Proteção do Dado
O controle de usuários no ADABAS D é feito a nível de partição. É possível
restringir o uso de uma partição de acordo com roles de usuários. Para cada
partição um usuário pode ter tipos de acessos diferentes, eses acessos podem ser
none, read ou read/write.
A segurança dos dados é implementada através da utilização de alias que não
permitem que a localização física dos dados sejam visualizados pelos usuários. Esse
controle é implementado pelo Entire Net-Work.
Com o ADABAS D, o usuário não tem que se preocupar com extensões do SQL,
pois toda a criação e manutenção de objetos na base de dados não requerem
nenhuma parametrização, como tamanho de tabela, localização etc.
Os dados dos usuários e dos objetos ficam armazenados em um catálogo parcial
no site em que os objetos/usuários foram criados (HOMESERVERDB). As informações
sobre os objetos replicados ficam armazenados no catálogo do HOMESERVERDB e no
catálogo de cada uma das réplicas. Os dados de acessos de usuário (login e senha)
são copiados do local original para cada uma das réplicas.
O catálogo global consiste em uma parte que é copiada para todos os
SERVERDBs e de uma outra parte armazenada em apenas um servidor.
8
28/05/17
ADABAS D
O ADABAS D oferece segurança através de bloqueio de linhas e tabelas,
privilégio de classes de usuário, triggers e integridade referencial e de domínio.
Existem também limites atribuídos pelo DBA aos usuários quanto ao uso de recursos
de espaço de discos e custos de consultas SQL.
. Controle de Autorização
Privilégios
Os privilégios definem que usuários estão autorizados para acessar determinadas
tabelas (e suas colunas) em um banco de dados específico.
Cada tabela possui sua lista de privilégios, indicando os
poderes de cada usuário que possui acesso à ela.
Quando for necessário criar uma tabela para que todos os
usuários, tenham acesso, basta colocar a palavra PUBLIC no
momento de criação da tabela. Somente os usuários do
banco de dados em que a tabela está sendo criada, poderão
acessá-la.
Um usuário pode ter os seguintes privilégios: ALL, SELECT, INSERT, DELETE,
UPDATE, SELUPD, REFERENCES, INDEX e ALTER.
Quando os privilégios de SELECT ou UPDATE forem atribuídos à um usuário,
pode-se especificar a quais colunas da tabela esses privilégios se aplicam.
. Autorização
9
28/05/17
ADABAS D
Grupos de Usuários
O controle de autorização de usuários é muito importante para garantir a
segurança dos dados, visto que um usuário só poderá visualizar e/ou alterar os
dados que ele possui acesso.
Para facilitar o controle de acesso ao banco de dados, o ADABAS possui o
conceito de grupos de usuários. São atribuídos privilégios a um grupo no momento
da criação deste. Quando criamos usuários, podemos referenciá-los a determinado
grupo, todos os privilégios do grupo são cascateados para seus usuários. Se for
necessário, pode-se retirar ou dar privilégios a um usuário específico, mesmo se
este estiver dentro de um grupo.
Direitos de Usuários
O ADABAS oferece quatro tipos de classes de usuários:
DBA : Podem criar usuários ou grupos de usuários com status RESOURCE ou
STANDARD, dar privilégios à outros usuários e criar dados privados.
SYSDBA: Possui os mesmos poderes da classe DBA, além de poderem criar
usuários DBA em seu SERVERDB.
RESOURCE: Os usuários podem definir suas próprias tabelas, views e sinônimos,
além de dar privilégios à outros usuários sobre esses objetos.
STANDARD: Os usuários podem definir views e sinônimos, porém, só podem
efetuar operações nos dados em que possuem privilégios.
10
28/05/17
ADABAS D
-
Controle de Integridade
Para manter a consistência no banco de dados, é necessário garantir que todas
as restrições sobre o banco sejam respeitadas. Como em banco de dados distribuído
nós possuímos vários usuários acessando os mesmos dados, e em algumas vezes,
em réplicas diferentes, é necessário que o SGBD implemente técnicas de acesso aos
dados sem que a integridade do banco de dados seja prejudicada.
O Adabas D não suporta foreign key entre tabelas de bancos de dados distintos.
Como resolução do problema de integridade entre os dados, é sugerida a utilização
de triggers.
O controle de primary keys entre fragmentos de uma mesma tabela, é feito
através da utilização de uma chave global do banco de dados (SYSKEY), essa chave
deve ser única e engloba todas as linhas de todos os fragmentos de uma tabela.
Isso é possível visto que a fragmentação no adabas é feita de forma direcionada,
conforme explicado anteriormente.
Locks
Para solucionar o problema de acesso concorrente às tuplas de uma tabela o
ADABAS D utiliza o conceito de lock.
Três tipos de locks são implementados:
Locks de leitura: Permite que diversos usuários leiam concorrentemente os
dados de uma tabela e previne a alteração de dados na mesma;
11
28/05/17
ADABAS D
Locks de escrita: Permite que um único usuário altere dados em uma tabela e
mantêm os dados inacessíveis aos demais usuários;
Lock otimizado (Optimistic Locking): Caso tenha existido alguma transação
concorrente à sua que tenha alterado tuplas na mesma tabela, o SGBD envia uma
mensagem para o usuário no momento do commit de sua transação e aborta as
alterações. Caso contrário, as alterações são executadas.
O ADABAS D tem como padrão liberar os locks automaticamente no final da
transação. Apesar disso, podem ser implementados locks que continuem ativos após
o fim da transação através da declaração explícita do mesmo.
A tabela abaixo exemplifica o comportamento dos locks quanto à transações
paralelas: (Excl: Exclusivo, Comp: Compartilhado)
Uma transação que possui…
Permite que outra
transação…
Excl
Comp
Lock em uma
tabela
Excl
Comp
Excl
Comp
Lock em uma linha Lock no catálogo
Efetuar lock exclusivo em
uma tabela?
Não
Não
Não
Não
Não
Sim
Efetuar lock compartilhado
em uma tabela?
Não
Sim
Não
Sim
Não
Sim
Não
Não
---
---
Não
Sim
Lock em uma linha que já
está no modo lock exclusivo?
---
---
Não
Não
---
---
Lock exclusivo em outra
linha?
---
---
Sim
Sim
---
---
Lock na linha de uma tabela
que está com lock em modo
exclusivo?
12
28/05/17
ADABAS D
Lock compartilhado em
qualquer linha da tabela?
Não
Sim
---
---
Não
Sim
Lock em uma linha que já
está no modo lock
compartilhado?
---
---
Não
Sim
---
---
Lock compartilhado em
outra linha?
---
---
Não
Sim
---
---
Alterar a definição de uma
tabela no catálogo do
sistema?
Não
Não
Não
Não
Não
Não
Leitura da definição de uma
tabela no catálogo do
sistema?
Sim
Sim
Sim
Sim
Não
Sim
Atitudes do ADABAS D para garantir a consistência do banco de dados:
-
Caso 1 (Dirty Read) : A transação T1 altera uma linha Y na tabela X, a transação
T2, lê a linha Y antes de T1 ter sido concluída (antes do comando commit). Nesses
casos, T1 executa o rollback.;
-
Caso 2 (Leitura não-repetitiva) : A transação T1 lê a linha Y da tabela X, T2 altera
ou exclui a linha Y e confirma as atualizações com o comando commit. Nesses casos
T1 lê novamente a linha Y, e uma mensagem é exibida informando que a linha não
existe mais;
-
Caso 3 ( Fenômeno Fantasma): A transação T1 executa um comando SQL que lê
um conjunto de linhas que satisfazem uma determinada condição. Uma transação
T2 cria uma tupla que satisfaz a condição especificada por T1. Para evitar
inconsistência na quantidade de tuplas que satisfazem as condições, a transação T1
reexecuta os comandos SQL.
13
28/05/17
ADABAS D
Controle de Consistência
O controle de consistência é responsável por manter o banco de dados
funcionando em boa performance. Para isso ele implementa os seguintes
procedimentos:
Check em tempo de execução: Verifica se existe consistência nas cadeias
internas de árvore B, utilizadas nos bancos de dados. Se forem encontradas
inconsistências, a base de dados deve ser restaurada (restore). Essa averiguação de
consistência deve ser feita antes de cada backup completo no banco de dados;
Check antes do restart no SERVERDB (Cold Mode): Páginas com erros de
gravação devido à um termino irregular do banco de dados são liberadas.
3- Transparência:
- Distribuição
No Adabas D pode ser usado um alias para cada objeto do banco de dados com
nome prefixado (nome local), portanto não existe transparência de Distribuição.
Ao executar o start-up da base de dados, é necessário usar o hostname original,
ou seja, o caminho completo do banco. Mas isto só é feito no momento de
construção da base de dados. Posteriormente, pode ser usado somente um alias
para referenciá-lo.
No Entire Net-Work, as aplicações não precisam saber a localização dos dados
para poderem acessá-los. O Entire Net-Work é um meio baseado em mensagens
que permite que o banco de dados seja acessado de qualquer lugar na rede, sem
que seja necessário explicitar a sua localização física, podendo mascará-la através
de um alias.
14
28/05/17
ADABAS D
- Não possui Transparência de Replicação
- Fragmentação
No Adabas Vista, os arquivos particionados são vistos como uma única entidade
lógica. Em outras palavras, as partições são transparentes para o usuário final.
Existe um particionamento pela chave mais acessada. As consultas baseadas nesta
chave são endereçadas para só uma das partições(direcionado). Se não for baseada
nesta chave, a consulta é enviada para todas as partições e o Vista irá agrupar os
resultados encontrados (distribuído).
4- Processamento Distribuído de Consulta:
- Suporte ao processamento distribuído de consulta:
Quando as consultas não são direcionadas para uma determinada partição, elas
são enviadas para todas as partições e o Adabas Vista se encarrega de agrupar
estes resultados.
- Tipo de otimizador de consulta utilizada:
15
28/05/17
ADABAS D
Baseado em custo. A otimização no Adabas é baseado em custo e
cria
alternativas de planos de acesso em tempo de compilação e em tempo de execução ele
escolhe o melhor custo, ou seja, o menor custo.
- A medida do plano melhor é feito em custo, baseando-se no I/O fisico.
- Mecanismos de otimização de consulta distribuída:
O Adabas adota o mecanismo de otimização trabalhando com estatísticas
referentes ao tamanho dos objetos da base de dados e nos valores distribuídos.
Esse processamento é baseado nas estatísticas geradas que estão sempre
atualizadas.
Estas estatísticas que servem para determinação do plano de acesso são
baseadas no número de linhas de uma tabela e na seletividade das colunas
individualmente.
O que o otimizador utiliza para escolher o melhor plano, o plano ótimo?
-
o número de linhas das tabelas bases, as tabelas que estão sendo consultadas .
-
o tamanho das arvores B dessas tabelas e índices.
-
o número dos diferentes valores em colunas, ou seja, otimização de joins.
Observação:
16
28/05/17
ADABAS D
Se o Adabas reparar que houveram diferenças entre o otimizador atual e as
estatísticas calculadas, ele mesmo dispara um update estatístico implícito.
Se o tamanho ou a quantidade de acesso em uma tabela mudar muito deve ser
feito uma atualização nas estatísticas.
Se não houver a atualização das estatísticas, o otimizador pode selecionar um
caminho não favorável de processamento que pode causar uma perda drástica da
performance do sistema.
5- Processamento Distribuído de Transação:
- Sub-Transações
Quando uma Stored Procedure no ADABAS D for chamada pro uma aplicação,
todas as ações serão efetuadas caso haja sucesso e não haverá nenhum efeito no
Banco de Dados caso haja alguma falha.
Para que isso ocorra o ADABAS D utiliza Sub-Transações. Quando utilizamos
Stored Procedures não podemos utilizar COMMIT e ROLLBACK, pois poderá haver
Sub-transações ativas que não serão finalizadas. Sendo assim devemos utilizar os
comandos SUBTRANS BEGIN, SUBTRANS END e SUBTRANS ROLLBACK. Caso haja
sucesso, a Procedure será concluída com SUBTRANS END. Caso haja alguma
situaçõa de erro, não haverá inluência na aplicação pois a transação não será
comitada, onde o SUBTRANS ROLLBACK será executado.
Isolamento
17
28/05/17
ADABAS D
ADABAS
A
NSI
Tipo
do
Lock
Read
0
0
uncommitted
Read
1 , 10
1
committed
Consistent
15
-
Select
Repeatable
2 , 20
2
Read
Serializable
3 , 30
3
Nível 0 (Dirty Reads) – O acesso é permitido aos objetos que estão sendo
alterados por outro usuário em uma transação não comitada. O Nível de isolamento
0 permite o maior nível de paralelismo.
Nível 1 , 10 - O ADABAS faz um lock shared em cada linha que está sendo usada
na tabela, previnindo o acesso a transações ainda não completadas.
Nível 15 – As tabelas relacionadas a transação não podem ser modificadas
enquanto os comandos estão sendo processados. Isto é implementado através de
um lock em toda a tabela.
Nível 2 , 20 – Em uma transação as tabelas são lockadas, de modo que as outras
transações possam enxerga-las apenas para consultas. As linha também são
lockadas, mas as outras transações não poderão enxerga-las.
18
28/05/17
ADABAS D
Nível 3, 30 – Assegura que o usuário somente enxergue as modificações feitas
por ele mesmo.
-Two-Phase Commit
Por meio do protocolo Two-Phase Commit, o Adabas sincroniza as transações do
ambiente distribuído. Este garante a consistência dos dados nos respectivos bancos
de dados, coordenando as mudanças feitas em cada um. O Protocolo Two-Phase
Commit é usado para sincronizar atualizações em diferentes Bases de dados, de
modo que toda a transação seja executada com sucesso, ou caso haja alguma falha,
não seja executado. Cada Base de Dados particpa da Transação Global
independentemente. A transação é comitada ou não, após passar pelas duas fases:
Na Primeira fase todos os participantes devem informar se ja comitaram a sua
parte da transação.
Na Segunda Fase, após todos os participantes terem respondido, a transação
local é comitada, caso todas as respostas forem positivas ou não, caso alguém nao
tenha comitado.
Durante a fase um os participantes devem
armazenar todos os recursos da
transação para s preparar para os eventos da fase dois.
O gerente de transação é um elemento chave dessa estratégia. Ele permite que
os bancos de dados do Adabas participem de transações globais, aumentando a sua
flexibilidade.
19
28/05/17
ADABAS D
Uma Transação Global é uma unidade de trabalho que envolve mudanças
operando uma ou mais base de dados na mesma ou em diferentes máquinas. O
Banco de Dados pode ser local ou remoto.
Gerente de Transação do Adabas:
-
Coordena as mudanças dos Bancos de dados que estão participando da transação
global.
-
Monta as regras para coordenar transações globais que envolvem bancos de dados
em mais de uma imagem de Sistema.
- Processa as instruções do Protocolo Two-Phase Commit no nível mais alto de gerencia
da Transação, envolvendo transações que estão em Bancos de dados ADABAS ou não.
-
Recovery
Nas situações de erro que não envolvem falhas do meio de armazenamento, o
Adabas restaura automaticamente o último estado consistente da base de dados
quando restarta. Isto significa que todos os efeitos de transações comitadas são
preservados, enquanto os efeitos das transações abertas no momento em que o
erro ocorreu, são cancelados.
As falhas do meio de armazenamento requerem o carregamento de uma versão
de backup da base de dados realizada previamente. Pode também ser necessário
carregar diversos dados incrementais de backup para restaurar a base de dados
para um estado acima das últimas versões do log que podem ser reaplicadas.
Quando estas ações são concluídas, o último estado consistente da base de dados
foi restaurado.
20
28/05/17
ADABAS D
6 -Suporte a acesso a dados de SGBD Heterogêneo
Através do Adabas 7.1 para mainframes e do Adabas Transaction Manager para
mainframes, é possível sincronizar as transações envolvidas em múltiplos sistemas
de banco de dados. ATM 1.2 suporta a sincronização entre Adabas e: DB2, IMS e
VSAM.
O Adabas pode comunicar-se com outros SGBDs também através do driver
ODBC. O driver ODBC executa dentro do contexto da aplicação, na máquina do
cliente se necessário. O driver ODBC fornece as funções definidas para o ODBC e
converte o pedido de SQL antes de passá-lo para o Kernel.
21
28/05/17
Download