Em 29/6/2011 11:56, Shander Lyrio escreveu:
> Em 29/06/2011 00:30, Fabiano Machado Dias escreveu:
>> Fizemos uso de PL/pgSQL direto, e hoje após quase 5 anos do cliente
>> piloto posso te dizer ficou acima do esperado.
>       Da mesma forma que o colega que postou a pergunta sugeriu? Tudo via
> plpgsql?? Até mesmo as funções de insert, delete e update?? Eu também
> faço uso de plpgsql direto, mas não tudo!
>
>       O que você esperava com isto e oque ficou melhor?
>
> --

Sim, temos uma PL que controla os comandos DML, ou seja, a interface 
passa os campos e ela se encarrega do resto.

Nós tínhamos um projeto audacioso pela frente, construir um software de 
gestão em menos de 2 anos, a contabilidade seria online (não existe 
exportação e geração, faz na hora!)  e já atendendo as obrigatoriedades 
do governo. (NFE, SPED, e-Lalur, Ato Cotepe etc), fora os módulos 
principais do sistema.

Queríamos automatizar as tarefas rotineiras do desenvolvimento mas sem 
perder a performance que tínhamos em outra linguagem, performance de 
telas, acesso rápido via cursores etc.

Tudo deveria ter controle relacional, colocamos todas as restrições no 
banco e começamos a desenvolver as PLs básicas.

Nós estávamos saindo de um projeto que usava PostgreSQL mas a camada de 
dados não era no banco, vi vários problemas de transação ocorrendo, sem 
contar os problemas com gatilhos e a lentidão, então resolvemos que os 
processos seriam implementados totalmente dentro das PLs.

O que queríamos era:

1 - Segurança nas transações,
2 - Centralizar o desenvolvimento
3 - Velocidade de desenvolvimento
4 - Acesso rápido aos dados pelo cliente

Conseguimos isso e muito mais, a modelagem mudou radicalmente, usamos a 
tão falada chave artificial para as PKs e fizemos as restrições devidas 
nas chaves naturais (UKs), assim conseguimos resolver os problemas do 
modelo físico e do lógico, claro que eles se misturam (não chegam ao 
usuário mas ao programador sim), mas pra nós não é problema, aliás nunca 
foi. (Por favor, não quero criar polêmica de novo rsrsrs, é só a minha 
resposta a pergunta do colega!)

Depois de trabalhar com tabelas em que a PK era composta por 16 campos e 
tinha que juntar mais mais outras 20 tabelas, abolimos as PKs  
compostas, isso me deu um ganho de performance bom e uma escrita rápida 
também, a criação de índices também ficou fácil.

Também criamos uma estrutura de controle para separar as Filiais e 
usamos bastante array em conjunto a interface.

Hoje tenho PLs que se modificam conforme a parametrização do sistema e 
que interagem com PLs que podem ser customizadas para atender uma 
determinada situação.

PLs que controlam a auditoria de outras PLs etc.

Fizemos um uso muito restrito de gatilhos, dá pra contar nos dedos 
quantos tem no sistema, afinal tenho o controle do que acontece nas PLs!

Bom, poderia te dar vários exemplos, dá uma olhada na palestra do pgcon 
de 2009, lá tem casos mais específicos do que fizemos.

Posso te dizer que hoje coloco a cabeça no travesseiro e durmo 
tranqüilo! rsrsrs

Nunca mais me preocupei com corrupções, dados inconsistentes, banco 
travando etc!!!

Estarei no PGBR esse ano, se alguém quiser ver isso funcionando de perto 
posso mostrar sem problemas.

Um grande abraço!

Fabiano Machado Dias


> Shander Lyrio
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a