6 de março de 2007

Stored Procedures: usá-las ou não usá-las, eis a questão!

O pessoal que ja trabalha com java sabe que alem de ser multiplataforma, java pode ser multi-banco (sei lá se existe esta expressão). A tecnologia JDBC permite que utilizemos a mesma interface para acessar da mesma maneira vários bancos diferentes (Oracle, DB2, SQLServer, MySQL, etc...).

Isto é muito bom para facilitar o desenvolvimento e melhor ainda para que nossa aplicação fique independente de banco de dados. Bastando apenas mudar o driver JDBC de um banco para outro, sem que seja necessário nenhuma alteração na aplicação (no máximo em arquivos de configuração se a aplicação for bem feita ;-) ).

Para que isto funcione 100% devemos utilizar SQL Ansy e não podemos utilizar nenhuma feature que não seja comum a todos os bancos de dados.

Este seria um mundo perfeito de desenvolvimento para banco de dados, mas todos sabemos que "mundos perfeitos" não existem. Muitos bancos de dados possuem features que podem aumentar em muito a performance da aplicação. E dependendo da aplicação ela pode não existir sem estas features.

O que fazer neste caso? Usar ou não usar estas features do banco?

É neste ponto que entra uma expressão muito importante na informática, o bom-senso.

Se a aplicação tiver realmente a necessidade de trabalhar com vários bancos diferentes não tem muita opção. O máximo que pode ser feito é se a aplicação for utilizar procedures, criar scripts diferentes para cada banco (o que é muito trabalhoso e sujeito a falhas).

Mas se sua aplicação vai rodar em um único banco, acho que é uma boa idéia considerar utilizar estas features, pois na maioria das vezes o ganho de prerformance pode ser considerável (como exemplo eu trabalhei num projeto onde algumas querys demoravam mais de 60 minutos para serem executadas, e criando procedures com tabelas temporarias, etc... o tempo caio para menos de 30 segundos).

Mas lembre-se mesmo que não haja previsão de troca de banco de dados, o futuro é incerto, e passar toda a regra de negócio para procedures pode não ser uma boa estratégia.

Se foque na relação custo x benefício que as features do banco podem trazer para sua aplicação. No final das contas o que importa mesmo é o bom-senso.

Nenhum comentário: