Toda lógica no banco

galera,
to ajudando numa migração de projeto de java pra .Net.
Os motivos da migração são estratégias da empresa que é parceira da Microsoft agora.

Os caras tão fazendo o projeto de uma forma que eu nunca tinha visto.
Normalmente não usamos mais querys no código, tudo bem, mas os caras tão fazendo toda lógica no banco de dados (sql server). Ou seja, normalmente onde nós usariamos, por exemplo, EJB’s, servlets e tudo mais…O código em si praticamente não tem um if. Só os front-ends em aspx, e o codebehind no máximo passa parametros pras procedures, que com o apoio de outras tabelas desenhadas de forma hierárquica servem como decisões e direcionamentos.

Achei muito interessante, pois sabemos que jogar o processamento pro banco normalmente é melhor do que fazer o container trabalhar por exemplo.

Uma conclusão que cheguei até agora é de que a manutenção disso será muito difícil, mas acho que a performance pode ser muito boa.

Queria saber a opnião de vcs mais experientes, saber se alguém ja trabalhou assim, como foram os resultados independente da linguagem utilizada.
(obs: Deixo claro que a idéia não é só rodar as procedures no banco, mas sim TODA a lógica e procesamentos)

anderson, colocar toda a lógica no banco nunca foi uma boa idéia.

Mas dê uma olhada nesses tópicos que já discutimos antes.

http://www.guj.com.br/posts/list/0/19389.java
http://www.guj.com.br/posts/list/8443.java

Aplicação -> controla a lógica do negócio
Banco de Dados -> armazena os dados.

Pra mim, no máximo uns triggersinhos e olhe lá.

Eu já trabalhei em alguns projetos com dotnet e vi essa situação na maioria das vezes. Eu, particularmente, não gosto.

Como o pessoal já discutiu aqui antes, em outros tópicos, é recomendável que algumas partes da aplicação fiquem eventualmente em SPs, para aproveitar, como dito, o aumento de performance. Mas isso demanda uma boa modelagem, um projeto bem planejado como um todo. O problema é que, em todos os casos que eu vi, os programadores que trabalham com SP só usam SP porque é a única forma que eles conhecem para programar. É vício mesmo. Qualquer sugestão ligeiramente diferente de enfiar tudo na SP já era recebida com cara feia. Quer dizer, criar um projeto bem planejado não é muito a praia desse pessoal, isso quando existe um projeto de fato.

Em um desses casos eu tive que, por exemplo, construir uma SP gigantesca (provavelmente umas duas mil linhas ou mais), porque o coordenador do projeto queria porque queria que fosse assim. Esse era o único argumento: tem que ser em SP. OK então. Foi tão chato adaptar a lógica do negócio nessa SP que ela acabou levando 3 semanas pra terminar. E menos de 1 mês depois eu já tinha procurado e mudado pra outra empresa.

[quote=andersonlfl]
Achei muito interessante, pois sabemos que jogar o processamento pro banco normalmente é melhor do que fazer o container trabalhar por exemplo.[/quote]

Sabemos? Transformação e busca de dados pode ser, mas processamento pode ser muito mais que isso.

O que escala mais: Um servidor de aplicações ou um servidor de bd?

Hmmmm… boa pergunta. Mesmo.

Depende do banco. Fazer um RAC com Oracle pode ser mais facil que colocar algum AS em cluster.

]['s

Depende.

Que seu sistema faz?
Quais servidores estão sendo comparados?

microfilo wrote:

O que quer dizer “escala mais”? Capacidade de escala relativa a acessos ou a processamento de códigos ? Se puder me indicar algum artigo sobre “escala” ou me explicar agradeceria muito.


pcalcado wrote:

O sistema é para controle das viagens da empresa. Antigamente a pessoa preenchia um formulario de 8 paginas, agora cada pagina eh uma aba do formulario.
Quando a pessoa envia, o sistema passa todos os objetos e o banco eh quem começa a tratar a logica, decidir passos do fluxo, analisar as regras.

[quote]
Quais servidores estão sendo comparados?[/quote]

O servidor de aplicação antigo era o Tomcat. Eu tentei lutar para migrar para o JBOSS e usar EJB’s. Comcei a fazer um refactor total no sistema. Cheguei a colocar o JBOSS. Mas nesse meio tempo entrou a parceria, o sistema está sendo reescrito e agora o servidor de aplicação é o IIS. A base de dados é SQL Server.

Boa sorte. :lol:

]['s

O problema desse tipo de parceira que te força de alguma forma a um unico fornecedor pode ser uma maravilha e massagear o ego de muita gente. Mas eu acho um grande risco se vc colocar todas suas fichas nele. Não digo isso por ser Microsoft e sim por ficar na mão de um unico vendor.

Esse tipo de parceria pode abrir as portas de vários clientes para a empresa, porém pode fechar muitas (mais do que as que se abriram) outras.

O grande problema de se usar uma arquitetura client-server é ao que colocar parte da logica de seu sistema no BD vc quase sempre esta se amarrando a ele. A maioria usa linguagem proprietaria.

Se o sistema estiver bem estruturado talvez o port para um ambiente MS será mais simples, e vice-versa.

Se seu sistema realmente usar “tudo-de-bom” que tiver no ambiente MS (ou qq um que seja) e aparecer um grande negócio para sua empresa porém o cliente tem uma licença para N processadores do Oracle e não quer colocar o SQL Server? Provavelmente isso não vai nem dar “traço” no balanço da MS porém pode quebrar uma empresa pequena.