sgbd orientados a objetos

36
SGBD orientados a objetos Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP.

Upload: shyla

Post on 22-Jan-2016

52 views

Category:

Documents


2 download

DESCRIPTION

SGBD orientados a objetos. Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP. SGBD relacionales (SGBDR). Más de 20 años de usar SGBD relacionales en la industria: prototipos (75) y productos (80). Modelo simple (tablas), programas y datos separados. Bases teóricas sólidas: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SGBD orientados a objetos

SGBD orientados a objetos

Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP.

Page 2: SGBD orientados a objetos

SGBD relacionales (SGBDR)

Más de 20 años de usar SGBD relacionales en la industria: prototipos (75) y productos (80).

Modelo simple (tablas), programas y datos separados.

Bases teóricas sólidas: Relaciones n-arias R D1 D2 ... Dn. Soporte matemático: álgebra y calculo relacional. Dependencias funcionales (semántica de la relación).

Tecnología madura: Optimización de consultas, Indexación, Administración de la concurrencia y de transacciones (ACID).

Page 3: SGBD orientados a objetos

SGBDR (2)

Seguridad en el funcionamiento: recuperación.

Acceso transparente a los datos: persistencia sistemática.

Lenguaje SQL: Lenguaje declarativo (especificar el qué y no el cómo). Estándares: SEQUEL (76), ANSI SQL (86), SQL1 (89), SQL2 (92),

SQL3.

Herramientas para el desarrollo de aplicaciones: SQL / REPORT, SQL /FORMS.

SGBD relacionales distribuidos (SQL server).

Page 4: SGBD orientados a objetos

Debilidades de los SGBDR

Semántica pobre (modelo plano): Tipos de datos: alfanuméricos y restricciones de integridad. Datos sin operaciones: procedimientos no almacenados.

Ausencia de extensibilidad: No hay tipos del usuario (tipos complejos). Funciones del SGBD (caja negra cerrada).

Lenguaje de manipulación de datos “incompleto”: SQL es un lenguaje de consulta. SQL no es un lenguaje de programación.

Problemas de impedancia entre LMD y los lenguajes de programación: Declarativo vs. procedural. Conjuntos vs. elementos (conversiones).

Page 5: SGBD orientados a objetos

Lenguajes de programación (LP)

Datos y programas integrados: unidad de trabajo write (no hay manejo de transacciones).

Un solo nivel de abstracción vs. Niveles interno y externo (Arquitectura ANSI / SPARC).

Lenguaje completo desde el punto de vista de la máquina de Turing.

Page 6: SGBD orientados a objetos

LP (2)

Lenguajes expresivos: modularidad, herencia, tipos, etc.

Administración de la memoria central: optimización de código, administración de la memoria cache, garbage collector, etc.

Persistencia de la memoria (variables) en bloques y acceso a estos bloques por escritura y lectura explicita.

Page 7: SGBD orientados a objetos

LP vs. LMD

Inconvenientes: Dos lenguajes a aprender. Dos estilos de programación. Conversiones de datos entre la base y el espacio de trabajo del

programa. Escoger entre las operaciones del SGBD y las del programa. Comunicaciones frecuentes entre los procesos cliente y servidor.

Solución: SGBD OO (objetos del disco a la pantalla). Datos + comportamiento. Lenguaje de consultas: OQL.

Page 8: SGBD orientados a objetos

Bases de datos OO

Conceptos OO aplicadas sobre las bases de datos.

No hay teoría o apoyo matemático (salvo la teoría del LP).

Orígenes: IA (modelos centrados en objetos: frame, facets). LP OO: Smalltalk, Modula, ADA, LISP+, C++, EIFFFEL, etc. BD (objeto, entidad) y modelos semánticos (relaciones de

herencia, generalización, composición, etc.).

Page 9: SGBD orientados a objetos

Reglas de oro

Reglas de base:

Persistencia.

Manejo de disco.

Fiabilidad, seguridad.

Compartir datos.

Consulta ad-hoc.

Reglas SGBD OO:

Objetos complejos (ID).

Tipos o clases.

Encapsulación.

Herencia.

Sobre carga y ligado dinámico.

SGBD completo y extensible.

Page 10: SGBD orientados a objetos

Acoplamiento de LP y SGBD

Punto de vista LP: Lenguajes de programación persistentes o BD. Sistemas: Galileo, PS-Algol, Adaplex, Napier88, Pjama, etc.

Punto de vista BD: Lenguaje de programación OO + BD. Sistemas: Gemstone, ORION, Itasca, O2, Versant, Poet,

Jasmine, etc.

Page 11: SGBD orientados a objetos

Extensión del modelo relacional

SGBD relacionales extendidos: Principios del relacional + valores complejos. Sistemas: VERSO, ORACLE, ILLUSTRA, UniSQL, etc.

