ORM (Object Relational Mapping): automatiza el registro de datos

ORM (logo de base de datos y de código fuente)

¿Alguna vez has pensado o necesitado pasar los datos de los objetos de tu código fuente en una tabla de contenido o base de datos? Sería muy práctico tener una herramienta para poder hacer eso de forma automática y no hacerlo manualmente ¿verdad? Pero para que eso sea posible, esos valores deberían estar en el formato adecuado. Pues si necesitas hacer esto, debes conocer ORM (Object Relational Mapping).

Con ORM los datos de tus objetos se pasarán a un formato correcto para poder guardar toda esa información en una bbdd mapeándolos. Eso crea una base de datos virtual donde los valores que se encuentran en la aplicación que has creado en tu código, y de este modo quedan vinculados a esta database para darles persistencia y registrarlos de este modo tan sencillo. Eso dota a la información registrada de persistencia para poderla almacenar, analizar, registrar o usar posteriormente.

Por ejemplo, imagina que tienes un programa en Python encargado de leer valores de un sensor DHT11 que registra temperatura y humedad. Pero no quieres registrar estos valores de un entorno. De una forma sencilla podrías crear un código fuente para programar lo que necesitas y que vaya leyendo los valores que toma el sensor y los mostrará en pantalla. Pero ¿qué ocurre si quieres almacenar los valores para analizar cuándo se han producido picos de estos valores o para cualquier otra utilidad?

En ese caso, deberías tener la capacidad de que esos datos se vayan guardando a la vez en una base de datos y aquí es donde ORM se vuelve útil. Además de tu proyecto DIY podrás almacenar lo que necesites y tratar los valores de forma manual o mediante otro software gracias a que los has capturado en una base de datos…

¿Qué es ORM?

El mapeo objeto-relacional o ORM por sus siglas en inglés, es una técnica de programación que sirve para transformar datos usados en el programa o lenguaje de programación orientado a objetos y la base de datos (tipo SQL) relacional como motor de persistencia. Eso hará que los valores del programa cree una base de datos orientada a objetos virtual para contener los datos que necesitas.

Si alguna vez has programado una aplicación conectada a una base de datos te habrás dado cuenta que es bastante complicado transformar la información para adaptarla a la base de datos o viceversa. Es decir, el mapeo es una algo tedioso que puedes automatizar usando ORM, además de hacerlo independiente de la base de datos que quieras usar e incluso puedes cambiar de motor de base de datos sin problema.

Un ejemplo práctico es un coche de F1, donde tiene una serie de sensores que van midiendo valores de presión, temperatura, consumo, RPM, velocidad, aceleración, cambio de marchas, movimientos de la dirección, aceite, etc. Todos esos valores los ven en tiempo real los ingenieros en sus ordenadores gracias a la telemetría. Pero cuando termina la sesión, los ingenieros necesitan estudiar y analizar esos datos para comprender cómo mejorar el setup, evolucionar el coche o qué ha producido el fallo. Para que eso sea posible se necesitan exportar a una base de datos.

Ventajas y desventajas de ORM

Como ya he comentado, con ORM te permite abstraerte de la base de datos y simplificar mucho el código fuente necesario. El mapeado será automático y eso significa quitarte un montón de problemas de encima cuando programes. Además de la facilidad y velocidad de uso, aporta seguridad de la capa de acceso de datos contra ataques.

Pero no todo son cosas buenas, ORM también tiene sus desventajas. En entornos con gran carga puede reducir el rendimiento, ya que estás agregando una capa extra al sistema. También implica aprender ORM para poderlo utilizar, lo que puede llevar su tiempo para comprenderlo adecuadamente y sacar partido de él.

ORM para lenguajes de programación

Según el lenguaje de programación que utilices puedes usar un ORM. No se puede emplear cualquier ORM, debes usar el adecuado. Por ejemplo:

  • Java: Hibernate, MyBatis, iBatis, Ebean, etc.
  • .NET: Entity Framework, nHibernate, MyBatis.Net, etc.
  • PHP: Doctrine, Propel, Rocks, Torpor, etc.
  • Python: Peewee, SQLAlchemy, PonyORM, Elixir, etc.

Ejemplo con Python y ORM

Peewee es un ORM simple y reducido para usar con Python. Puedes obtener más información desde su página web oficial. Además, debes saber que Peewee soporta distintos SGBD, es decir, varios sistemas gestores de bases de datos, como SQLite, MySQL y Postgresql. Solo hay que cambiar la declaración inicial de bbdd y listo.

Por ejemplo, en su guía rápida o quickstart del sitio puedes ver ejemplos sencillos de código con Peewee como este:

from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()

    class Meta:
        database = db # This model uses the "people.db" database.

Por si eso te parece poco, tienes a tu disposición la herramienta pwiz, un programa que obtiene modelos Peewee a partir de bases de datos. Por ejemplo:

<br data-mce-bogus="1">

python -m pwiz -e postgresql basedatos &gt; modelo.py<br data-mce-bogus="1">

 

 

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.