6. Object-Oriented Databases

Anuncio
6. Object-Oriented Databases
6.1 Object Oriented
6.1.1 Definición
El primer modelado fue relacional, los DBMS lo implementaban ampliamente en RDBMS, cuando surgieron los lenguajes orie ntados a
objetos como C++ o Java se pensó en una manera de plantear ese paradigma en bases de datos, finalmente si se programaba en un
leguaje orientado a objetos, los más natural sería almacenar esa información de la misma forma.
Una base de datos orientada a objetos es una colección de objetos persistentes con un propósito común.
Objetos: instancias de una clase, abstracción de "algo" de la realidad
Persistentes: "sobreviven" en el tiempo a la ejecución de un programa
class Movie
(extent Movies key (title, year))
{
attribute string title;
attribute integer year;
attribute integer length;
attribute enum Film {color, b&w} filmType;
relationship Set<Star> stars
inverse Star::starredIn;
relationship Studio ownedBy
inverse Studio::owns;
float lengthInHours() raises(noLengthFound);
void starNames(out Set<String>);
void otherMovies(in Star, out Set<Movie>)
raises(noSuchStar);
};
class Star
(extent Stars key name)
{
attribute string name;
attribute struct Addr
{string street, string city} address;
relationship Set<Movie> starredIn
inverse Movie::stars;
};
class Studio
(extent Studios key name)
{
attribute string name;
attribute string address
relationship Set<Movie> owns
inverse Movie::ownedBy;
};
6.1.2 Diferencias entre RDBMS y OODBMS
RDBMS
OODBMS
Objetos complejos: contienen colecciones de objetos
Tablas normalizadas y restricciones de integridad:
o referencias a
identidad y referencial
El esquema conceptual corresponde a base de
otros objetos
El objeto persistente tiene la misma estructura que
datos empresarial y la aplicación explota a través de
su esquema externo
Puede iniciarse una consulta a partir de cualquier
relación derivable de las relaciones representadas
por las tablas de la base de datos.
Busca una representación independiente de las
aplicaciones que explotan la base de datos
Ofrece a las diferentes arquitecturas de aplicaciones
una interfaz común: SQL
su versión transiente
Requiere la definición de objetos distinguidos que
fungen como puntos de acceso a partir de los cuales
es posible acceder al resto de los objetos
Las aplicaciones deben conocer los puntos de
entrada.
Busca la equivalencia entre la estructura de los
objetos en la base de datos y los objetos utilizados
en las aplicaciones.
Requiere un API específico para un lenguaje
orientado a objetos o bien, si está disponible, OQL
6.1.3 Características deseables en ambos tipos de DBMS
Acceso a la base de datos a través de un servidor
Acceso concurrente de múltiples procesos cliente
Consultas y transacciones tanto locales como distribuidas
Capacidad de recuperación de fallas
Seguridad
Respaldos en línea, auditoría
6.1.4 Ejemplos de OODBMS
Jasmine http://www.ca.com/
Poet http://www.x-solutions.poet.com/eu/
Gemstone http://www.gemstone.com/
Versant http://www.versant.com/en_US/products/objectdatabase
ObjectStore http://www.progress.com/objectstore/index.ssp
6.1.5 ObjectStore
6.1.5.1 Introducción
Instrumentación de OODBMS que cubre las características deseables con alto desempeño y en sistemas abiertos:
Servidor distribuido, con administración de replicación
Respaldo y recuperación en línea
Seguridad
Control total de acceso concurrente
API's multilenguaje: Java, C++, ActiveX
6.1.5.2 ObjectStore: metas de diseño
Relaciones complejas en objetos de las aplicaciones:
Rutas de navegación profunda
Agrupación de objetos con alta cohesión
Objetos compartidos por múltiples usuarios
Extendible y escalable
Optimiza el acceso repetido a objetos
Posibilidad de definir en métodos las rutas de acceso más importantes
Adaptación a requerimientos de negocio cambiantes
Integración de nuevos casos de uso y componentes
Arquitectura flexible, con múltiples participantes
Enfasis en velocidad, integridad y disponibilidad
Maximiza el aprovechamiento de disco, RAM y uso del procesador
6.1.5.3 ObjectStore: Modelo de persistencia
Persistencia ortogonal al tipo
La misma clase es transiente y persistente
Utiliza los métodos de la clase sin cambios
Sincronización transparente entre objetos de la aplicación y almacenados en la base de datos
Recuperación de objetos automática, por demanda de la aplicación
Vaciado automático de las actualizaciones a la base de datos
Recuperación y consistencia determinada por fronteras transaccionales
Impacto en el lenguaje:
SQL: SELECT * FROM a, b WHERE a.id =b.ida
OS: a.b
SQL: INSERT INTO a VALUES (x,y)
OS: new a(x,y)
SQL: UPDATE a SET a.d=x
OS: a.d=x
SQL: DELETE FROM a WHERE a.id=x
OS: ¡Noesnecesario! (Garbagecollection)
6.1.5.4 ObjectStore: Arquitectura
6.1.5.5 ObjectStore: Modelo transaccional
Soporte a transacciones serializables
Controladas programáticamente a través de los métodos begin,commit y abort de la clase Transaction del paquete com.odi.
Las transacciones deben ejecutarse en el contexto de una sesión creada con el método create de la clase com.odi.Session, para la
cual se enlaza un thread, con el método join.
Una sesión puede tener cero o a lo más una transacción.
El modelo transaccional garantiza que:
Todos los cambios confirmados (commited) a objetos persistentes queden salvados en disco
Si la transacción aborta, todos los cambios hechos a objetos persistentes desde el inicio de la transacción son descar tados
(rolledback).
Otros usuarios pueden acceder a los datos confirmados.
ObjectStore bloquea automáticamente, no se requiere código adicional explícito.
Los bloqueos se mantienen hasta que la transacción concluye.
Puede efectuarse un bloqueo retardado (LazyLock) para reducir el overhead.
En transacciones que involucran dos o más bases de datos, se utiliza en protocolo de Two Phase Commit para asegurarla
integridad distribuida.
Se cuenta con espera por bloqueos y detección de deadlocks interconstruida.
Fin de una transacción
Commit
Todos los objetos transientes referidos por objetos persistentes se hacen a su vez persistentes.
Todos los objetos persistentes son vaciados a la base de datos.
Los bloqueos se liberan.
Se revisa la materialización de los objetos dependiendo del modo de retención definido para el commit (stale,hollow,re ad-only)
Abort
Los cambios hechos desde el inicio de la transacción son revertidos.
Los bloqueos se liberan.
Los objetos persistentes quedan en modo de retención stale.
Los cambios hechos en objetos transientes deben revertirse en forma explícita
6.1.5.6 Ejemplos del API de ObjectStore
6.2 Object-Relational Model
6.2.1 Antecedentes
Las bases de datos orientadas a objetos tuvieron gran auge durante los 90's pero luego todos los OODBMS se desplomaron . Como se
predijo alrededor de 1990, los vendedores de DBMS comerciales hicieron una mezcla que permitiera utilizar los aspectos del modelo
relacional y del orientado a objetos, resultando el modelo "object-relational", surgiendo así los ORDBMS.
Las OR databases incorporan:
Structured types for attributes
Methods
Identifiers
References
6.2.2 Ejemplo de ORDBMS
Oracle
DB2
6.2.3 Ejemplos de ORDBMS usando Oracle
create type ADDRESS_TY as object
(Street VARCHAR(50),
City
VARCHAR(25),
State CHAR(2),
Zip
NUMBER);
create type PERSON_TY as object
(Name VARCHAR(25),
Address ADDRESS_TY);
create table CUSTOMER
(Customer_ID
NUMBER,
Person
PERSON_TY);
insert into CUSTOMER values
(1,
PERSON_TY('NEIL MULLANE',
ADDRESS_TY('57 MT PLEASANT ST',
'FINN', 'NH', 11111)));
select Name
from CUSTOMER
/*ERROR*/
select Customer_ID, C.Person.Name
from CUSTOMER C;
C.Person.Name
=
Correlation.Column.Attribute
6.3 OQL (Object Query Language)
SELECT m.year
FROM Movies m
WHERE m.title = "Titanic
SELECT s.name
FROM Movies m, m.stars s
WHERE m.title = "Casablanca "
SELECT DISTINCT s.name
FROM (SELECT m
FROM Movies m
WHERE m.ownedBy.name = "Disney") d,
d.stars s
AVG(SELECT m.length FROM Movies m)
CREATE METHOD houseNumber() RETURNS CHAR(10)
FOR AdrdressType
BEGIN
.....
END
Descargar