Utilização dos Métodos Armazenados no SGDB

Aluno: Moacir M. Viana

Introdução

O

que são esses métodos?  Para que servem?  Vantagens x Desvantagens

Introdução

Aumento do poder computacional

Máquinas Clientes performance próxima dos servidores

Aplicações divididas. Boa idéia?!

Servidor BD Interface do Usuário

 

Aplicativos permitem criar, atualizar, extrair informações Constituídos de unidades independentes, repositório local de procedimentos e comandos. Problemas de instalação/Manutenção – Alteração de regras – re-compilação e redistribuição

Distribuição da Consistência e Integridade dos Dados
 Regras

no banco – consistência e integridade em um único local
Regras espalhadas

Independente de ferramenta de acesso

 Regras

Stored Procedure Functions Triggers

Vantagens
 Compartilhamento

de funcionalidades  Evita redundância de código  Ganho de performance (I/O reduzido)  É mais estável do que uma ferramenta de programação

Stored Procedure
 Um

programa compilado e que pode executar comando SQL.  Aplicações cliente/servidor transações on-line
Procedure UNIDADE_SERVICO_INCLUIR ( Arg_zona in unidade_servico.zona%TYPE, Arg_local in unidade_servico.local%TYPE, Arg_Tipo in unidade_servico.codigo_tipo_us%TYPE ) is vDesc local_votacao.descricao%TYPE; vEnd local_votacao.endereco%TYPE; vMunic zona_eleitoral.municipio%TYPE; vCodigo_ele data_eleicao.codigo_el%type; begin select codigo_el into vCodigo_ele from data_eleicao where ativo=1; select descricao,endereco into vDesc, vEnd from local_votacao where zona=Arg_zona and local=Arg_local and codigo_el=vCodigo_ele; select municipio into vMunic from zona_eleitoral where zona=Arg_zona; Banco Dados set transaction read write; INSERT INTO unidade_servico (codigo_us,descricao, endereco, municipio, zona, local, codigo_el,codigo_tipo_us ) VALUES ( PROX_UNIDADESERVICO.nextval, vDesc, vEnd, vMunic, Arg_zona, Arg_local, vCodigo_ele, Arg_tipo ); commit; exception when others then rollback; raise_application_error(-20000,'Harpia - Não é possível criar registros'); end;

Stored Procedure
 Manipulação

direta dos dados sem intervenção do usuário

Aplicação (Cliente)

{Call }

Tabelas Stored Procedure Tabelas Tabelas
Banco de Dados

 Segurança

– acesso somente a executar SP e não ter acesso as demais tabelas.

Stored Procedure – Quando usar?
 Executa

as mesmas consultas  Operação requer o processamento de grande número de linhas (caras em termos de tráfego na rede).  Vários aplicativos acessam a mesma consulta  Acessar uma consulta em um loop

Functions
 Recebem

parâmetros de entrada e devolvem um valor em seu nome  Podem ser ativadas a partir de um comandos SQL do tipo DML
Exemplo: 1) INSERT INTO clientes (cod, nome, dt_nasc) values ( geraCodigo(1),’FULANO DE TAL,to_date(’01/01/1972’,’dd/mm/yyyy’)

2) SELECT Nome, Salario, fComissao(Salario,comissao) comissao FROM Vendendores

Triggers

Executa unidades de programas automaticamente toda vez que uma instrução SQL/DML for aplicado

Before
Insert Update Delete

After
Insert

Tabela T

Update Delete

Banco de Dados

Triggers
 Exemplo:
Vendas Qtd | CodProd | Vlr

Sistema de vendas
Produtos Cod | Descrição | Qtd | Vlr

Ações acontecem como conseqüências de outras

Procedimento baixa_estoque(){ se nao Vendas.eof faça se Produtos.encontrou(Vendas.codProd) entao Produtos.Qtd <- Produtos.Qtd – Vendas.Qtd; fim-se Vendas.ProxRegistro(); fim-se }

CREATE OR REPLACE TRIGGER tg_BaixaEstoque AFTER INSERT ON Vendas FOR EACH ROW declare Begin UPDATE produtos set qtd = qtd - :NEW.Qtd WHERE cod = :NEW .CodProd End; --ativado implicitamente

Vendas
Banco de Dados

Produtos

Triggers - Cuidados
 Não

criar triggers que dupliquem regras já definidas em Constraints  Alguns bancos recomendas limitar os códigos  Ter cuidado ao criar as triggers que disparam sob uma instrução UPDATE.

Dispara a trigger n vezes, ocasionando overflow de memória ou resultados errôneos

Por que utilizar Procedures e Triggers?
   

Permitem o servidor realizar operações complexas sem envolver o cliente Podem ser compartilhados por todas as aplicações cliente que acessam o banco Tarefas freqüentemente utilizadas são executadas mais rapidamente, são armazenadas e compiladas automaticamente Reduzem o tráfego na rede

Processamento pesado no servidor, usuários remotos que trabalham com conexões lentas

Triggers são executadas automaticamente, podendo ser utilizadas para fazer auditoria sobre o acesso ao banco. Controlam a integridade referencial de maneira mais facilitada

Desvantagens
 Pode

ser um trabalho muito árduo e demorado nessa linha de trabalho  As linguagens são proprietárias  Portabilidade x Eficiência.

O que é melhor colocar no SGDB e o que é melhor ficar fora?

Conclusão
 Analisar

a política adota de desenvolvimento  É uma questão de planejamento e análise
Não é questão de conveniência.
 Precisam

ser analisados por um profissional da área de banco de dados
 Proporcionar

funcionalidades e performance

Sign up to vote on this title
UsefulNot useful