The New Cult of Dead Cow

July 13, 2006






Bases de Datos …

Todos los que estamos involucrados en el mundo del desarrollo del software hemos alguna vez tenido que utilizar el popular SQL, ya sea con bases de datos propietarias ( Oracle, MSSQL ), cacharros que se dicen base de datos personales ( MSAccess ), o bases de datos libres ( Mysql, Postgresql, etc).

El SQL (Structured Query Language) es un lenguaje que permite acceder a los contenidos de los DBMs (Data Base Managers).

En la epoca del popular C y del pascal, esto no era mayor problema. Sin embargo, hoy la mayoria de aplicaciones se construyen utilizando el paradigma orientado a objetos, las cuales al querer interrelacionarse con sistemas de base de datos relacionales degeneran en sistemas ineficientes cuando menos.

Este cambio de paradigma al desarrollar la aplicacion, trae varios incovenientes:

  • Mayores costos de capacitación, ya que los desarrolladores deben manejar correctamente ambos paradigmas y ser capaces de cambiar rapidamente de un modo de pensar al otro.
  • Mayores costos de desarrollo, ya que el simple hecho de mapeo entre obtejos y tablas relacionales llega a representar una gran parte del costo del proyecto. De esto se puede dar fe en casi cada proyecto web desarrollado con PHP5.
  • Problemas de Rendimiento, desde ya el simple hecho de convertir objetos a relacional conlleva ejecución de lineas de codigo extra. Este simple hecho ya implica una sobrecarga en el sistema.
  • Mayor costo de Mantenimiento, esto se debe a que un simple cambio en la logica del programa conlleva cambios tambien en el modelo de base de datos, y viceversa.

Desde hace ya algun tiempo, vengo buscando nuevas posibilidades en los sistemas de base de datos.
Una opción que me jora el entendimiento de los desarrolladores en su modelo de base de datos, es un software que realize automaticamente el mapping entre el modelo de objetos y el modelo relacional. Esto sin embargo conlleva la ejecución de codigo extra lo cual no beneficia en nada al rendimiento. Es más, no siempre genera un codigo mas limpio.
En esta opcion de mapeadores de objeto/relacional, existen 2 categorias:
  • De objetos a Tablas, estos permiten escribir un codigo muy sencillo y elegante, sin embargo no se le considera un codigo muy eficiente.
  • De Tablas a Objetos, estos utilizan un codigo que pareciera poco elegante, y a la vez arbitrario, sin  embargo, son los preferidos por los administradores de base de datos por su eficiencia.

Estas son las opciones de cara a seguir utilizando una base de datos relacional. La otra opción es cambiar a una base de datos Orientada a Objetos. En la actualidad existen pocos motores de Base de Datos Orientados a Objetos. En particular yo conozco solo dos:
  • db4o : Base de datos totalmente orientada a objetos. Funciona bajo java y mono.
  • ZODB : Base de datos desarrollada para la plataforma Zope de python. Totalmente orientada a objetos.
Una de las ventajas que más me gusta de usar bases de datos orientadas a objetos, es que ya no tengo q aprender otro lenguaje más (SQL). El modelo de la base de datos, se maneja de la misma manera en que se maneja la logica del resto de la aplicación.

Ejemplo de db4o

1 Comment »

The URI to TrackBack this entry is: http://necudeco.blogsome.com/2006/07/13/bases-de-datos/trackback/

  1. Por si te interesa escribí hace un tiempo una entrada similar a la tuya en Objetos y bases de datos relacionales

    Un saludo

    Comment by mig21 — July 19, 2006 @ 12:36 pm

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>























Get free blog up and running in minutes with Blogsome
Theme designed by B A Khan