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:
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.
Comments
Anonymous
July 16, 2008
Otavio, Uma dúvida, porque o T-SQL na comparação é considerado baixo no "indice" de escalabilidade? abraçosAnonymous
July 16, 2008
Salve, luconde. O T-SQL tem hoje em dia a escabilidade limitada pelo número de cpu's qua a máquina do servidor suporta (até um limite máximo). Ao trazer boa parte do processamento (contas, concatenações, if's, etc) para o servidor de aplicação, podemos aumentar o número de máquinas/cpus trabalhando em paralelo quando comparado ao limite de uso de cpus que um servidor sql pode atingir (sem falar no custo desta super máquina). Abraços