Em 29/6/2011 21:40, Shander Lyrio escreveu:
> Em 29/06/2011 20:07, Fabiano Machado Dias escreveu:
>>>> O fato de você organizar as transações dentro de uma PLs é o mesmo
>>>> exemplo já citado. Ao invés de eu ter um código de baixa de estoque em
>> Inicia o bloco da transação antes da chamada da PL, chama a PL e encerra
>> a transação. Se você usa PL achei que fazia isso.
>       Eu uso, mas para mim está muito claro que você disse "organizar
> transações dentro de uma PL". "Dentro" para mim ainda é diferente de
> "fora" como você citou agora. Leia por favor seus dois parágrafos acima,
> achei que você tivesse lido.

Toda a PL e os blocos de uma PL rodam numa transação, o que você não 
pode é alterar a transação dentro da PL, te dei um exemplo de como 
chamar várias PLs dentro de uma transação externa.

"Organizar transações dentro de uma PL", ou seja, o que eu preciso que 
faça tudo ou não, ou baixa estoque ou não, ou quita uma duplicata ou 
não, ou grava ou não grava, ou dá ou desce!!! rsrsrsrs

Não vejo o que você fala como dentro ou fora, como já disse você se tem 
os seus procedimentos em PL nada de impede de um chamar o outro. E tb 
não vi que tipo de coisa você estava esperando, se conhece o 
funcionamento de transações e do banco não pensei que teria que te 
explicar isso.

Algumas referências:

http://pgdocptbr.sourceforge.net/pg80/plpgsql-structure.html (Em português)
http://www.postgresql.org/docs/9.0/static/plpgsql-structure.html (Mais 
atual, em inglês)
http://pgbr.postgresql.org.br/2009/palestras/aud1/plpgsql-roberto-mello.pdf



>> A diferença é que você tem o controle, quantas vezes vi gente quebrando
>> a cabeça porque só queria alterar um valor numa coluna e o banco travou!
>> Travou pq esqueceu ou nem sabia que tinha um gatilho lá fazendo um monte
>> de coisa!
>       Não tem diferença de um gatilho chamando um outro e fazendo um monte de
> coisa de uma procedure chamando outras e fazendo um monte de coisa.
> Gatilhos nada mais são que chamadas para procedures.

Sim, tecnicamente sim, a diferença é que uma PL você que chama e não é 
disparada quando troca o telefone de um cadastro de cliente por exemplo!

>> Você escrever todo um sistema, um framework, as tuas regras de negócio
>> em uma ferramenta e ver ele simplesmente morrer é um trauma pra qualquer
>> desenvolvedor.
>       O SGDB também pode morrer. Uma linguagem inteira ou um SGDB inteiro é
> menos propenso a morrer do que uma mera ferramenta como o Clarion.
> Apostar todas as suas fichas em uma só tecnologia sempre será um risco,
> quem faz isto em uma ferramenta somente assume um risco muito maior como
> foi seu caso.
>
>       Sinto muito pelo seu trauma, o que está fazendo hoje não resolve o
> problema da melhor forma, apenas resolve. Tudo poderia ser mais simples,
> mais testável e mais garantido que o que você tem hoje, se ser simples e
> testável não tem tanto valor assim para você, então está valendo.

Você conhece Clarion? Era uma linguagem inteira, na verdade vi o 
conceito de ferramenta RAD já incorporado no Clarion ainda em DOS. Era 
um espetáculo pra época, uma velocidade de desenvolvimento que nenhuma 
outra ferramenta tinha, pelo menos não as que conheci, e olha que já vi 
muita coisa.

Nas versões Windows continuou até a 7 e morreu. A partir daí usei de 
tudo, fiz cursos disso e daquilo, trabalhei em outros projetos, olhei 
ferramentas livres, pagas, etc...

Sabia que iria construir um novo software, para um outro ramo e em outra 
tecnologia e desta vez queria ficar o mais independente possível. (Ok, 
fiquei preso ao PG, mas isso eu já falei né)

Quanto a você achar que tudo poderia ser mais simples e testável e 
garantido, bom te garanto que já tenho isso atualmente, apesar de você 
discordar, é sua opinião e respeito.

>> Vou te dar só um exemplo. Você precisa alterar a forma do cálculo do
>> custo de todos os insumos de uma ficha técnica. Se a tua regra é na
>> aplicação, vai ter que recompilar, gerar uma nova versão, substituir teu
>> executável ou coisa similar. Faço isso hoje, mantenho a versão original,
>> modifico, atualizo, rodo e não envolvo nenhuma outra parte a aplicação.
>       Uma pequeno script em uma linguagem tipo o Python não era melhor? Não
> envolveria nem a aplicação, nem alteração no banco de dados. Digo isto
> porque uso algo deste tipo e uma aplicação minha. O script fica guardado
> no banco de dados e pode ser alterado em uma tela do sistema.
>
>       Vamos supor que você fez uma alteração na sua procedure de calculo de
> custo na empresa A. Ok, um dia você percebe que tem um bug na procedure
> de cálculo de custos geral, cria um script para corrigir ela em todos os
> seus clientes e bam. Perdeu-se a alteração específica que está naquele
> cliente. Ok ok, você pode argumentar que faz isto cliente por cliente
> para ser mais personalizado, infelizmente não poderia aceitar isso
> porque você também disse que faz as coisas para ser produtivo.