SGBD deductivos: Principios del relacional + lógica de primer orden. Sistemas: RDL, LDL, NAIL, etc.

SGBD extensibles: Principios del relacional + administración de módulos. Sistemas: Exodus, Genesis, etc.

Page 12: SGBD orientados a objetos

Plan

Introducción

Modelos Modelo de datos (estructura, parte estática) Modelo de comportamiento (operaciones, parte

dinámica) Modelo de nombres (puntos de entrada en la BD) Modelo de persistencia (datos persistentes o no)

Programación de aplicaciones

Page 13: SGBD orientados a objetos

Object Database Management Group (ODMG) (1)

Grupo de desarrollo de SGBD orientados a objetos

Ligado (más o menos) a la OMG (Object Management Group)

Creado a mediados de 1991 para definir los estándares de las BD orientadas a objetos

Aparición de “The ODMG-93 Standard”

Revisiones ODMG 95, 97, 99 (ODMG 3.0 + Java)

Page 14: SGBD orientados a objetos

Object Database Management Group (ODMG) (2)

Object Design, Sun Microsystems, ONTOS, O2, Technology / Ardent Soft., Objectivity, Versant, Gemstone, Computer Associates, ObjectStore, InterSystems CACHE, etc.

Asegurar una portabilidad sobre los diferentes productos de estas compañías

Normalizar el modelo de datos a objetos y los lenguajes

Page 15: SGBD orientados a objetos

ODMG-93, 95, 97 (v 2.0), 99 (v 3.0)

Object Model

Object Data Definition Language (ODL)

Object Manipulation Language (OML)

Object Query Language (OQL)

Interfaces con C++, Smalltalk, Java

Page 16: SGBD orientados a objetos

Modelo de datos Objetos complejos: atómico, tuple, bags, sets, lists, ...

Asociaciones entre objetos (1:1, 1:N, N:M)

Identificador de objeto: independencia del valor, referencia, compartir

Clase / tipo: caracterizar los objetos de la misma naturaleza

Herencia: especialización – relación “is a” (“es un”), orden parcial sobre los tipos / clases

Independencia lógica, física

Page 17: SGBD orientados a objetos

Objeto

Encapsulación: métodos r_name, w_name, etc. Valor es privado y puede ser complejo: tuple, set, list Identificador único: p1, v1, v2, v3 Métodos = interfaz del objeto Les objetos reciben mensajes y ejecutan operaciones

p1

tuple(name: "France", capital: v1, towns: set(v1, v2, v3) )

r_name

w_name

r_capital

add_town

...

Page 18: SGBD orientados a objetos

Ejemplo de un valor complejo

