2008/3/7 Daniel R. Troitiño [email protected]:
Conozco perfectamente la postura de David sobre “su” framework y,
aunque no me parece la más adecuada en un proyecto de la envergadura
de Rails, la respeto
Precisamente es por su postura por lo que no importa un carajo la
envergadura del proyecto, y por lo que tiene razón automáticamente en
todo lo relativo en su framework. De la misma manera que yo tengo
automáticamente razón en todas las elecciones de mi ropa interior,
porque es la mÃa… te guste o no XD.
Pero que David mantega esa postura no le asigna automáticamente la
razón en todo lo relativo en su framework; una de las cosas en las que
no tiene razón es que algunas de las validaciones de los registros es
necesario e imprescindible realizarlas en la base de datos (y
alguién en el hilo ya ha nombrado a uno de los padres de las bases de
datos relacionales, asignatura que David no debió cursar).
Me encanta cuando os poneis radicales con eso de la verdad unica… es
tan… universal XD. Vuelvo a lo mismo… su solución a ti te puede
parecer no segura, vulnerable, puede ser no thread-safe y seguro que
mata un gatito cada vez que arrancan los mongrels en 37signals… pero
les vale. Ni mas ni menos. En ningun momento he dicho que el test que
se indicaba al principio del thread no generase efectivamente un
problema de duplicidad, sino que, de nuevo, estoy con David Heinemeier
en la opinión de que todo lo que decide que datos y por que cierto
datos se graban en la BD esta mejor en el código que en la BD
(siempre que, como decÃa, hablemos de aplicaciones modernas, o de
integraciones a nivel de aplicación y no de BD). La implementación es
algo puntual que se debe testar y que cambiara en el tiempo. La
opinión de David sobre las validaciones en el modelo permanecerá
aunque AR sea thread-safe.
El único punto donde se puede hacer esa comprobación es la BBDD y eso
te lo puede decir cualquiera que atendiese a sus clases de BBDD: el
sistema gestor de BBDD es el único elemento que puede garantizar que
se cumplen las integridad de los datos que almacena.
Será que yo no atendÃa… ummm… uhhhh… ah no!.. ¡no estaba!..
estaba instalando un ERP en Madrid, en aquella época XD. Imagino que
eso explica mi amateurismo y el de David… que entiendo infieres que
tampoco debió atender.
Por cierto, Aitor se preguntaba por ahà arriba como de sencillo es
comprobar la lógica de triggers/constraints/functions de la BBDD. No
voy a hablar de triggers y functions en la BBDD porque me parece que
son añadidos “frankestein” al modelo relacional, pero el modelo
relacional (relaciones y restricciones de integridad) es comprobable
matemáticamente…
Me ha dicho SuperCoco que te referÃas a lo que en la Uni llaman
“demostración formal”, que aparte de para impresionar a las tias
cuando lo dices y producir un incomodo silencio en la cafeteria en
visperas de examenes, sirve para comprobar matematicamente esta cosa
de los programas informaticos… Me gustarÃa que me pasases el enlace
a la demostración formal de la im-ple-men-ta-ción de Mysql o de
PostgreSql o de Oracle. ¿Porque te referias a la implementacion del
modelo no?.. yo desde luego me referia a lo que puedo tocar… que es
la implementacion… no a la nubes de algodon del sagrado cielo
relacional.
Como se que estas cosas no acaban nunca… mis disculpas, mis
constricciones, mis respetos a sus mujeres, etc, etc…
–
Kind Regards,
Aitor Garcia
Cofounder - Linking Paths
http://www.linkingpaths.com