Bom, aqui eu noto uma contradição sua, afinal independente da forma, o 
seu script também vai estar desatualizado no seu exemplo. Você citou até 
que uma desvantagem minha seria a questão de testes e versões né?

Bom vou descrever resumidamente como funciona hoje.

Na atualização do sistema, (sim tem um atualizador e tb usa PLs rsrs) eu 
consulto as PLs customizadas e verifico se alguma delas substitui uma do 
núcleo padrão do sistema, se sim, o usuário tem 3 alternativas, desativa 
a PL customizada e usa a padrão, continua mantendo a customizada (daí 
por conta e risco, afinal não sou o admin da empresa) ou aborta o processo!

Tem várias maneiras de fazer isso de um modo mais esperto, produtivo e 
elegante do que um script em Python ou algo semelhante. Mas isso é outro 
assunto, daria um novo tópico tb!

>> Os ganhos vão além do código entende? Só um exemplo ok? Existem outros
>> casos, mas já tá no fim do dia e estou meio com preguiça pra escrever! rsrs
>       Eu ainda não os vi. Sinto muito. Todos os ganhos que me citou até agora
> sempre trazem consigo uma grande carga de outros problemas. Você não
> resolve o problema deste jeito, apenas transfere ele para outro lugar.

Sempre terá, não existe uma forma perfeita, ou você realmente acredita 
que 3 camadas é a forma perfeita de se fazer um sistema?

Não transferi problema pra nenhum outro lugar, apenas preciso tomar 
cuidado com a documentação e ter um padrão bem definido.

Nunca quis te convencer de nada, apenas estamos argumentando, na verdade 
seus comentários até agora também não me esclareceram nenhum grande 
problema que você diz que eu tenho, ou falou algo que eu ainda não saiba!

>> Servidores superdomensionados? No que você roda as suas aplicações?
>> Esses servidores são os de mais baixo custo que existem, estão na faixa
>> de 4 a 7 mil.
>       Tenho servidor com mais de 5 anos de idade trabalhando muito bem com
> carga bem maior. Mas isto é bem subjetivo e vou parar esta discussão já
> que foge do escopo da thread.

Bom, alguém poderia ter dito a você 5 anos atrás que o seu servidor 
estava superdimensionado!!!!!!!!!

Apesar do corte que você fez nas minhas perguntas ainda sigo curioso 
sobre o hardware que você usa!

>
>> Durmo tranqüilo porque as várias decisões do projeto deram certo.
>> Construir do zero e construir errado não adianta nada!
>       Dar certo não significa que é a melhor coisa a fazer. De qualquer forma
> a discussão já deu o que tinha que dar e daqui a pouco vamos entrar no
> Paradoxo de Tostines.

Blz!

>>>> Talvez, mas fique a vontade para perguntar, se estiver no PGBR esse ano
>>>> fique a vontade também se quiser ver isso tudo na prática.
>>>     Não poderei me dar este luxo, infelizmente.
>> Uma pena, não sei de onde você é, mas se estiver em Porto Alegre pode
>> entrar em contato comigo caso seja de seu interesse!
>       Não poderei me dar ao luxo de ir na PGBR. Mas já tirei todas as
> conclusões que precisava à respeito de seu modelo. Pelo menos o
> suficiente para continuar não aconselhando.
>
>       Qualquer coisa que eu pontue irá mudar na próxima thread. Primeiro foi
> a modificação de um ERP que era de um jeito para outro mas o que vimos
> na verdade foi a construção de um outro ERP do zero, sem a maioria dos
> erros de modelagem do primeiro. Depois as transações que eram dentro das
> procedures e rapidamente mudaram para fora como se eu não estivesse lido
> claramente o que foi escrito. Está ficando sem graça esta caça ao rato.
>
>       Fico por aqui, forte abraço, não haverão mais respostas minhas nesta
> thread.

Acho que você entendeu errado, usei o outro sistema como exemplo, mas 
deixa pra lá! Quanto as PLs, já expliquei acima, não gosto de ser 
repetitivo.

Gostei da parte da caça ao rato rsrsrs, afinal quem é o gato (eu ou 
você?) e quem é o rato (você ou eu?) kkkk

Fiquei meio confuso, achei que era só uma discussão sobre metodologias 
diferentes!

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