1.1.3. el estándar odmg

26
El modelo estándar ODMG

Upload: samuel-a-calderon

Post on 05-Dec-2014

79 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1.1.3. El estándar ODMG

El modelo estándar

ODMG

Page 2: 1.1.3. El estándar ODMG

ODMG

• ODMG – Object Database ManagementGroup

• Año 2000 aparece ODMG 3.0– Modelo de objetos– Lenguaje de definición de objetos – ODL– Lenguaje de consulta de objetos – OQL– Conexión con los lenguajes C++, Smaltalk y

Java

Page 3: 1.1.3. El estándar ODMG

Modelo de objetos• ODMG permite que tanto los diseños como las

implementaciones sean portables• Primitivas de modelado

– Objetos • Instancia autocontenida de una entidad de interés del mundo

real.• Tienen un identificador único

– Literales• Valor especifico. “Amparo”, “36”• No tienen identificador• No tienen porque ser un solo valor, puede ser una estructura

o un conjunto de valores relacionados

Page 4: 1.1.3. El estándar ODMG

Modelo de objetos• Objetos y literales se categorizan en tipos

– Los tipos pueden tener comportamiento Clase• Los objetos saben realizar sus operaciones

– Pueden requerir:• Parámetros de entrada• Devolver algún valor de tipo conocido

• Los objetos tienen propiedades– Atributos– Relaciones con otros objetos

• Una BD es un conjunto de objetos almacenados que se gestionan de modo que puedan ser accedidos por múltiples usuarios y aplicaciones

Page 5: 1.1.3. El estándar ODMG

Objetos• Tipos de objetos

– Atómicos– Tipos estructurados

• date: fecha del calendario (día, mes, año)• time: hora (hora, minutos y segundos)• timestamp: hora de una fecha (con precisión de microsegundos)• interval: periodo de tiempo

– Colecciones <interface Collection>• set<tipo>

– Grupo desordenado de objetos. No permite duplicados• bag<tipo>

– Grupo desordenado de objetos. Permite duplicados• list<tipo>

– Grupo ordenado de objetos. Permite duplicados• array<tipo>

– Grupo ordenado de objetos que se pueden acceder por su posición. Tamaño dinámico. Inserciones y borrados en cualquier posición

• dictionary<clave,valor>– Es como un índice. Claves ordenadas, cada una de ellas emparejada con un solo

valor

Page 6: 1.1.3. El estándar ODMG

Objetos• Método new() para crear objetos• Heredan de la inteface Object

• Identificador único de objeto que no cambia ni se reutiliza cuando se borra

• Objetos transitorios y persistentes

Page 7: 1.1.3. El estándar ODMG

Literales• No tienen identificadores• No pueden aparecer como objetos, están embebidos en ellos• No se pueden referenciar de modo individual• Tipos de literales

– Atómicos• boolean : un valor que es verdadero o falso• short : un entero con signo, normalmente de 8 o 16 bits• long : un entero con signo, normalmente de 32 o 64 bits• unsigned short : un entero sin signo, normalmente de 8 o 16 bits• unsigned long : un entero sin signo, normalmente de 32 o 64 bits• float : un valor real en coma flotante de simple precisión• double : un valor real en coma flotante de doble precisión• octet : un almacén de 8 bits.• char : un carácter ASCII o UNICODE.• string : una cadena de caracteres.• enum : un tipo enumerado donde los valores se especifican explícitamente

cuando se declara el tipo

Page 8: 1.1.3. El estándar ODMG

Literales– Colecciones

• set<tipo>• bag<tipo>• list<tipo>• array<tipo>• dictionary<clave,valor>

– Estructurados• Número fijo de elementos heterogéneos de la forma <nombre,

valor>• date• time• timestamp• interval• struct

– Nulos

Page 9: 1.1.3. El estándar ODMG

Tipos• Interface

– Especificación del comportamiento abstracto de un tipo de objeto y contiene las signaturas de las operaciones

– Puede tener propiedades (atributos y relaciones) como parte de su especificación, éstas no pueden ser heredadas desde la interface

– No es instanciable por lo que no se pueden crear objetos a partir de ella (es el equivalente de una clase abstracta en la mayoría de los lenguajes de programación)

• Clase – Especificación del comportamiento abstracto y del estado abstracto de un tipo

de objeto– Instanciables, por lo que a partir de ellas se pueden crear instancias de objetos

individuales (es el equivalente a una clase concreta en los lenguajes de programación)

– El estándar soporta la herencia simple y la herencia múltiple mediante las interfaces.

• Ya que las interfaces no son instanciables, se suelen utilizar para especificar operaciones abstractas que pueden ser heredadas por clases o por otras interfaces. A esto se le denomina herencia de comportamiento y se especifica mediante el símbolo “:”

• La herencia de comportamiento requiere que el supertipo sea una interface, mientras que el subtipo puede ser una clase o una interface.

Page 10: 1.1.3. El estándar ODMG

Tipos– La herencia es una relación “es un”

– La interface o clase más baja de la jerarquía es el tipo más específico

– Se puede hacer referencia a los subtipos como a los supertipos• Esto hace que sea más sencillo tratar los subtipos como un grupo

cuando sea necesario.– Los subtipos se pueden especializar añadiéndoles

comportamientos que se heredará por subtipos de este

Page 11: 1.1.3. El estándar ODMG

Tipos– La relación extiende (extends) indica la herencia de estado y de

