Páginas

sábado, 11 de febrero de 2012

Featuring Norm

Como os dije en mi anterior entrada, debido al estres y desesperación que me estaba ocasionando el que Gaia cascara por cualquier tonteria decidi darme un respiro y mejorar en mi sistema de archivos, y una de esas mejoras fue justamente quitar todas las referencias a SQLite de la capa de abstracción a la base de datos y limpiarla un poquito. ¿Que pasa? Que como tiene la caracteristica de que es bastante generica al tener todas las consultas SQL en archivos externos, entonces ya no hay ninguna referencia al sistema de archivos y se podria aislar como un paquete independiente para poder usarlo en otros proyectos. Pues bien: un poco de magia con la ayuda de GitHub, un poquito de limpieza de codigo para que quede mas presentables y unas cuantas optimizaciones (las cuales incluso han hecho que PirannaFS sea mas limpio y rapido :-) ) y asi es como nacio Norm.

Tradicionalmente, los ORM se han usado para definir a alto nivel los datos, de forma que fuera facil de usar para el programador, pero de esta forma se pierde el control de como se estan guardando (lo cual no es malo, es la mayoria de los casos no es del todo importante), y ademas al hacerlo de una forma generica ralentizando el acceso y termina siendo un cuello de botella y creando problemas en aplicaciones que necesitan un gran rendimiento.

Sin embargo, Norm funciona al reves: en lugar de centrarse en la aplicacion y generar internamente el codigo SQL necesario para acceder a los datos, se centra justamente en estos y en como se accede a ellos en la base de datos y genera el codigo necesario para poder usarlos desde la aplicacion. De esta forma, se puede diseñar a mano codigo SQL optimizado para la aplicacion en concreto teniendo un control total sobre los datos sin tener que escribir todo el glue code necesario para poder usarlo ya que de esto ya se encarga Norm, y ademas genera una API especifica para la aplicacion muy sencilla de usar. Si a esto le añadimos que ademas el codigo SQL no esta embebido dentro del codigo del programa principal como se ha hecho hasta ahora cuando se necesitaba este tipo de optimizaciones sino que se guarda en archivos independientes faciles de mantener y de actualizar sin tocar el codigo del programa principal, no me extraña que al final de la presentacion que hice ayer en las oficinas de Tuenti para Python-Madrid la gente mostrara tanto interes e incluso me diesen ideas para mejorarlo o quisieran colaborar en su desarrollo... :-)


¿Sera posible que por primera vez haya hecho algo que realmente sea util para la gente? ¿Al final sera capaz PirannaFS de sacarme de pobre? :-P