Usar un ORM es como besar a tu hermana
Estoy casi seguro que he escuchado esta frase en algún lado pero, no tengo idea de donde vino, aún asi es una buena frase. Si estas en un proyecto nuevo (de campos verdes 🍃) y estás usando un ORM, ¿alguna vez pensaste porque? ¿es tu modelo de datos privado (por que en OO se supone que los atributos son privados)? ¿estas integrando aplicaciones a traves de bases de datos? ¿Por que no estas usando una base de datos documental (como MongoDb) u otra?
¿Alguien se hizo estas preguntas en tu proyecto? Los ORMs son como un puente entre los modelos relacionales y objetos, pero te haz hecho la pregunta ¿en realidad necesitas un modelo relacional?
Me molesta que los desarrolladores a menudo tomen decisiones de arquitectura sin haber hecho poco o ningún análisis. El decidir usar un RDBMS (base de datos relacional) cambia drasticamente las opciones de arquitetura que puedes tomar. Muy a menudo la decision es incluso hecha por personas que tienen background en otros campos (como marketing o "negocios") en vez de computación. No me malinterpretes quiza si necesites una base de datos relacional para el lado operativo (OLTP) de tu sistema...pero esa fue una decisión conciente en tu proyecto?
Y luego nos preguntamos porque tenemos tantos problemas con nuestros sistemas
El punto de este post es... Hay muchos factores al seleccionar donde almacenar tus datos, algunos funcionales otros no-funcionales. Necesitamos hacer un analisis de estos requerimientos y dejar de lado ese punto de vista de escoger por defecto un RDBMS. Algunos ejemplos de factores técnicos podrían ser que tan bien encaja con nuestras especificaciones funcionales (una estructura recursiva...como la de arriba podría ser no tan buena para un RDBMS), algunos ejemplos de factores organizacionales podrían ser que recursos tenemos disponibles, ya sea si estamos dentro de los planes de la organización o cuestiones de costos (si es una compañia pequeña no vamos a escoger algo muy caro).
Un RDBMS es una mala elección para muchas situaciones y una buena para muchos escenarios...cual es el tuyo? Realizar un buen analisis de ello no le hara daño a nadie, o si?
Una traducción del post Using an ORM is like kissing your sister de Greg Young
Nota el autor original recibio muchas criticas...por ello les dejo la 2da parte, donde profundiza el porqué de su post.