25
Asterio K. Tanaka BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING Asterio K. Tanaka http://www.uniriotec.br/~tanaka/tin0036 [email protected] Revisão de Arquitetura C/S

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

  • Upload
    hanga

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 2: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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.

Page 3: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

?

Page 4: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 5: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 6: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 7: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 8: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 9: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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;

Page 10: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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';

Page 11: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 12: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 13: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 14: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 15: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 16: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 17: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 18: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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 ; !!

Page 19: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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();

Page 20: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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”

Page 21: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 22: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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

Page 23: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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.

Page 24: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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.

Page 25: BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSINGtanaka/TIN0036/02-BDDDW-Revisao-C-S.pdf · Asterio K. Tanaka BD Cliente-Servidor com função distribuída Aplicativo Lógica da IU Aplicativo

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