BANCOS DE DADOS ATIVOS Weyler M Lopes © Especialização em Banco de Dados Página 1 O que é... É um SGBD ativo que pode automaticamente reagir a eventos, em contraste aos SGBD tradicionais. Um banco de dados que suporta ECA (EventoCondição-Ação). Sistemas de Banco de Dados focados em mecanismos de evento-resposta. Banco de Dados que permite a especificação e implementação de comportamentos reativos. Weyler M Lopes © Especialização em Banco de Dados Página 2 Aspectos Importantes Tópico muito explorado e estudado nos últimos anos. A qualidade “ativa” em SGBD ainda não está definida com precisão. Há um manifesto com esta finalidade. Assim como outras tecnologias relacionadas com banco de dados, a grande fator motivador para a implementação de um SGDBA (SGBD Ativo) é a aplicação a que se destinará. Características genéricas são comumente definidas, enquanto características específicas dependem da natureza da aplicação SGBDA é, na verdade, uma extensão de um SGBD Weyler M Lopes © Especialização em Banco de Dados Página 3 Regras-ECA Consistem de evento, condições e ações; Significado de uma regra: quando um evento ocorre, a condição é checada, caso seja verdadeira, uma ação é executada; Outros termos são usados como referência a regras-ECA: Triggers, gatilhos; A SQL foi estendida para suportar a definição de regras-ECA; Eventos ocorrem dentro de transações e ações são executadas por de transações (triggered transactions); Uma transação de uma trigger (triggered transaction) pode ser executada antes ou depois da transação que a disparou (triggering transaction). Weyler M Lopes © Especialização em Banco de Dados Página 4 Características dos BD Ativos Definição de regras-ECA Um SGBDA é um SGBD; Possui um modelo de regras-ECA, capaz de definir eventos, condições e ações; Deve suportar o gerenciamento, incremento e decremento do conjunto de regras; Weyler M Lopes © Especialização em Banco de Dados Página 5 Características dos BD Ativos Execução de regras-ECA Deve possuir um modelo de execução que englobe: a detecção da ocorrência de um evento; ligue um evento a um item de dado; avalie a condição, execute a ação; Deve prover múltiplos de modos para execução da ação, no tangente a ocorrência do evento Deve gerenciar o histórico dos eventos Deve implementar resolução de conflitos Weyler M Lopes © Especialização em Banco de Dados Página 6 Características dos BD Ativos Usabilidade e Aplicação Deve suportar ambiente de programação Deve ser configurável Weyler M Lopes © Especialização em Banco de Dados Página 7 Classificação dos SGBDA Para monitoração em sistemas de informação homogêneos Para controle em sistemas de informação homogêneos Para controle em sistemas de informação heterogêneos Weyler M Lopes © Especialização em Banco de Dados Página 8 Exemplos de Regras-ECA SQL Server /* Trigger para inclusão de um movimento mediante a inclusão de um pedido */ create trigger inclui_cta_movto on pedido for insert as declare @cod numeric declare @matr numeric declare @ped numeric declare @comissão float declare @perc float select @perc = região.perc_vendendor from vendedor, região where vendedor.cod_região = região.cod_região and vendedor.matrícula = (select matrícula from inserted) select @comissão = (@perc/100)* vl_pedido from inserted select @cod = max(cod_movto) from cta_movto if @cod is null select @cod = 1 else select @cod = @cod + 1 select @matr = inserted.matrícula from inserted select @ped = inserted.cod_pedido from inserted insert into cta_movto values (@cod, @matr, @ped, @comissão, getdate(), "C", "B") Weyler M Lopes © Especialização em Banco de Dados Página 9 Exemplos de Regras-ECA SQL Server /* Trigger para o desbloqueio do movimento mediante o pagamento de uma compra */ create trigger altera_sit_movto on pedido for update as declare @sit varchar(1) if update(situação) select @sit = situação from inserted if @sit = "A" update cta_movto set situação = "D" from inserted where cta_movto.cod_pedido = inserted.cod_pedido if @sit = "C" update cta_movto set situação = "C" from inserted where cta_movto.cod_pedido = inserted.cod_pedido Weyler M Lopes © Especialização em Banco de Dados Página 10 Exemplos de Regras-ECA SQL Server /* Trigger para o desbloqueio do movimento mediante o pagamento de uma compra */ create trigger altera_sit_movto on pedido for update as declare @sit varchar(1) if update(situação) select @sit = situação from inserted if @sit = "A" update cta_movto set situação = "D" from inserted where cta_movto.cod_pedido = inserted.cod_pedido if @sit = "C" update cta_movto set situação = "C" from inserted where cta_movto.cod_pedido = inserted.cod_pedido Weyler M Lopes © Especialização em Banco de Dados Página 11 Exemplos de Regras-ECA PostgreSQL CREATE TRIGGER if_dist_exists BEFORE INSERT OR UPDATE ON films FOR EACH ROW EXECUTE PROCEDURE check_primary_key ('did', 'distributors', 'did'); CREATE FUNCTION one() RETURNS integer AS 'SELECT 1 AS RESULT;' LANGUAGE SQL; Weyler M Lopes © Especialização em Banco de Dados Página 12 Exercício Considerando o documento com um manifesto referente a SGBDA, compare o SQLServer e o PostgreSQL no tangente às características relacionadas no manifesto. Weyler M Lopes © Especialização em Banco de Dados Página 13