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
