Regras de Negócios é com o Elefante!

Documentos relacionados
Sistemas de Informação

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Bancos de Dados I. Integridade semântica

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

PL/pgSQL por Diversão e Lucro

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Triggers no PostgreSQL

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL

Oracle 10g: SQL e PL/SQL

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Banco de Dados Avançados Banco de Dados Ativo

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br


PHP INTEGRAÇÃO COM MYSQL PARTE 1

Prova de Fundamentos de Bancos de Dados 2 a Prova

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

PL/pgSQL. Introdução. Introdução. Introdução

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Relatório. Projecto de Base de Dados Parte 2. Turno: quinta-feira, 11:30 Grupo 25: André Gonçalves Rui Barradas Hélton Miranda 68477

PostgreSQL 8.0. Diogo Biazus

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Comandos de Manipulação

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

trigger insert, delete, update

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

SQL DDL Criando Tabelas e Restrições

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

SQL Procedural. Josino Rodrigues Neto

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados


Bases de Dados 2007/2008. Aula 9

Curso PHP Aula 08. Bruno Falcão

Banco de Dados. Maurício Edgar Stivanello

Administração de Banco de Dados

EXEMPLOS DE COMANDOS NO SQL SERVER

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Oracle PL/SQL Overview

Structured Query Language (SQL) Aula Prática

Introdução à linguagem SQL

Structured Query Language (SQL)

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

Linguagem PL/SQL e Triggers

Linguagem de Consulta Estruturada SQL- DML

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

IMPLEMENTAÇÃO DE BANCO DE DADOS

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Introdução ao SQL. Aécio Costa

A linguagem SQL

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

CIÊNCIA E TECNOLOGIA DO RIO

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

SISTEMA DE GERENCIAMENTO DA EMPRESA JÚNIOR

Consultoria e Treinamento em Bancos de Dados Relacionais

Tarefa Orientada 19 Triggers

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

SQL Gatilhos (Triggers)

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

Banco de Dados. Prof. Antonio

Formação em Banco de Dados

GES013 - Sistema de Banco de Dados Funções e Gatilhos no PostgreSQL

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Treinamento sobre SQL

Acadêmico: Fabiano Bender. Orientadora: Joyce Martins FURB 2012/2

SQL. Hélder Antero Amaral Nunes

Projeto de Banco de Dados

Bases de Dados. Restrições de integridade. Restrições de integridade. As restrições de integridade garantem a consistência da BD exemplos

Linguagem SQL - Structured Query Language

Treinamento PostgreSQL - Aula 03

ROTEIRO. A Linguagem SQL (I parte) CEFET.PHB - PI Prof. Jefferson Silva. As partes da linguagem SQL. A Linguagem de Definição de Dados (SQL-DDL)

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Transcrição:

Regras de Negócios é com o Elefante!

HARDWARE SOFTWARE

Pesquisa Quantas camadas? Regras na Aplicação? Regras numa Camada Intermediária? Regras no Banco de Dados? Explain / Plano de Consulta?

E as minhas regras de negócio? E isso vai influenciar no desempenho?

DESVANTAGENS VANTAGENS

Cenário Ruim Banco de Dados FLUXO Intermediária FLUXO Aplicação Grande fluxo de informações entre as camadas; Alto consumo de memória; Alto consumo de CPU desnecessário; Perda de desempenho;

Cenário Bom Banco de Dados FLUXO Intermediária FLUXO Aplicação Pequeno fluxo de Informações entre as camadas; Consumo correto de memória; Consumo correto de CPU; Bom desempenho e consistência transacional;

Requisitos Conhecimento mais profundo de SQL e recursos de query; Conhecimento de Explain e Tunning de query; Conhecimento de Linguagem Procedural; PL/pgSQL * PL/Perl PL/Php C

Requisitos Costume de Concentrar regras e processamento de informações no banco de dados; Dimensionamento correto das Chaves de Referência (FK) e dos Índices;

Recursos do PostgreSQL Otimizador de consultas resolve queries complexas sem restrições; Queries com RETURNING; Funções Internas e Operadores para diversas necessidades; Funções de Agregação e Window Functions; WITH queries (Common Table Expressions); Foreign Data Wrappers;

