sábado, 2 de diciembre de 2006

Es tan bueno escribir codigo SQL fuera del motor?

Bueno, esto es un clasico, muchos desarrolladores/empresas tienen por costumbre escribir todo lo relacionado a la base de datos desde fuera de ella (esto quiere decir no usar Procedimientos Almacenados y luego consumirlos desde el cliente). Durante tiempo existieron varias discusiones sobre este tema, los pros, los contras, etc, etc, es mas es una batalla de hace tiempo ya.
Ahora bien, el otro dia me ha tocado en un cliente hacer una migracion de su servidor 2000 a 2005, hay algunas sentecias de TSQL que ya no son mas compatibles con lo cual Microsoft permite con herramientas poder detectarlas,una de ellas es el Update Advisor, una herramienta de 2005 que se corre sobre una base de datos y analiza los cambios que se deberian hacer (antes - durante o posterior a la migracion), bien esto es excelente si el codigo esta en la base de datos, si el mismo esta fuera no hay forma con esta herramienta de poderlo detectar, entonces que se hace, se levanta una traza del profiler para analizar de todas las llegadas al motor cuales son incompatibles con 2005. Como se podran imaginar este metodo no es 100% seguro ya que TODAS las aplicaciones deberian ejecutar TODOS los modulos con TODAS sus combinaciones para poder asegurar esto, bueno ya tienen una idea de lo costoso no? de hecho a mi cliente el trabajo le salio 4 veces mas de lo normal y no se pudo asegurar el 100% y es mas, en una ventana de la aplicacion en una codincion estaba usando *= lo cual ya no es mas soportado y en el profiler no se vio porque no se ejecuto esa parte de la aplicacion durante los 20 dias que hemos dejado corriendo la traza, en resumen: el proyecto se alargo mucho mas de lo normal (ya que debimos poner la traza durante un tiempo prolongado para poder estar bien seguros), este tiempo tambien se represento en dinero y en dolores de cabeza para el cliente final, entonces, como vengo diciendo desde hace tiempo: es buena idea escribir codigo fuera de la bdd que sea de SQL? ya vimos en varias oportunidades que por seguridad no es buena idea, hay veces que por performance tampoco, pero ahora tambien se nos suma ESCALABILIDAD.....

No hay comentarios: