De Wikipedia, la enciclopedia libre
  (Redirigido desde la base de datos relacional de objetos )
Saltar a navegación Saltar a búsqueda

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 .

Ejemplo de un modelo de base de datos orientado a objetos [1]

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.

Resumen [ editar ]

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 RDBMS tradicionales o productos SQL-DBMS enfocados 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 objeto-relacional permite a los desarrolladores de software integrar sus propios tipos y los métodos que se aplican a ellos 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á relacionado 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, privatey protected modificadores de acceso .

Historia [ editar ]

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 [ editar ]

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 ( Nombre ) DE Clientes                        DONDE  Mes ( DOB )  =  Mes ( getdate ())  Y  Día ( DOB )  =  Día ( getdate ())

La mayoría de las bases de datos SQL actuales permiten la creació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 [ editar ]

  • 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 [ editar ]

  1. ^ 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
  2. ^ Frank Stajano (1995), Una suave introducción a las bases de datos relacionales y orientadas a objetos (PDF)
  3. ^ Naman Sogani (2015), Revisión del artículo técnico (PDF) , archivado desde el original (PDF) el 4 de marzo de 2016 , consultado el 5 de octubre de 2015
  4. ^ Fecha, Christopher 'Chris' J ; Darwen, Hugh , El tercer manifiesto
  5. ^ Stonebraker ,. Michael con Moore, Dorothy. DBMS objeto-relacionales: la próxima gran ola . Morgan Kaufmann Publishers, 1996. ISBN 1-55860-397-2 . 
  6. 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 [ editar ]

  • 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).
  • Punto de referencia de PolePosition - muestra las compensaciones de rendimiento para las soluciones en el contexto de desajuste de impedancia relacional de objeto .