QUERIES INSERT INTO films (code, title, did, date_prod, kind) VALUES ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'), ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy'), ('HX20', 'The Best Database', 110, DEFAULT, 'Other'), ('R90', 'The Dinner Game II', 140, DEFAULT, 'Comedy'); UPDATE employees SET sales_sum = sales_sum + accounts.total FROM accounts WHERE accounts.name = 'Acme Corporation' AND employees.id = accounts.sales_person;

RETURNING INSERT INTO films (code, title, did, date_prod, kind) VALUES ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'), ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy'), ('HX20', 'The Best Database', 110, DEFAULT, 'Other'), ('R90', 'The Dinner Game II', 140, DEFAULT, 'Comedy') RETURNING * ; UPDATE employees SET sales_sum = sales_sum + accounts.total FROM accounts WHERE accounts.name = 'Acme Corporation' AND employees.id = accounts.sales_person RETURNING id,sales_sum;

Window Functions SELECT nome,salario,filial,departamento, sum(salario) over (partition by filial) as tot_filial, sum(salario) over (partition by departamento) as tot_depto, sum(salario) over () as total, rank() over (partition by filial order by salario) as posicao FROM public.table1;

WITH Queries (CTE) WITH regional_sales AS ( SELECT region, SUM(amount) AS total_sales FROM orders GROUP BY region ), top_regions AS ( SELECT region FROM regional_sales WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales) ) SELECT region, product, SUM(quantity) AS product_units, SUM(amount) AS product_sales FROM orders WHERE region IN (SELECT region FROM top_regions) GROUP BY region, product;

Recursos da PL/pgSQL Executar queries construídas em Runtime, inclusive com DDL; Loop em cima de um resultado de uma query; Funções que retornam conjunto de linhas e que podem ser usadas como views; Captura e Definição de Erros Pessoais; Poder de decisão nas Triggers / Rules;

Queries Dinâmicas EXECUTE 'SELECT count(*) FROM mytable WHERE inserted_by = $1 AND inserted <= $2' INTO c USING checked_user, checked_date; EXECUTE 'CREATE TABLE mytable < >; ';

Loop em Queries / Return Função reg_itens_deletions for VarRec in execute 'delete from table_itens where (qtd = 0) and (used <= current_date ''6 month''::inteval) returning id_item,nome,used loop insert into itens_deleted (id_item,nome,used) values (VarRec.id_item,VarRec.nome,VarRec.used); return next VarRec; end loop; select * from reg_itens_deletions() as i left join outra_tabela o on (i.id_item = o.id_item) group by... order by...

Erros e Exceções RAISE EXCEPTION 'ID % Inexistente.', user_id USING HINT = 'Por favor cheque se forneceu a ID correta.'; RAISE EXCEPTION 'O CPF % já está cadastrado.', cpf USING ERRCODE = 'cpf_violation'; CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS $$ BEGIN BEGIN INSERT INTO db(a,b) VALUES (key, data); RETURN; EXCEPTION WHEN unique_violation THEN UPDATE db SET b = data WHERE a = key; END; END; $$ LANGUAGE plpgsql;

Triggers / Rules TRIGGER BEFORE (insert, update, delete) Pode modificar os dados manipulados antes; return null, ignora a operação, sem erro; TRIGGER AFTER (insert, update, delete) Não modifica diretamente os dados manipulados; RULE CREATE [ OR REPLACE ] RULE name AS ON event TO table [ WHERE condition ] DO [ ALSO INSTEAD ] { NOTHING command ( command ; command... ) }

Exemplos gateway de tarifações

Canais Notícias Bolsa Gospel Tarifador (CDR) Infinity

Canais Notícias Bolsa Gospel Gateway Tarifador (CDR) Infinity

APPLICATIONS ENTITIES status=1 status=1 CUSTOMERS status=1 ret_code

APPLICATIONS ENTITIES status=1 status=1 PESO PESO CUSTOMERS status=1 ret_code

CONCLUSÃO Podemos sim usar o PostgreSQL com regras de negócios em: Em missão crítica, com alta confiabilidade; Manipulando grandes volumes de dados com processos de escrita e leituras simultâneos;

OBRIGADO! Lucio Chiessi e-mail: lucio@vorio.com.br

?