sgbd orientados a objetos basado en el curso del dr. jose luis zechinelli martini, udlap

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

Upload: sofia-quinones

Post on 23-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

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

SGBD orientados a objetos

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

Page 2: 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: 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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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 Basado en el curso del Dr. Jose Luis Zechinelli Martini, UDLAP

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, ...