comportamiento• El subtipo y el supertipo deben ser clases

– Las clases que extienden a otra clase ganan acceso a todos los estados y comportamientos del supertipo, incluyendo cualquier cosa que el supertipo haya adquirido a través de la herencia de otras interfaces

– Una clase puede extender, como máximo, a otra clase. • Si se construye una jerarquía de extensiones, las clases de más abajo en la

jerarquía heredan todo lo que sus supertipos heredan de las clases que tienen por encima

– La extensión de un tipo tiene un nombre e incluye todas las instancias de objetos persistentes creadas a partir de dicho tipo

• Declarar una extensión denominada empleados para el tipo de objeto Empleado es similar a crear un objeto de tipo Set<Empleado> denominado empleados

– Una extensión se puede indexar para que el acceso a su contenido sea más rápido

– Una clase con una extensión puede tener una o más claves (key)• A diferencia del modelo relacional, las claves únicas no son un requisito

Page 12: 1.1.3. El estándar ODMG

Tipos• Implementación de un tipo consta de dos partes

– Representación• Estructura de datos dependiente de un lenguaje de programación

que contiene las propiedades del tipo• Las especificaciones de la implementación vienen de una conexión

con un lenguaje (language binding)– Métodos

• Detalles de las operaciones de un tipo• En la especificación externa de cada operación debe haber al

menos un método• Un tipo puede incluir métodos que nunca se ven desde fuera del

tipo que realizan funciones para otros métodos del tipo• Se escribirán en el mismo lenguaje de programación utilizado para

expresar la representación del tipo– Si una BD soporta aplicaciones programadas en C++, Java y Smalltalk,

es necesario tener 3 implementaciones para cada tipo

Page 13: 1.1.3. El estándar ODMG

Propiedades• Atributos

– Se define del tipo de un objeto– No tiene identificador– Valores: literal o OID

• Relaciones– Se definen entre tipos– Solo relaciones binarias 1:1, 1:n, n:m– No tiene nombre– Define caminos transversales en la interface en cada dirección

(set, bag o list en el lado de m)– Integridad mantenida por SGBD– form añade miembros a una relación– drop elimina miembros a una relación

Page 14: 1.1.3. El estándar ODMG

Transacciones• Unidades lógicas de trabajo que dejan la BD en estado

consistente• Secuencia lineal que se ejecutan de modo controlado• Concurrencia

– Bloqueos lectura/escritura• Todas las operaciones sobre objetos persistentes se

realizan dentro de una transacción• Control de transacciones

– commit para iniciar/terminar transacciones– rollback para abortar transacciones– checkpoint para hacer permanentes los cambios de la

transacción actual sin liberar los bloqueos

Page 15: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

• Es el equivalente a DDL de los SGBDR• Define

– Atributos– Relaciones entre tipos– Signatura de operaciones

• Extiende de la definición de interfaces IDL de CORBA

Page 16: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 17: 1.1.3. El estándar ODMG

Personanom _Persona : s tructdni : Stringfecha_Nac : Dategenero : enumdireccion : s truct

edad() : FLOAT

Tituloescuela : Stringtitulo : Stringaño : String

Es tudianteGradtitulos : set<Titulos>

as ignar_tutor(apellido1 : String, apellido2 : String)as ignar_m iem bro(apellido1 : String, apellido2 : String)

Profesorcategoria : S tringsalario : FLOATdespacho : Stri ngtelefono : S tring

aum entar_s alar io(aumento : FLOAT)prom ocionar(nueva_categoria : Stri ng)

<<extend>>

0..*

1

0..*

1

tutoriza

0..*

0..*

0..*

0..*

en_com ite

Departam entonom bre : Stringtelefono : Stringdespacho : Stringescuela : Stringdirector : Profesor

0..*0..*

Edic ionActual

m atricular_es tudiante()

Es tudiantetitulacion : String

nota_m edia() : FLOATm atricularse(num _edic : Integer)cal ificar(num _edic : Integer, nota : FLOAT)

<<exten d>> 0..*0..*

Califi cacionnota : FLOAT

1

1..*

1

1..*

ediciones_cursadas

Edicionnum _edic : Integeraño : Integersem es tre : enum

1

0..*

1

0..*

Cursonom bre : Stringnum _curso : Stringdescripcion : String

0..*

1

0..*

1

oferta

1..*

1

1..*

1

<<extend>>

Lenguajes de definición de objetos: ODL

Page 18: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 19: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 20: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 21: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 22: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 23: 1.1.3. El estándar ODMG

Lenguajes de definición de objetos: ODL

Page 24: 1.1.3. El estándar ODMG

Lenguaje de consulta de objetos: OQL

• Lenguaje declarativo similar a SQL• Basado en SQL-92

– Superconjunto de SELECT• No modifica estado de los objetos

– Se hace mediante los métodos• SELECT … FROM … WHERE …

Page 25: 1.1.3. El estándar ODMG

Lenguaje de consulta de objetos: OQL

• El resultado es de tipo bag<Tipo>• Si se utiliza DISTINCT el resultado es set<Tipo>• Especificación de iteradores

– d in departamentos– departamentos d– departamentos as d

Page 26: 1.1.3. El estándar ODMG

Lenguaje de consulta de objetos: OQL

• El resultado de una consulta puede ser de cualquier tipo soportado por ODMG

• Una consulta no tiene porque ser un SELECT– Ej: departamentos;

• Iteradores