Ouracademy

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

Greg Young hablando sobre Accidental Complexity, como al mover un RDBMS (usando una estructura recursiva común - un arbol) por Neo4j mejoro el performance (su laptop local era más rápida que el servidor de producción!)

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.

Si te fue útil este artículo, por favor compártelo. Apreciamos los comentarios y el aliento.
Compartelo por:

Quiza te pueda interesar...

Un ejemplo viendo el codigo de redux

¿Qué es Redux? Un contenedor de estado predecible para aplicaciones de JavaScript. ¿Pero.. Cómo funciona? Siempre quise entender como…

Arquitectura hexagonal

O el patrón puertos y adaptadores, una traducción de Hexagonal Architecture de Alistair Cockburn

Que es Service Oriented Architecture, SOA?

La ambiguedad de SOA que hoy conduce a los microservicios, de Martin Fowler