martes, 20 de septiembre de 2011

Sistema de Gestión de Base de Datos Orientado a Objetos

Las bases de datos de objetos están diseñadas para simplificar la programación orientada a objetos. Almacenan los objetos directamente en la base de datos, y emplean las mismas estructuras y relaciones que los lenguajes de programación orientados a objetos.
Un SGBDOO es un sistema de objetos y un sistema de bases de datos. Se puede entonces decir que un SGBDOO es un SGBD que almacena objetos, permitiendo concurrencia, recuperación.
Para los usuarios tradicionales de bases de datos, esto quiere decir que pueden tratar directamente con objetos, no teniendo que hacer la traducción a tablas o registros.
Para los programadores de aplicaciones, esto quiere decir que sus objetos se conservan, pueden ser gestionados aunque su tamaño sea muy grande, pueden ser compartidos entre múltiples usuarios, y se mantienen tanto su integridad como sus relaciones.  Las bases de datos tradicionales almacenan sólo datos, mientras que las bases de datos orientadas a objetos almacenan objetos, con una estructura arbitraria y un comportamiento. Una simple metáfora (Esther Dyson) ayuda a ilustrar la diferencia entre ambos modelos.




Consideremos el problema de almacenar un coche en un garaje al final del día. En un sistema de objetos el coche es un objeto, el garaje es un objeto, y hay una operación simple que es almacenar-coche-en-garaje. En un sistema relacional, todos los datos deben ser traducidos a tablas, de esta forma el coche debe ser desarmado, y todos los pistones almacenados en una tabla, todas las ruedas en otra, etc. 
Por la mañana, antes de irse a trabajar hay que componer de nuevo el coche para poder conducir (problema: al componer piezas puede salir una moto en vez de un coche).
Como podemos ver un coche se representaría dependiendo del tipo de sistema de gestión de bases de datos:




Una posible solución sería traducir cada objeto a tablas, pero esto es una tarea tediosa, y  en el caso de utilizar datos complejos puede llegar a ser excesivamente complicado. El problema de la traducción a tablas implica:
  • Œ El tiempo empleado en generar el código para la traducción de objetos a tablas y viceversa. 
  • Œ Errores: Debidos precisamente a esa traducción. 
  •   Inconsistencia: Debida a que el ensamblaje/ desensamblaje puede realizarse de forma diferente          en las distintas aplicaciones. 
  • Œ Tiempo de ejecución: Empleado en el ensamblaje/ desensamblaje. 

Muchos vendedores de bases de datos relacionales están incorporando capas de objetos sobre sus motores relacionales (basados en tablas), que son bastante útiles para la integración con aplicaciones y bases de datos de objetos, y que pueden ayudar en la generación de algunos códigos de ensamblaje/ desensamblaje, pero no mejora en absoluto el tiempo de ejecución del problema (el coche todavía necesita ser ensamblado y desensamblado).

No hay comentarios:

Publicar un comentario