Publicado el 3 de Septiembre del 2020
766 visualizaciones desde el 3 de Septiembre del 2020
196,9 KB
26 paginas
Creado hace 21a (02/10/2003)
Bases de datos
avanzadas
Universidad de Los Andes
Postgrado en Computación
Prof. Isabel M. Besembel Carrera
Unidad I. Sesión 4. SGBDOO.
1
Introducción …
Características de los SGBDOO {Atkinson, M. et al. The Object-Oriented Database Manifesto.
Proceedings 1st. International Conference on Deductive and Object-Oriented Databases. Elsevier, 1989}
Obligatorias: persistencia, manejo de memoria secundaria, concurrencia,
recuperación, consultas, objetos complejos, identidad del objeto,
encapsulación, tipos o clases, herencia, reescritura combinada con
encadenamiento tardío, extensibilidad y completitud computacional.
Opcionales: herencia múltiple, chequeo e inferencia de tipo, distribución,
diseño de transacciones y versiones.
Abiertas: paradigma de programación, sistema de representación,
sistema de tipos y uniformidad
Objetos complejos: objetos que se construyen a partir de los simples
aplicandoles los constructores
Sep. 2003
Isabel Besembel. ULA-PGCOMP
2
Jasmine
Manejo de objetos complejos y multimedia {http://www.cai.com/products/fdb/jasmine}
Clases, métodos, instancias con identificador único y atributos
transientes o persistentes
Métodos almacenados con la clase, modificación dinámica
Herencia simple y múltiple
Encapsulamiento y polimorfismo
Concurrencia, recuperación y facilidades de consultas ad-hoc
Distribución: intranet, extranet e Internet
Lenguajes: C++, Java, Jasmine Studio
Procesamiento de consultas: con ODQL
Sep. 2003
Isabel Besembel. ULA-PGCOMP
3
Poet
Objetos complejos y multimedia {http://www.poet.com/products/documentation}
Clases, métodos, instancias con identificador único y atributos
transientes o persistentes
Herencia simple y múltiple
Encapsulamiento y polimorfismo
Completitud computacional soportada por C++
Concurrencia, transacciones anidadas, recuperación y facilidades de
consultas ad-hoc
Versionamiento
Procesamiento de consultas: OQL o PoetQL
Lenguajes: C++, Java, VisualBasic
Sep. 2003
Isabel Besembel. ULA-PGCOMP
4
O2
Un tipo de objeto se define usando los tipos atómicos del O2 y aplicando sus
constructores de tipo. {Deux, O. The story of O2. IEEE transactions on knowledge and data engineering.
Vol. 2. Nro. 1. Marzo, 1990}
Tipos atómicos o simples: boolean, integer, string, real, character y bit.
Constructores de tipos complejos: tuple, set, unique set y list.
Un objeto tiene identidad única (oid) y un valor actual (estado).
Un valor no tiene identidad. Los objetos tienen identidad.
Los objetos son persistentes o transitorios. Los valores son transitorios a
menos que formen parte de un objeto persistente.
Las clases se definen anteponiendo la palabra class y los métodos con
method
La herencia de clases se define con la palabra inherit. Se puede cambiar el
nombre de los atributos o métodos heredados con rename atrib as
nuevoNombre
Sep. 2003
Isabel Besembel. ULA-PGCOMP
5
class Persona
type tuple (
nss: string,
nombre: tuple (
dirección: tuple (
fechaNac: Fecha,
sexo: character )
method edad: integer
end
type Fecha: tuple (
año: integer,
mes: integer,
dia: integer );
nomPila: string,
paterno: string,
materno: string),
número: integer,
ubic: string,
ciudad: string,
estado: string,
codPostal: string ),
Ejemplo O2
Encapsulamiento, reescritura
y encadenamiento tardío
Tipos y clases
Herencia simple y múltiple
Extensibilidad soportada por
los cambios de esquema
Manejo de memoria
secundaria y persistencia
Concurrencia y recuperación
en caso de fallas con puntos
de chequeo
Distribución soportada por
Ethernet y TCP/IP. Cliente-
servidor.
Chequeo e inferencia de tipo
Tipos son componentes de
las clases
Sep. 2003
Isabel Besembel. ULA-PGCOMP
6
class Estudiante inherit Persona
type tuple (
clase: string,
carreraEn: Departamento,
especialidadEn: Departamento,
inscritoEn: set ( Sección ),
boleta: set ( tuple (
nota: character,
nnota: real,
sección: Sección ) ) )
method
promedioDeNotas: real,
cambiarClase: boolean,
cambiarCarrera ( nc: Departamento ): boolean
end
class EstudianteDePostgrado inherit Estudiante
grados: set ( tuple (
type tuple (
end
asesor: Profesor )
colegio: string,
grado: string,
año: integer ) )
Ejemplo O2
Manejo de transacciones
Sin versiones
Manejador de mensajes
Lenguajes: CO2 y BasicO2
Manejo de cluster y de buffer
Implementado en C bajo
Unix (SunOS4.0)
Manejo de espacio de
trabajo
Indexación basada en
objetos complejos y herencia
No permite cambios de la
estructura de la clase. Una
clase se puede eliminar si
ella no tiene instancias y
ninguna otra clase depende
de ella
Sep. 2003
Isabel Besembel. ULA-PGCOMP
7
Implementación de los métodos
method body edad: integer in class Persona
{
int a;
Fecha f;
f = today():
a = f->año – self ->fechaNac ->año;
if ( f->mes < self ->fechaNac -> mes || ( ( f->mes == self->fechaNac-
>mes) && ( f->dia < self->fechaNac->dia ) )
- - a;
return a;
}
Sep. 2003
Isabel Besembel. ULA-PGCOMP
8
Consultas en O2
select tuple ( nombre: e.nombre.nomPila, apellido: e.nombre.paterno )
from e in Estudiante
where e.carreraEn.nombreD = “Ciencias de la computación”
Declaración de la raíz persistente:
name Estudiantes: set ( Estudiante )
Una consulta regresa un objeto o un valor
El lenguaje de consulta es un subconjunto del lenguaje de
programación, funcional y con cálculo de predicados de primer
orden
Sep. 2003
Isabel Besembel. ULA-PGCOMP
9
ObjectStore
Usa las declaraciones de C++ extendido con elementos
adicionales para bases de datos. {Lamb et al., 1991}.
Constructores de tipos: os_Set, os_Bag, os_List
Tipos básicos, los mismos de C: char, int, long int, unsigned int, float,
double, char*
Declaración de relaciones: tipo atributo inverse_member
tipo::atributo;
Sep. 2003
Isabel Besembel. ULA-PGCOMP
10
Ejemplo ObjectStore
struct Fecha { int año, mes, dia };
class Persona
{
sexo;
nomPila, paterno, materno: } nombre;
número;
char nss[10];
struct { char*
struct { int
char* ubic, ciudad, estado, codPostal } dirección;
Fecha fechaNac;
char
public:
void
nombre
dirección
Fecha
char
int
};
Persona();
getNombre();
getDirección();
getFechaNac();
getSexo();
edad();
// Constructor vacío
Sep. 2003
Isabel Besembel. ULA-PGCOMP
11
class Estudiante: public Persona
{ char*
clase;
Departamento *carreraEn;
Departamento *especialidadEn;
os_Set<Sección*> inscritoEn;
os_Set<Boleta*>
public:
void Estudiante();
float promedioDeNotas();
int
int
boleta;
Ejemplo ObjectStore
struct Boleta { char
float
Sección *sección;
nota;
nnota;
}
struct Grado { char* colegio;
char* grado;
int
}
año;
cambiarClase();
cambiarCarrera ( Departamento *nd );
}
Sep. 2003
Isabel Besembel. ULA-PGCOMP
12
Ejemplo ObjectStore
class EstudianteDePostgrado: public Estudiante
{
os_Set<Grado*> grados;
Profesor
asesor;
}
extern database *bdUniversidad;
class Profesor: public Persona
{
salario;
rango;
oficinaP;
float
char*
char*
os_Set<Departamento*>
Departamento *preside inverse_member Departamento::director;
os_Set<Estudiante*>
public:
Profesor(char s[10]) {nss = new(bdUniversidad) char[10]; strcpy(nss, s); };
void ascenso();
}
perteneceA inverse_member Departamento::miembros;
asesora inverse_member Estudiante::asesoradoPor;
Sep. 2003
Isabel Besembel. ULA-PGCOMP
13
Implementación de los métodos
Manipulación de los objetos en C++.
Se incluye la instrucción: foreach(c, colección)
main( )
{ database bdUniversidad = database::open(“/bases/univ”);
transaction::begin();
os_Set<Departamento*> &departamentos =
os_Set<Departamento*>::create(bdUniversidad);
departamentos.insert(d);
transaction::commit();
}
Sep. 2003
Isabel Besembel. ULA-PGCOMP
14
ORION
Objetos complejos, compuestos y multimedia. {W. Kim. Introduction to Object-Oriented Databases. The
MIT Press, 1991}.
Identificador del objeto: compuesto del identificador de la clase y de la
instancia, eventualmente uno del lugar
Encapsulación de datos y comportamiento
Extensiones de clases
Herencia simple y múltiple
Reescritura y encadenamiento tardío
Complejidad computacional soportada por C
Extensibilidad que soporta cambios de esquema
Persistencia y recolector de basura por alcanzabilidad
Agrupamiento simple por clases y manejo de buffers
Sep. 2003
Isabel Besembel. ULA-PGCOMP
15
Clase
NombreDeLaClase
Atributos
Superclases
Subclases
Métodos
Atributo
Clase
Dominio
HeredadaDe
Clases del sistema
subsistema de transacciones
Manejador de
interbloqueo
Manejador de
bloqueos
ORION
Método
Clase
NombreDelMétodo
Código
HeredadoDe
Objeto
versionable
Versión 1
versiónDe
Manejador de
transacciones
Manejador de
recuperación
Manejador de
bitácoras
Versión 2
derivadaDe
Versión 3
Versión 4
Sep. 2003
Isabel Besembel. ULA-PGCOMP
16
ORION
Manejo de espacio en disco e indexación asociativa con árboles_B+ sobre la
jerarquía de clases
Manejo de concurrencia y recuperación sólo para fallas no catastróficas
Distribución solo en la versión 2. TCP/IP.
Transacciones seriales con dos tablas: de bloqueos y de transacciones
bloqueadas
Versiones: objetos versionados transientes y versiones de trabajo
Métodos son objetos que se comunican por pase de mensajes
Lenguaje de definición de datos: Lisp Statice extensión de LISP
(
Comentarios de: Unidad I. Sesión 4. SGBDOO - Bases de datos avanzadas (0)
No hay comentarios