struct ( name: "Dupont",first_names: set<"Jean", "Jules", "Gaston">,

birth_date: 490711, address: struct ( number:13,

street: "chemin de la Vigne", zip_code: 38240, town: "Vienne“ ) )

struct ( name: string, first_names: set<string>, birth_date: integer, address: struct ( number:integer, street: string, zip_code: integer, town: string ) )

Page 19: SGBD orientados a objetos

Objetos y valores

Objeto con un valor complejo

Identificador de objeto

(i, atom) i.e. integer, float, bit, char, string, … (i, tuple(a1: i1, a2 : i2, ... an : in)) (i, set( i1, i2, … in)) (i, list(i1, i2, … in))

list

struct

atom

set

Page 20: SGBD orientados a objetos

Identificador de objeto

Referencia única: cada objeto tiene un identificador único para toda su vida:

El identificador es independiente del valor. Permite compartir los objetos.

El identificador es un valor que permite identificar los objetos y crear grafos de composición (permitiendo ciclos).

Identidad e igualdad son dos conceptos diferentes.

Page 21: SGBD orientados a objetos

Objetos

Un objeto que representa a Francia:

(p1, struct( name: “France”,capital: v1,towns: set<v1, v2, v3>)

(v1, struct( name: "Paris", town_state: p1, population: 9000000))

(v2, struct( name: "Lyon", town_state: p1, population: 1260000))

(v3, struct( name: "Grenoble", town_state: p1, population: 400000))

Page 22: SGBD orientados a objetos

Grafo de composición de objetosp1

"France" set( • , • , • )

name towns

capital

"Paris" 9 000 000

town_statepopulation

v1

"Grenoble"400000

name

v3

"Lyon" 1 260 000

v2

population

population

town_state

town_state

name

name

Page 23: SGBD orientados a objetos

Clase

Objeto es una instancia de una clase Valor es una instancia de un tipo Métodos de clase

Country

tuple(name: string, capital: Town, towns: set(Town) )

r_name

w_name

r_capital

add_town

...

Page 24: SGBD orientados a objetos

Tipo

Tipos atómicos: integer ( 1, 36, -267 ) real ( 3.14159, -6.4E12 ) char (‘A’) string ( “buenos días“ ) boolean (true) y (false) bits (0, 1) nil

Constructores: struct, list, set, unique set

Tipos predefinidos: date, time, interval, timestamp

Page 25: SGBD orientados a objetos

Grafo de composición de clases

class Countrystruct( name: string, capital: Town, towns: set<Town> ) …end;

class Townstruct( name: string, town_state: Country, population: integer ) …end;

Town

Country

Page 26: SGBD orientados a objetos

ODMG: Object Model (1)

OBJECT: caracterizado por un tipo (INTERFACE) que le asocia un estado y un comportamiento. Un objeto es una instancia de una clase.

Estado: definido por un conjunto de valores que el objeto lleva en sus propiedades (atributos, y / o varios otros objetos). Los valores de las propiedades pueden cambiar a lo largo del tiempo.

Comportamiento: definido por un conjunto de operaciones ejecutables sobre el objeto.

Bases de datos: interfaces y clases definidas en ODL y objetos.

Page 27: SGBD orientados a objetos

ODMG: Object Model (2) Un tipo tiene una especificación externa (propiedades, operaciones,

excepciones) y una o varias implantaciones (aspectos internos).

INTERFACE: especificación abstracta del comportamiento.

CLASE: especificación abstracta del comportamiento y del estado.

INTERFACE CLASS Literal

Operaciones Estado (Propiedades)

Page 28: SGBD orientados a objetos

ODMG: Objeto

Un objeto tiene un identificador único (en una base)

Atomic_object definido por el usuario

Collection_object de tipo:set<t>, bag<t>, list<t>, array<t>, dictionary<t>

t puede ser un tipo de objeto o de literal

Structured_object

Date, Interval, Time, TimeStamp

Page 29: SGBD orientados a objetos

ODMG: LiteralUna Literal (valor) no tiene identificador. No es en general referenciable y está incluida en un objeto.

Atomic_literal:

long, float, boolean, char, string, short, octet, etc.

Collection_literal:

set<t>, bag<t>, list<t>, array<t>, dictionary<t>

Structured_literal:

date, interval, time, timestamp

Structure:

struct Address { unsigned short num;

string street; string city }

Page 30: SGBD orientados a objetos

ODMG: Jerarquía de tiposTipo Literal

Atomic_literal long, short float char string boolean enum<>

Collection_literal set <> bag <> list <> array <> dictionary <>

Structured_literal date time timestamp interval structure <>

Tipo Objeto

Atomic_object Collection_object

Set <> Bag <> List <> Array <> Dictionary <>

Structured_object Date Time Timestamp Interval

Nota: Atención con date, Date

Page 31: SGBD orientados a objetos

ODMG: Interfaz

interface Student-IF {attribute string name;attribute string student_id;attribute Address address;

relationship Set<Section> takes inverse Section::is_taken_by; boolean register_for_course(in unsigned short course,

in unsigned short Section) raises (unsatisfied_prerequisites, section_full, course_full)}

Student-IF define por una interfaz que especifica:

- los atributos (abstractos)

- las relaciones (o ligas) con otros tipos de objetos

- las operaciones

Page 32: SGBD orientados a objetos

ODMG: Atributo

Toma por valor una literal

Un atributo tiene un nombre y un tipo (de valores) asociados

No forzosamente almacenado

Ejemplo: atributo short edad en una interfaz significa que puede ser almacenado o calculado ... instrumentado como método

No hay referencia a través de los atributos

Page 33: SGBD orientados a objetos

ODMG: Asociaciones

Un objeto puede ser ligados con otros objetos a través de relaciones

Relaciones binarias y bi-direccionales 1-1, 1-N, N-M

Relación: par de encabezados con nombres de tipos y funciones de acceso en los dos sentidos

teaches en Professor y is_taught_by en Section funciones inversas una de otra

El sistema administra la integridad referencial

Section Professoris_taught_by

teaches

Page 34: SGBD orientados a objetos

ODMG: Clase (1)

Class Professor {

attribute string name;

attribute integer faculty_id;

attribute Salary annual_salary;

attribute enum Rank{full, associate,assistant} rank;

relationship Set<Section> teaches inverse Section::is_taught_by;

...

}

Estructuras de datos para la representación de las instancias.

Métodos que operan sobre estas estructures de datos.

Page 35: SGBD orientados a objetos

ODMG: Clase (2)

Class Section {

attribute string number;

relationship Professor is_taught_by inverse Professor::teaches;

...

}

struct Salary {

float base;

float overtime;

float bonus;

}

Page 36: SGBD orientados a objetos

Ejercicio

Bases de datos de películas, estrellas, estudios ... algunos elementos.

Cada película tiene un título, un año de fabricación, un tiempo (minutos), tipo (color, blanco y negro, etc.), tiene actores, pertenece a un estudio, etc.

Cada estrella tiene un nombre, una dirección y un role en la película, ...