Una base de datos relacional de objetos ( ORD ), o un sistema de administración de bases de datos relacionales de objetos ( ORDBMS ), es un sistema de administración de bases de datos (DBMS) similar a una base de datos relacional , pero con un modelo de base de datos orientado a objetos: los objetos, las clases y la herencia son directamente soportado en esquemas de base de datos y en el lenguaje de consulta . Además, al igual que con los sistemas relacionales puros, admite la extensión del modelo de datos con métodos y tipos de datos personalizados .
Se puede decir que una base de datos relacional de objetos proporciona un término medio entre las bases de datos relacionales y las bases de datos orientadas a objetos . En las bases de datos relacionales de objetos, el enfoque es esencialmente el de las bases de datos relacionales: los datos residen en la base de datos y se manipulan colectivamente con consultas en un lenguaje de consulta; en el otro extremo están los OODBMS en los que la base de datos es esencialmente un almacén de objetos persistentes para software escrito en un lenguaje de programación orientado a objetos , con una API de programación para almacenar y recuperar objetos, y poco o ningún soporte específico para consultas.
Descripción general
La necesidad básica de una base de datos relacional de objetos surge del hecho de que tanto la base de datos relacional como la de objetos tienen sus ventajas e inconvenientes individuales. El isomorfismo del sistema de base de datos relacional con una relación matemática le permite explotar muchas técnicas y teoremas útiles de la teoría de conjuntos. Pero estos tipos de bases de datos no son óptimos para ciertos tipos de aplicaciones. Un modelo de base de datos orientado a objetos permite contenedores como conjuntos y listas, tipos de datos arbitrarios definidos por el usuario y objetos anidados. Esto aporta elementos comunes entre los sistemas de tipo de aplicación y los sistemas de tipo de base de datos, lo que elimina cualquier problema de discrepancia de impedancia. Pero las bases de datos de objetos, a diferencia de las relacionales, no proporcionan ninguna base matemática para su análisis profundo. [2] [3]
El objetivo básico de la base de datos relacional de objetos es cerrar la brecha entre las bases de datos relacionales y las técnicas de modelado orientadas a objetos utilizadas en lenguajes de programación como Java , C ++ , Visual Basic .NET o C # . Sin embargo, una alternativa más popular para lograr dicho puente es utilizar un sistema de base de datos relacional estándar con algún tipo de software de mapeo relacional de objetos (ORM). Mientras que los productos RDBMS tradicionales o SQL-DBMS se centran en la gestión eficiente de datos extraídos de un conjunto limitado de tipos de datos (definidos por los estándares de lenguaje relevantes), un DBMS relacional de objetos permite a los desarrolladores de software integrar sus propios tipos y métodos que aplicarlos en el DBMS.
El ORDBMS (como ODBMS o OODBMS ) está integrado con un lenguaje de programación orientado a objetos . Las propiedades características de ORDBMS son 1) datos complejos, 2) herencia de tipos y 3) comportamiento del objeto. La creación de datos complejos en la mayoría de los ORDBMS de SQL se basa en la definición de esquema preliminar mediante el tipo definido por el usuario (UDT). La jerarquía dentro de los datos complejos estructurados ofrece una propiedad adicional, la herencia de tipos . Es decir, un tipo estructurado puede tener subtipos que reutilizan todos sus atributos y contienen atributos adicionales específicos del subtipo. Otra ventaja, el comportamiento del objeto , está relacionada con el acceso a los objetos del programa. Dichos objetos de programa deben poder almacenarse y transportarse para el procesamiento de la base de datos, por lo que generalmente se denominan objetos persistentes . Dentro de una base de datos, todas las relaciones con un objeto de programa persistente son relaciones con su identificador de objeto (OID) . Todos estos puntos se pueden abordar en un sistema relacional adecuado, aunque el estándar SQL y sus implementaciones imponen restricciones arbitrarias y complejidad adicional [4] [ página necesaria ]
En la programación orientada a objetos (POO) , el comportamiento del objeto se describe a través de los métodos (funciones del objeto). Los métodos indicados por un nombre se distinguen por el tipo de sus parámetros y el tipo de objetos para los que se adjuntan ( firma del método ). Los lenguajes OOP llaman a esto el principio de polimorfismo , que se define brevemente como "una interfaz, muchas implementaciones". Otros principios de OOP, herencia y encapsulación , están relacionados tanto con métodos como con atributos. La herencia de métodos se incluye en la herencia de tipos. La encapsulación en OOP es un grado visibilidad declarada, por ejemplo, a través de la public
, private
y protected
modificadores de acceso .
Historia
Los sistemas de administración de bases de datos relacionales de objetos surgieron a partir de investigaciones realizadas a principios de la década de 1990. Esa investigación amplió los conceptos de bases de datos relacionales existentes al agregar conceptos de objetos . Los investigadores tenían como objetivo retener un lenguaje de consulta declarativo basado en el cálculo de predicados como un componente central de la arquitectura. Probablemente el proyecto de investigación más notable, Postgres (UC Berkeley), generó dos productos que rastrean su linaje hasta esa investigación: Illustra y PostgreSQL .
A mediados de la década de 1990 aparecieron los primeros productos comerciales. Estos incluyeron Illustra [5] (Illustra Information Systems, adquirido por Informix Software , que a su vez fue adquirido por IBM ), Omniscience (Omniscience Corporation, adquirida por Oracle Corporation y se convirtió en el Oracle Lite original) y UniSQL (UniSQL, Inc., adquirido por KCOMS ). El desarrollador ucraniano Ruslan Zasukhin, fundador de Paradigma Software, Inc. , desarrolló y envió la primera versión de la base de datos Valentina a mediados de la década de 1990 como un SDK de C ++ . En la siguiente década, PostgreSQL se había convertido en una base de datos comercialmente viable y es la base de varios productos actuales que mantienen sus características ORDBMS.
Los informáticos llegaron a referirse a estos productos como "sistemas de gestión de bases de datos relacionales de objetos" o ORDBMS. [6]
Muchas de las ideas de los primeros esfuerzos de bases de datos relacionales de objetos se han incorporado en gran medida a SQL: 1999 a través de tipos estructurados . De hecho, cualquier producto que se adhiera a los aspectos orientados a objetos de SQL: 1999 podría describirse como un producto de gestión de bases de datos relacionales a objetos. Por ejemplo, DB2 de IBM , la base de datos Oracle y Microsoft SQL Server , afirman que respaldan esta tecnología y lo hacen con diversos grados de éxito.
Comparación con RDBMS
Un RDBMS podría involucrar comúnmente sentencias SQL como estas:
CREAR TABLA Clientes ( Id CHAR ( 12 ) CLAVE PRINCIPAL NOT NULL , Apellido VARCHAR ( 32 ) NOT NULL , FirstName VARCHAR ( 32 ) NOT NULL , DOB DATE NOT NULL # DOB: Fecha de nacimiento ); SELECCIONE InitCap ( Apellido ) || ',' || InitCap ( FirstName ) FROM Clientes DONDE Mes ( DOB ) = Mes ( getdate ()) Y Día ( DOB ) = Día ( getdate ())
Más reciente[actualizar]Las bases de datos SQL permiten la elaboración de funciones personalizadas , lo que permitiría que la consulta aparezca como:
SELECT formal ( Id ) DE Clientes DONDE cumpleaños ( DOB ) = hoy ()
En una base de datos relacional de objetos, uno podría ver algo como esto, con tipos de datos definidos por el usuario y expresiones como BirthDay()
:
CREATE TABLE Clientes ( Id Cust_Id NOT NULL PRIMARY KEY , Name PersonName NOT NULL , DOB DATE NOT NULL ); SELECT formal ( C . Id ) DE Clientes C DONDE BirthDay ( C . DOB ) = HOY ;
El modelo objeto-relacional puede ofrecer otra ventaja, ya que la base de datos puede hacer uso de las relaciones entre los datos para recopilar fácilmente registros relacionados. En una aplicación de libreta de direcciones , se agregaría una tabla adicional a las anteriores para contener cero o más direcciones para cada cliente. Con un RDBMS tradicional, la recopilación de información tanto del usuario como de su dirección requiere una "unión":
SELECT INITCAP ( C . Apellido ) || ',' || INITCAP ( C . FirstName ), A . ciudad DE Clientes el C se unen a las direcciones A EN A . Cust_Id = C . Id - la unión DONDE A . ciudad = "Nueva York"
La misma consulta en una base de datos relacional de objetos parece más simple:
SELECT formal ( C . Nombre ) DE Clientes C DONDE C . dirección . ciudad = "Nueva York" : la ORDB "entiende" el vínculo
Ver también
- Base de datos orientada a documentos
- SQL
- Comparación de sistemas de gestión de bases de datos relacionales de objetos
- Tipo estructurado
- Base de datos de objetos
- Mapeo relacional de objetos
- Modelo relacional
- LINQ
- Entity Framework de ADO.NET
Referencias
- ^ Glosario de integración de datos (PDF) , EE. UU .: Departamento de transporte, agosto de 2001, archivado desde el original (PDF) el 24 de septiembre de 2016 , consultado el 8 de marzo de 2014
- ^ Frank Stajano (1995), Una suave introducción a las bases de datos relacionales y orientadas a objetos (PDF)
- ^ Naman Sogani (2015), Technical Paper Review (PDF) , archivado desde el original (PDF) el 2016-03-04 , consultado el 2015-10-05
- ^ Fecha, Christopher 'Chris' J ; Darwen, Hugh , El tercer manifiesto
- ^ Stonebraker ,. Michael con Moore, Dorothy. DBMS objeto-relacionales: la próxima gran ola . Editores Morgan Kaufmann, 1996. ISBN 1-55860-397-2 .
- ↑ Hubo, en ese momento, una disputa sobre si el término fue acuñado por Michael Stonebraker de Illustra o Won Kim de UniSQL.
enlaces externos
- SAVUSHKIN, Sergey (2003), Un Punto de Vista en ORDBMS , Archivado desde el original en 2012-03-01 , recuperada 2012-07-21.
- Benchmark de rendimiento de JPA - comparación de productos Java JPA ORM (Hibernate, EclipseLink, OpenJPA, DataNucleus).
- Benchmark de PolePosition - muestra las compensaciones de rendimiento para las soluciones en el contexto de desajuste de impedancia relacional de objeto .