Modelo de datos orientado a
objetos
El modelo de datos orientado
a objetos es una extensión del paradigma de programación orientado a objetos.
Los objetos entidad que se utilizan en los programas orientados a objetos son
análogos a las entidades que se utilizan en las bases de datos orientadas a
objetos puras, pero con una gran diferencia: los objetos del programa
desaparecen cuando el programa termina su ejecución, mientras que los objetos
de la base de datos permanecen. A esto se le denomina persistencia.
Las bases de datos orientadas a objetos se
diseñan para trabajar bien en conjunción con lenguajes de programación
orientados a objetos como Java, C#, Visual Basic.NET y C++. Los ODBMS usan
exactamente el mismo modelo que estos lenguajes de programación.
Los ODBMS son una buena elección para
aquellos sistemas que necesitan un buen rendimiento en la manipulación de tipos
de dato complejos.
Los ODBMS proporcionan los costes de
desarrollo más bajos y el mejor rendimiento cuando se usan objetos gracias a
que almacenan objetos en disco y tienen una integración transparente con el
programa escrito en un lenguaje de programación orientado a objetos, al
almacenar exactamente el modelo de objeto usado a nivel aplicativo, lo que
reduce los costes de desarrollo y mantenimiento.
Debe soportar objetos complejos. Debe ser posible
construir objetos complejos aplicando constructores a objetos básicos.
Identidad del objeto. Todos los objetos deben tener un
identificador, el cual es independiente de los valores de sus atributos.
Encapsulamiento. Los programadores solo tienen acceso a la
interfaz de los métodos, y los datos e implementación de estos métodos están en
los objetos.
Tipos o clases. El esquema de una base orientada a
objetos contiene un conjunto de clases o tipos.
Tipos o clases deben ser capaces de heredar de sus
super-tipos o superclases los atributos y los métodos.
La sobrecarga debe ser soportada, los métodos deben poder
aplicarse a diferentes tipos.
El DML debe ser completo. El DML en los sistemas gestores
de bases de datos orientados a objetos debe ser un lenguaje de programación de
propósito general.
Tipos
de SGBD
·
Relacionales
·
En Red
·
Jerárquicos
·
Orientados a objetos
Productos SGBD
·
PostgreSQL Licencia BSD
·
Firebird basada en la versión 6 de InterBase,
Initial Developer's PUBLIC LICENSEVersion 1.0.
·
SQLite Licencia Dominio Público
·
DB2 Express-C
·
Apache Derby
·
SGBD no libres
·
Advantage Database
·
Microsoft SQL Server
·
Nexus BD
·
Oracle
·
Sybase ASE
ESTANDAR ODMG
Este estándar es el modelo para la
semántica de los objetos de la base de datos.
sus siglas en ingles (Object Database Management Group)
Es un súper conjunto del modelo de objetos de OMG, es un súper conjunto que permite portar tanto los
diseños como las implementaciones entre diversos sistemas compatibles.
La ultima versión del estándar fue la 3.0 propone los siguientes componentes principales de la arquitectura ODMG para SGBDOO:
sus siglas en ingles (Object Database Management Group)
Es un súper conjunto del modelo de objetos de OMG, es un súper conjunto que permite portar tanto los
diseños como las implementaciones entre diversos sistemas compatibles.
La ultima versión del estándar fue la 3.0 propone los siguientes componentes principales de la arquitectura ODMG para SGBDOO:
·
Conexión con los lenguajes C++, Smalltalk y Java
·
Modelo de objetos
·
Lenguaje de definición de objetos (ODL)
·
Lenguaje de consulta de objetos (OQL)
Adopta una arquitectura que consta de un sistema de
gestión que soporta un lenguaje de bases de datos orientado a objetos, con una
sintaxis similar a un lenguaje de programación también orientado a objetos como
puede ser:
·
C++
·
Smalltalk
En definitiva, ODMG-93 intenta definir un SGBDOO
que integre las capacidades de las bases de datos con las capacidades de los
lenguajes de programación, de forma que los objetos de la base de datos
aparezcan como objetos del lenguaje de programación, intentando de esta manera
eliminar la falta de correspondencia existente entre los sistemas de tipos de
ambos lenguajes.
Identidad y estructura de objetos
Un objeto es una cosa tangible, algo a que se puede
aprehender intelectualmente o algo hacia lo que se puede dirigir una acción o
pensamiento.
Un objeto representa un ítem individual e
identificable, o una entidad real o abstracta, con un papel definido en el
dominio del problema.
Un objeto tiene:
- Estado
- Comportamiento
- Identidad
La estructura y el comportamiento de objetos
similares se definen en sus clases comunes. El término objeto y ejemplo
(instancia) de una clase son intercambiables. Identidad de un objeto Identidad
es la propiedad de un objeto que lo lleva a distinguirse de otros.
Encapsulamiento, Herencia y Polimorfismo en BDOO
Encapsulamiento
El encapsulamiento se centra en la implementación que da lugar al comportamiento observable de un objeto. El encapsulamiento se consigue a menudo mediante la ocultación de información, es decir, se basa en ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales. El encapsulamiento proporciona, por tanto, barreras explícitas entre abstracciones diferentes. Existen dos visiones diferentes del encapsulamiento [ATK89], la primera y original que es la del lenguaje de programación; y la segunda que es la adaptación de esa visión para la base de datos.
Herencia
Las clases o tipos heredan de sus ancestros.
Ventajas de la herencia
El encapsulamiento se centra en la implementación que da lugar al comportamiento observable de un objeto. El encapsulamiento se consigue a menudo mediante la ocultación de información, es decir, se basa en ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales. El encapsulamiento proporciona, por tanto, barreras explícitas entre abstracciones diferentes. Existen dos visiones diferentes del encapsulamiento [ATK89], la primera y original que es la del lenguaje de programación; y la segunda que es la adaptación de esa visión para la base de datos.
Herencia
Las clases o tipos heredan de sus ancestros.
Ventajas de la herencia
·
Ayuda al modelado porque proporciona una descripción concisa y precisa
del mundo.
·
Ayuda a compartir especificaciones e implementaciones en las
aplicaciones.
·
· Herencia de restricción: es un suceso de la herencia de inclusión. Un
tipo tés un subtipo de si está formado por todos los objetos de t que
satisfacen una restricción dada.
Herencia d especialización: un tipo t es un subtipo de t’, si los
objetos de tipo t son objetos de tipo t' que contienen información más
específica.
Polimorfismo
Existen casos en los que se desea tener el mismo nombre para diferentes operaciones. Supongamos la operación dibuja que toma un objeto como entrada y lo dibuja en pantalla. Dependiendo del tipo de objeto (cuadrado, estrella, flecha,) debemos emplear diferentes mecanismos de visualización. Es decir, necesitamos visualizar un conjunto cuyos miembros no se conocen en tiempo de compilación.
En una aplicación que emplee el sistema convencional, habrá tantas operaciones como figuras a representar: dibuja cuadrado, dibuja estrella, dibuja flecha etc. En un sistema orientado a objetos se definirá la operación en una clase más general. Así dibuja tendrá un único nombre y podrá emplearse indiferentemente sobre cualquier figura.
Existen casos en los que se desea tener el mismo nombre para diferentes operaciones. Supongamos la operación dibuja que toma un objeto como entrada y lo dibuja en pantalla. Dependiendo del tipo de objeto (cuadrado, estrella, flecha,) debemos emplear diferentes mecanismos de visualización. Es decir, necesitamos visualizar un conjunto cuyos miembros no se conocen en tiempo de compilación.
En una aplicación que emplee el sistema convencional, habrá tantas operaciones como figuras a representar: dibuja cuadrado, dibuja estrella, dibuja flecha etc. En un sistema orientado a objetos se definirá la operación en una clase más general. Así dibuja tendrá un único nombre y podrá emplearse indiferentemente sobre cualquier figura.
Persistencia,
Concurrencia y Recuperación en BDOO
Una base de datos orientada a
objetos es una base de datos que incorpora todos los conceptos importantes del paradigma
de objetos:
Persistencia
Persistencia
Es la capacidad que tiene el programador para que sus datos se conserven al finalizar la ejecución de un proceso, de forma que se puedan reutilizar en otros procesos.
Esta se refiere a la capacidad de manipular directamente los datos almacenados enuna base de datos usando un lenguaje de programación orientado a objetos. Estocontrasta con una base de datos utilizada por SQL o una interfaz utilizada por ODBC o JDBC. Utilizando un objeto de base de datos significa que se puedetener un mayor rendimiento y se aminora la escritura de código.
Con la persistencia la manipulación de objetos se realiza directamente por el lenguaje de programación de la misma manera que en la memoria, sin persistenciade objetos. Esto se logra mediante el uso inteligente de almacenamiento en caché.
Concurrencia
Se relaciona con la existencia de muchos usuarios interactuando concurrentemente en el sistema. Este debe controlar la interacción entre las transacciones concurrentes para evitar que se destruya la consistencia de la base de datos.
Los SMBDOO deben poder ser accesibles por múltiples usuarios. Cuando unaaplicación está accesando a una sección de la base de datos, otras aplicacionesdeben poder acceder a otras secciones de la base de datos. La concurrenciapermite a los usuarios cooperar y colaborar en una aplicación.
Los mecanismos de control de concurrencia son necesarios para reforzar laspropiedades de las transacciones (ACID). Los modos básicos de control deconcurrencia son:
·
Modo Pesimista
El modo pesimista obliga a una transacción a esperar a que se resuelva elconflicto que pueda o ponga en riesgo la concurrencia para dejarle continuarcuando el conflicto haya sido resuelto.
·
Modo Optimista
El modo optimista deje correr la transacción como si no ocurriera ningúnconflicto y resuelve este al final del commit, generalmente se emplea usandoestampas de tiempo y copias de los elementos de la transacción.
·
Modo Mixto
El modo mixto combina diferentes controles de concurrencia a diferentes objetosy tipos de datas en una misma transacción.
·
Modo Semi-optimista
El modo semi-optimista es una variante del modo mixto que no detiene a latransacción hasta que esta termina.
Recuperación
Proporcionar como mínimo el mismo nivel de recuperación que los sistemas de bases de datos actuales. De forma que, tanto en caso de fallo de hardware como de fallo de software, el sistema pueda retroceder hasta un estado coherente de los datos.
En bases de datos orientadas a objetos, los usuarios pueden definir operacionessobre los datos como parte de la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de unaoperación incluye el nombre de la operación y los tipos de datos de susargumentos (o parámetros). La implementación (o método) de la operación seespecifica separadamente y puede modificarse sin afectar la interfaz.