T-SQL, DAL ou ORM

Escolher a tecnologia de acesso a dados é algo difícil e, de certa forma, subjetivo. O que provê melhor engenharia de software? A programação funcional de uma stored-procedure ou a Orientação a Objeto de uma camada DAL (Data Access Layer) ou ORM (Object-Relational Mapping)?

Fiz um exercício anotando valores às qualidades que penso serem importantes para esta escolha utilizando as tecnologias oferecidas hoje pela Microsoft.

Escolhi como qualidades:

· Desempenho: onde o código estar perto ou não do dado e o número de camadas de processamento são aspecto relevantes;

· Manutenabilidade: em que legibilidade e a capacidade de abstração e reuso devem ser levadas em conta;

· Traceability: isto é, a capacidade de mapear diretamente o lógico/conceitual com a implementação, e vice-versa (também importante na manutenabilidade, mas imprescindível na produtividade e corretude);

· Multi-Bancos: ou possibilidade de operar com tecnologias de banco de dados relacionais distintas;

· Escalabilidade: onde poder colocar hardware novo pode garantir maior poder de processamento;

· Depuração: ou facilidade de encontrar problemas e suas causas (algo que pode se tornar mais complexo quando temos muitas camadas para examinar ou quando não podemos parar para depurar, pois isto causa, obrigatoriamente, uma parada na operação);

Dando valores de 1 a 7 (7 melhor, 1 pior) para cada tecnologia/cada aspecto cheguei nas seguintes figuras:

clip_image002

clip_image004

Em que isto ajuda? Bom, cada projeto é um novo projeto com necessidades próprias. Alguns exigem alto desempenho, em outros, a manutenção é o principal problema. Como não existe uma tecnologia ótima (7 em tudo), estes gráficos nos ajudam a comparar o perfil das exigências do projeto (um gráfico como este) com os das tecnologias oferecidas.

O interessante é que podemos subdividir o projeto em perfis diferentes. Por exemplo: telas de cadastro e algumas operações podem exigir menor desempenho e usar um tipo de tecnologia – outras operações podem exigir alto desempenho. É o caso de um uso misto de tecnologia?

A arquitetura é algo que liga necessidades e valores a um design ou, de outra forma, descobre design que satisfaz uma necessidade a partir de valores. Gráficos como estes sempre ajudam.