Skip to content

2 Base de datos orientadas a objetos

Introducción

Una base de datos orientada a objetos es un sistema de gestión de base de datos mediante el cual representamos la información en forma de objetos que son utilizados en programación orientada a objetos.

La investigación y el desarrollo de la base de datos orientada a objetos fue impulsada en gran medida por su alto rendimiento en almacenamiento de datos y los requerimientos de acceso que tenían entornos de soporte de diseño tales como el CAD (Computer Aided Design) y el CASE (Computer Aided Software Engineering).

A medida que ha ido aumentando el uso de la tecnología web, muchas organizaciones se muestran más interesadas en el concepto de base de datos orientada a objetos, dado que es útil para mostrar los datos complejos de estas tecnologías.

Algunas bases de datos orientadas a objetos han sido diseñadas para trabajar bien con lenguajes de programación orientados a objetos tales como Delphi, Ruby, Python, Perl, Java, Visual Basic.NET, etc.

A partir de 2004, la base de datos orientada a objetos ha vuelto a experimentar un crecimiento debido al surgimiento de bases de datos orientadas a objetos de código abierto. Son fáciles de usar y asequibles. Están totalmente escritas en lenguaje de programación orientado a objetos, como Smalltalk, Java o C.

Características

La base de datos orientada a objetos ha encontrado su nicho de aplicación en áreas tales como la ingeniería, las bases de datos espaciales, las telecomunicaciones y en áreas científicas como la física de alta energía y la biología molecular.

Otro conjunto de bases de datos orientadas a objetos se centra en el uso integrado en dispositivos, paquetes de software y sistemas en tiempo real.

Podemos encontrar las siguientes características:

  • La mayoría de bases de datos orientadas a objetos incluyen algún tipo de lenguaje para realizar consultas, lo cual permite que los objetos sean encontrados utilizando un enfoque de programación declarativa.
  • En una base de datos orientada a objetos, el acceso a los datos es más rápido debido a que los Joins casi nunca son necesarios, a diferencia de lo que ocurre con las bases de datos relacionales. Esto es así porque un objeto puede ser recuperado directamente sin una búsqueda, simplemente siguiendo los punteros.
  • Un área en la que los diferentes productos pueden variar es la forma en la que el esquema de la base de datos es definido. Sin embargo, una característica general es que el lenguaje de programación y el esquema de la base de datos utilizan la misma definición de tipos.
  • Las aplicaciones multimedia se agilizan debido a que los métodos de clase asociados con los datos son responsables de una correcta interpretación.
  • Muchas bases de datos orientadas a objetos ofrecen soporte para control de versiones. Un objeto puede ser visto como un conjunto de todas sus versiones. También las versiones de objetos pueden ser tratadas como objetos por derecho propio. Algunas bases de datos orientadas a objetos también proporcionan soporte sistemático para triggers y restricciones.
  • La eficiencia de una base de datos orientada a objetos también ha mejorado considerablemente en áreas en las cuales se requieren cantidades masivas de datos sobre un elemento. Por ejemplo, una entidad bancaria podría obtener la información de la cuenta de un usuario y proporcionarle eficientemente información muy extensa conteniendo todas las transacciones, todas las entradas con información de la cuenta, etc.

Una base de datos orientada a objetos almacena datos complejos y relaciones entre datos directamente, sin asignar filas y columnas, y esto hace que sean más adecuadas para aplicaciones que tratan con datos muy complejos. Los objetos tienen relaciones “muchos a muchos” y son accesibles mediante el uso de punteros. Estos punteros se vinculan a los objetos para establecer relaciones. Otro beneficio adicional de una base de datos orientada a objetos es que puede ser programada con pequeñas diferencias de procedimientos sin afectar a todo el sistema.

SQL orientado a objetos

En 1999 fue desarrollado el lenguaje SQL 3, que venía a mejorar las anteriores versiones e incorporar la orientación a objetos. Por tanto, este lenguaje es considerado como la base de la mayoría de los SGBD. Como principal característica se puede destacar la posibilidad de definir tipos de datos:

  • Grandes Objetos.SQL99 define dos tipos de objetos grandes, el llamado BLOB (Binary Large Object), adecuado para almacenar datos binarios como por ejemplo imágenes, videos,... y CLOB (Character Large Object), ideal para datos extensivos de tipos texto como por ejemplo informes, páginas web...
  • Colecciones: Permite almacenar de forma directa colecciones enteras de datos tanto de tipo básico como de tipo estructurado.
  • Tipos compuestos o estructurados: Gracias a la incorporación de estos tipos de datos es posible crear tipo de datos definidos por el usuario.
  • Referencia a tipos estructurados: Se trata de un tipo especial que actúa como apuntador de tipos compuestos.

La manipulación de estos tipos de datos no se realiza volcándolas a tipos de datos estándares, sino que se utilizan unas clases especiales (java.sql.Blob, java.sql.Clob o java.sql.Array) que actúan como punteros lógicos a la información deseada a la base de datos.

Característica de base de datos orientada a objeto

En una base de datos orientada a objetos, la información se representa mediante objetos como los presentes en la programación orientada a objetos. Un ODBMS hace que los objetos de la base de datos aparezcan como objetos de un lenguaje de programación en uno o más lenguajes de programación a los que dé soporte.

La iniciativa ODMG (Object Database Management Group) proporciona estándares sobre base de datos orientada a objetos, y define:

  • Un modelo de objetos estándar para el diseño de estas BBDD.
  • El lenguaje de definición de objetos u ODL (Object Definition Language).
  • Lenguaje de consultas denominado OQL.

SGBDOO

Un sistema de gestión de base de datos orientado a objeto es un software que se utiliza para poder trabajar con bases de datos orientadas a objetos. Entre las más destacadas tenemos:

  • ObjectStore: es una solución para C++ y Java
  • wakanda y ObjectDB: solución para Javascript.
  • ObjectDB: solución para Java.