BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K....
Transcript of BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K....
Asterio K. Tanaka
BANCO DE DADOSDISTRIBUÍDOS e
DATAWAREHOUSING Asterio K. Tanaka
http://www.uniriotec.br/~tanaka/[email protected]
Revisão de Arquitetura C/S
Asterio K. Tanaka
BD Cliente-Servidor comfunção distribuída
Aplicativo
Lógica da IU
Aplicativo
BD
Lógica donegócio
Gerência dosdados
Cliente Servidor
Lógica donegócio
Figura 3.4 - Função distribuída.
Asterio K. Tanaka
Princípios para Distribuição de Funções
• A funcionalidade deve estar localizada o mais próximo possível das suas fontes de entrada de dados e dos seus destinos de dados
• Localize a funcionalidade na plataforma que possuir os recursos mais adequados para o seu atendimento
• Localize a funcionalidade onde ela irá ajudar a conservar recursos na seguinte ordem de prioridade:
– recursos do servidor compartilhado– recursos da rede compartilhada– recursos do cliente
interface interface
?
Asterio K. Tanaka
Princípios para Distribuição de Funções
• A decisão envolve a consideração de vários fatores:– capacidade de processamento da estação cliente– capacidade de processamento da estação servidora– capacidade da rede (banda)– carga atual da estação servidora– volume de utilização da rede– carga adicional que seria gerada para a estação servidora– volume de tráfego adicional que seria gerado para a rede– estratégia de atualização das versões do software– requisitos de segurança
interface
SGBD
interface
As funções relacionadas com o armazenamento de
dados deveriam ficar no servidor
As funções de validação da
entrada de dados deveriam ficar no
cliente
Asterio K. Tanaka
Mecanismos para Distribuição de Funções em SGBDs
• Bancos de dados podem armazenar outros objetos além de dados, conferindo “inteligência” aos dados armazenados
– A forma utilizada é baseada em estender-se a funcionalidade do SGBD, criando-se procedimentos
– Os procedimentos são especificados com o uso de uma linguagem procedural, usada em conjunto com a DCL, a DML e a DDL
– Procedimentos são uma forma de se mover a funcionalidade do cliente para o servidor
– O que pode ser movido depende da linguagem disponibilizada pelo fabricante
» caso disponibilize uma linguagem computacionalmente completa, praticamente tudo pode ser movido para o servidor
Asterio K. Tanaka
Mecanismos para Distribuição de Funções em SGBDs
• Os procedimentos podem ter sua execução invocada pelas aplicações ou pelo próprio SGBD, quando se verificam certas condições pré-definidas
• procedimentos executados por invocação da aplicação são chamados de stored procedures ou db procedures
• procedimentos executados por iniciativa do SGBD são chamados de triggers ou rules
SGBD
interface
Os procedimentos armazenados e os triggers só existem
no contexto do SGBD
Asterio K. Tanaka
Procedimentos ArmazenadosÉ uma coleção compilada de comandos SQL, de comandos de controle de fluxo, declaração de variáveis, operadores de atribuição e outros comandos
EXEMPLO (em Oracle - definição)CREATE PROCEDURE retiracli (numcli IN INTEGER) AS
nomecli VARCHAR2(50);BEGIN
SELECT nome INTO nomecliFROM clientes WHERE cgc = numcli;
INSERT INTO logclientes VALUES (numcli, nomecli);DELETE FROM clientes WHERE cgc = numcli;
EXCEPTIONWHEN NO_DATA_FOUND THEN
raise_application_error(-20123, ‘CGC invalido’);
END retiracli;
É desenvolvido com uma linguagem
proprietária
Programação da chamada pela aplicação...exec retiracli(60386005000104);...
A maneira de se invocar a execução de um procedimento armazenado varia de linguagem para linguagem
Asterio K. Tanaka
Procedimentos Armazenados no Interbase
• Existem dois tipos básicos– procedimentos SELECT
» utilizados como substitutos de VIEWs ou TABLEs nos comandos SELECT
• não são invocados diretamente pela aplicação
» retornam uma ou mais variáveis– procedimentos executáveis
» são invocados diretamente pela aplicação, através de um comando EXECUTE PROCEDURE
» podem não retornar valores aos programas chamadores
Asterio K. Tanaka
Procedimentos Armazenados no Interbase
SET TERM !! ;
CREATE EXCEPTION produto_vinculado "Produto possui vendas efetuadas"; !!
CREATE PROCEDURE excluir_produto (in_codigo_produto INTEGER)AS
DECLARE VARIABLE alguma_venda INTEGER;BEGIN
alguma_venda = 0;SELECT COUNT(CODIGO_PRODUTO)
FROM item_pedidoWHERE CODIGO_PRODUTO = :in_codigo_produtoINTO :alguma_venda;
IF (alguma_venda > 0) THENBEGIN
EXCEPTION produto_vinculado;SUSPEND;
ENDDELETE FROM PRODUTO
WHERE codigo_produto = :in_codigo_produto;SUSPEND;
END !!
SET TERM ; !!
Programação da chamada pela aplicação
execute procedure excluir_produto 1000;
Programação da chamada pela aplicação
execute procedure excluir_produto 1000;
Asterio K. Tanaka
Em PL/PGSQL (PostgreSQL) Função como procedimento armazenado
/* insere dados do empregado demitido na tabela HISTEMPREG antes de exclui-lo da tabela EMPREGADO */
create or replace function PD_EMPREG (char) returns integer as'declare cod alias for $1;
v_nome varchar(30);v_endereco varchar(40);
beginselect into v_nome, v_endereco nome, endereco
from EMPREGADO where CPF=cod;if not found then
raise exception ''CPF % invalido'',cod;return 1;
end if;insert into HISTEMPR values (cod, v_nome, v_endereco, current_date);delete from EMPREGADO where CPF=cod;return 0;
end'language 'plpgsql';
Asterio K. Tanaka
Procedimentos Armazenados• Procedimentos armazenados prodem ser utilizados para reduzir o
tráfego na rede
Interação entre cliente e servidor usando os comandos SQL como mecanismo de comunicação entre processos
INSERT INTO cgc, nome ...
SELECT nome ...
DELETE FROM clientes ... DELETE ...
INSERT ...
SELECT ...Tradu-ção, otimiza-ção e execu-ção
envia comando retorna resultado
envia comando retorna resultado
envia comando retorna resultado
Suponha: • cada comando SQL corresponde a uma requisição de 100 bytes e a
um retorno de 200 bytes• o tempo total de execução é de 1”
Volume de tráfego gerado: 3 x 300 x 8 = 7200 bps
Asterio K. Tanaka
Procedimentos Armazenados
Suponha: • cada execução requisitada utiliza 50 bytes e retorna
100 bytes• o tempo total de execução é de 1”
Interação entre cliente e servidor usando Interação entre cliente e servidor usando procedimento armazenado como mecanismo de procedimento armazenado como mecanismo de
comunicação entre processoscomunicação entre processos
...
exec retiracli (60386005000104)
...DELETE ...
INSERT ...
SELECT ...Carrega
e executa
o procedimento
requisita execução
retorna resultado
Volume de tráfego gerado: (50 +100) x 8 = 1200 bps
Asterio K. Tanaka
Procedimentos Armazenados
• Utilizações possíveis dos procedimentos armazenados
– Podem ser utilizados para forçar a observância das regras de negócio por todas as aplicações
– Podem ser usados para melhorar a segurança no acesso aos dados
– Podem ser usados para melhorar o desempenho das aplicações
– Podem ser usados para melhorar a manutenção
? Passos:? identificar a regra a ser
observada (dados e condições)
? especificar a regra? codificar o procedimento
armazenado? revogar os privilégios de
acesso às tabelas para incluir/alterar/excluir/consultar (GRANT/REVOKE)
? Garantir privilégio de execuçao para o procedimento armazenado
Asterio K. Tanaka
Procedimentos Armazenados
• Problemas com o uso de procedimentos armazenados
– o mecanismo não possui padronização» o desenvolvedor pode necessitar
aprender mais de uma linguagem para definição
» a portabilidade é reduzida das aplicações e procedimentos
– nem todo SGBD provê esta facilidade» a distribuição da lógica dos dados
entre aplicação e SGBD pode ficar inviabilizada SGBD
lógica da aplicação
DML
lógica da interface do
usuário
Asterio K. Tanaka
Procedimentos Armazenados
• É um objeto de dados• É gerenciado por um
SGBD• Existe no contexto de um
BD• É definido com o uso de
uma linguagem própria do SGBD
• A linguagem geralmente é um SQL estendido
– a funcionalidade fica restrita à manipulação de dados no contexto do BD
Comparação de MecanismosProcedimentos Armazenados e RPCs (Remote procedure Calls)
? É um processo? É independente de
SGBDs? Não está restrito a um
contexto? É definido com o uso de
uma linguagem hospedeira mais uma linguagem de definiçao de interface (IDL)
? As linguagens hospedeiras podem ser linguagens completas
Asterio K. Tanaka
Triggers• Trigger (gatilho)
– É um procedimento armazenado que tem a execução disparada pelo próprio SGBD quando a condição pré-estabelecida é verdadeira
– A condição de disparo geralmente é associada a um evento (execução ou tentativa de execução) de operação sobre uma tabela
– operações de leitura (SELECT) ou modificação do BD (INSERT, UPDATE, DELETE) podem ter triggers associados
– Triggers são orientados a um registro por vez (FOR EACH ROW) ou por comando (FOR EACH STATEMENT)
– FOR EACH ROW: uma operação de exclusão de 10 tuplas implicaria 10 disparos do trigger associado à operação de exclusão
Trigger
Evento
Condição
Ação
Asterio K. Tanaka
Triggers
EXEMPLO (Em Oracle - definição)
CREATE TRIGGER retiracliBEFORE DELETE ON clientesFOR EACH ROWBEGININSERT INTO logclientesVALUES (:old.cgc, :old.nome);
END retiracli;
Cada SGBD tem uma linguagem própria para definir procedimentos armazenados e triggers
Ativação pela aplicação
......DELETE FROM clientes WHERE cgc =
60386005000104...
A aplicação não tem consciência da
existência do trigger
Asterio K. Tanaka
Triggers
• Exemplo utilizando a linguagem de procedimentos do Interbase
– regra de integridade específica na alteração de salário de um empregado: o novo salário não pode ser inferior ao salário anterior
– SET TERM !! ;CREATE TRIGGER ver_mud_sal FOR empreg_cargosBEFORE UPDATE ASBEGIN
IF (OLD.salario > NEW.salario) THENEXCEPTION “salario invalido”;
END !! SET TERM ; !!
Asterio K. Tanaka
Triggers em PL/PGSQL
-- insere dados do empregado demitido na tabela HISTEMPREG-- automaticamente antes de exclui-lo da tabela EMPREGADO
create or replace function td_empreg()returns opaque as'begin
insert into HISTEMPRvalues (old.CPF, old.nome, old.endereco, current_date);return old;
end;'language 'plpgsql';
CREATE TRIGGER td_empreg AFTER DELETE ON empregadoFOR EACH ROW EXECUTE PROCEDURE td_empreg();
Asterio K. Tanaka
Triggers• Interação entre cliente e servidor usando os comandos SQL
como mecanismo de comunicação entre processos e usando um trigger
Volume de tráfego gerado: 300 x 8 = 2400 bps
DELETE FROM clientes ...
DELETE ...
INSERT ...
SELECT ...
•Tradução e otimização do comando
•avaliação da condição de execução
•execução do corpo do trigger
•execução do DELETE
envia comando retorna resultado
Suponha: • cada comando SQL enviado utiliza 100 bytes• cada resultado retornado utiliza 200 bytes• o tempo total de execução é de 1”
Asterio K. Tanaka
Triggers
• Quando usar triggers– Quando se desejar que uma mesma regra de negócio seja observada
por um grande número de aplicações» as aplicações não precisam ser autorizadas a ter/não ter acesso
uma a uma– Quando existirem restrições de integridade e um grande número de
aplicações que potencialmente possam violá-las» as aplicações podem ignorar os procedimentos para verificação
• Passos para utilização:– identificar a regra a ser observada (dados e condições)– especificar a regra– codificar o trigger– ativar o trigger
Asterio K. Tanaka
Triggers
• Problemas com o uso de triggers– o mecanismo não possui padronização
» o desenvolvedor pode necessitar aprender mais de uma linguagem para definição
» a portabilidade é reduzida das aplicações e procedimentos– nem todo SGBD provê esta facilidade– implica em sobrecarga para o SGBD
» o SGBD passa a monitorar as tentativas de execução das operações
– o mecanismo é poderoso, mas seu design é difícil
Asterio K. Tanaka
Comparação entre PAs e Triggers
• Sua existência deve ser do conhecimento da aplicação
• Seu uso pelas aplicações deve ser autorizado explicitamente
• Sua execução é invocada pela aplicação
• Sua existência deve ser do conhecimento da aplicação
• Seu uso pelas aplicações deve ser autorizado explicitamente
• Sua execução é invocada pela aplicação
Procedimento armazenado
? Sua existência pode ficar restrita ao DBA
? Seu uso é genérico, independendo de autorização caso a caso
? Sua execução é disparada pelo SGBD quando as condições especificadas se verificam
? Sua existência pode ficar restrita ao DBA
? Seu uso é genérico, independendo de autorização caso a caso
? Sua execução é disparada pelo SGBD quando as condições especificadas se verificam
Trigger
Ambos são mecanismos de SGBD que viabilizam as arquiteturas Cliente/Servidor com distribuição de funções.
Asterio K. Tanaka
Vantagens das Arquiteturas C/S(em relação a SBDs centralizados)
• Divisão de trabalho mais eficiente• Escala de recursos horizontal (nos clientes) e vertical
(nos servidores)• Melhor custo/benefício nas estações clientes• Habilidade de usar ferramentas familiares nas
estações clientes• Acesso de clientes a dados remotos (via padrões)• Funcionalidade de SGBD provida em estações
clientes• Melhor custo/benefício do sistema como um todo.
Asterio K. Tanaka
Problemas da Arquiteturas Cliente/Servidor
Problemas:• Gargalos no(s) servidor(es)• Servidor é um ponto de falha singular• Escalabilidade do BD dificultada
Soluções• Se o gargalo estiver no espaço disco -> ...• Se o gargalo estiver no tempo de acesso a disco -> ...• Se o gargalo for no processamento -> ...• Outras soluções
– Multiprocessamento no servidor– Multiplos servidores– SBD distribuído