jueves, 17 de octubre de 2013

El paradigma de los ORM


ORM (Object Relational Mapping)



Primero que nada debemos sabes que son ORM, los orm son una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y la utilización de una base de datos relacional, utilizando un motor de persistencia


Con el paradigma de desarrollo de software Orientado a Objetos (OO) ha surgido un problema con respecto al almacenamiento y gestión de datos. El paradigma relacional se basa en principios matemáticos con tablas y relaciones entre estas y el paradigma de OO se basa en principios de desarrollo de software como clases, objetos y herencia, estos dos paradigmas no conviven fácilmente. Esto se ve claramente en la manera de acceder a los datos. Mientras en el mundo OO los objetos se relacionan a través de propiedades, en el mundo relacional las tablas se unen a través de llaves primarias. Este problema es conocido como "Impedance Mismatch"(una traducción cercana seria "desajuste de relaciones") y es conocido hace ya un buen tiempo. Las herramientas ORM tratan de solucionar este problema.


¿Que se gana?

Utilizando herramientas ORM se accederá el proceso de desarrollo de software muchísimo, de un factor 1 a 10 en algunos. También se obtiene una independencia del motor de base de datos ya que el desarrollador no escribe SQL directamente sino un pseudo leguaje que es traducido al SQL especifico de la base de datos configurada.
El código queda mucho mas limpio y menos código es necesario lo cual minimiza la probabilidad de errores.



¿Que se pierde?

La traducción adicional es un paso extra que toma más tiempo y por lo cual en algunos casos, especialmente reportes, el redimiendo de las consultas puede decaer. Muchas bases de datos optimizan las consultas y pueden mejorar los tiempos de respuesta al utilizar procedimientos almacenados, al generar SQL en caliente se pierde esta oportunidad de optimización. Algunas herramientas ORM no optimizan la consulta para la base de datos utilizada sino generan un SQL genérico lo que resulta en muy mal utilización de funciones específicas de la base de datos.
Se agrega un momento de configuración en el desarrollo que cuando el modelo es grande no es menor.

3 comentarios: