Li seu artigo Fabio e gostaria de colocar minha visão.
Já trabalhei dos dois lados : desenvolvedor e nos últimos 11 anos como DBA. Na época que eu era desenvolvedor ainda trabalhávamos com a arquitetura de 2 camadas, então tínhamos como boa prática dividir o processamento nas duas camadas (cliente e banco) colocando muita coisa dentro do banco de dados.

Interagindo com as equipes de desenvolvimento atuais, vejo a clara tendência de não colocar código dentro do banco de dados, e até entendo o motivo, porém o problema é que está havendo um exagero nesta forma de trabalho. Usar o banco somente como "repositório de dados" causa problemas de performance, vejo códigos de programas onde uma quantidade grande de linhas de uma tabela são transferidas para servidor de aplicação para somente aí serem processadas. Neste caso a perda de performance é muito grande, I/O de rede é muito mais lento do que processar dentro do banco.

Com o Fabio coloca no seu artigo precisamos usar do bom senso.

Por exemplo no caso da validação do CNPJ e CPF acho melhor fazer-la do lado do cliente. No caso de um processamento onde somente com o SQL não consigo executar tudo que preciso é melhor fazer uma procedure dentro do banco que tenha um cursor e trabalhe dentro do banco o processamento necessário retornando para o cliente somente o resultado final. Fazer o cursor no servidor de aplicação e ficar transferindo várias linhas para ele via rede não é uma boa solução em termos de performance.

Se vamos trabalhar a arquitetura de 3 camadas (cliente, servidor de aplicação e servidor de banco) precisamos ser suficientemente inteligentes para dividir bem o processamento por todas estas camadas de abstração, programar tudo dentro do servidor de aplicação não é sempre a melhor solução.

Abraços,

Leandro Henrique Pereira Neto
Administração de bancos de dados
SUPCD/CDSUT/CDSBB




Fábio Telles Rodriguez escreveu:
Mas a validação do CNPJ no lado servidor não acarretaria um processamento a
mais??
qual a vantagem de usar no lado do servidor ??

O tema é para lá de polêmico... mas há um tempo atrás tentei escrever
um pouco sobre o tema:
http://www.midstorm.org/~telles/2006/11/23/inteligncia-em-bancos-de-dados/

Veja o que você acha e conversamos depois, ok?

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


"Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa 
pública federal regida pelo disposto na Lei Federal nº 5.615, é enviada exclusivamente a 
seu destinatário e pode conter informações confidenciais, protegidas por sigilo 
profissional. Sua utilização desautorizada é ilegal e sujeita o infrator às penas da lei. 
Se você a recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, 
esclarecendo o equívoco."

"This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a 
government company established under Brazilian law (5.615/70) -- is directed exclusively 
to its addressee and may contain confidential data, protected under professional secrecy 
rules. Its unauthorized use is illegal and may subject the transgressor to the law's 
penalties. If you're not the addressee, please send it back, elucidating the 
failure."
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a