SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Curso de Doctorado: Tecnologías 
de Objetos 
Grupo IMO 
Área de Lenguajes y Sistemas Informáticos 
Departamento de Informática 
J. Baltasar García Perez-Schofield 
http://webs.uvigo.es/jbgarcia/
Persistencia
Persistencia 
➲ Persistencia es el término utilizado para la 
salvaguarda y recuperación de datos, 
concretamente, de objetos. 
➲ La mayoría de las aplicaciones siguen una 
estructura sencilla de funcionamiento: 
recuperación de datos de una anterior 
ejecución, procesado, y salvaguarda de los 
nuevos datos.
Terminología 
➲ Serialización: guardar el estado de un 
objeto directamente como una secuencia 
de bytes en un archivo en disco. 
➲ Swizzling: conversión de punteros, de su 
formato en disco a su formato en memoria, 
y viceversa. 
➲ Activación: Carga en memoria de un objeto 
que reside en disco. 
➲ Pasivación: Salvaguarda en disco de un 
objeto que reside en memoria.
Persistencia 
➲ El proceso de recuperación se denomina 
unflattening, desaplanar, y el de salvaguarda 
flattening (aplanar). 
➲ Lo que está sucediendo en realidad en ambos 
procesos es una codificación de los datos 
contenidos en los objetos de la aplicación a un 
fichero, y viceversa. 
➲ ¿Por qué no guardar directamente los objetos, y 
recuperarlos cuando sea necesario?
Salvaguarda de objetos 
➲ Depende del lenguaje en el que se esté 
trabajando: 
● JAVA: posee un sistema de serialización de 
objetos a disco, más o menos automático. 
● C++: no posee ningún sistema de serialización, 
utilizándose mecanismos que tienen como base la 
grabación directa de objetos a disco: 
● fwrite(&objeto, sizeof(objeto), 1,Fichero)
Recuperación de objetos 
➲ En los lenguajes como C++, sólo puede 
recuperarse el estado de un objeto guardado 
previamente; sin embargo no puede saberse a qué 
clase pertenece el objeto, y ni siquiera si es un 
objeto. 
➲ En lenguajes como Java, la recuperación es un 
poco mejor, puesto que podemos obtener el 
archivo .class y el de datos; sin embargo, la 
recuperación y el tratamiento de estos archivos sólo 
es realmente sencillo si es la misma aplicación que 
los grabó la que los va a utilizar.
Persistencia: dificultades en los 
lenguajes orientados a objetos 
actuales 
➲ La mayor parte de los lenguajes permiten, hoy en 
día, serializar el estado de un objeto a un archivo 
en disco. 
➲ Sin embargo, la simple serialización del estado no es 
suficiente para poder trabajar con un objeto 
guardado. La serialización es necesaria para 
obtener persistencia, si bien la serialización por sí 
misma no es persistencia. 
➲ La mayoría de estos mecanismos, incluyendo el de 
Java, están en la práctica limitados a objetos que 
contienen datos “directos”, siendo incapaces de 
manejar objetos compuestos (complejos).
La verdadera naturaleza de la 
persistencia 
➲ La investigación en persistencia trata de ir un paso 
más allá que la idea inicial de guardar objetos en 
archivos de la misma forma que es posible guardar 
todo tipo de datos en ellos. 
➲ Se trata de proporcionar un mecanismo tan 
automático como sea posible para la recuperación y 
salvaguarda de objetos, resultando por tanto 
obsoletos los conceptos de: 
● Archivo: ya no es necesario. 
● Distinción entre memoria primaria y secundaria: ya no es 
necesaria.
Breve revisión histórica 
➲ Las bases de datos orientadas a objetos 
empiezan a ser investigadas y 
desarrolladas a finales de los años 70. 
➲ Desde entonces, empieza a trasladarse el 
concepto de persistencia a los SSOO y a 
los lenguajes de programación. 
➲ La persistencia pierde buena parte de su 
fuerza investigadora mediados los 90.
Persistencia Ortogonal 
➲ Un objeto puede ser persistente, 
independientemente de la clase a la que 
pertenece. 
➲ Los objetos deben ser tratados 
homogéneamente, sean persistentes o no 
persistentes. 
➲ La decisión de si un objeto es persistente la 
toma el sistema, en base a un mecanismo 
de alcanzabilidad desde una raíz 
persistente.
Persistencia: ¿por qué no triunfó? 
➲ Compatibilidad hacia atrás: un excesivo 
número de sistemas se basan en un 
sistema de ficheros. 
➲ Desconfianza: desaparece el fichero para 
ser sustituido por una parte del sistema que 
lo gestiona sin poder intervenir. 
➲ Rendimiento: los sistemas persistentes no 
son tan eficientes como los sistemas no 
persistentes.
Mecanismos y técnicas necesarias 
para persistencia 
➲ Swizzling (conversión de punteros) 
➲ Clustering (agrupación de objetos en el al-macenamiento 
persistente) 
● ¿Cómo agrupar los objetos para que al leer cada 
grupo (cluster), leamos los necesarios para que 
los siguientes procesos no supongan acceso al 
disco? 
➲ Schema evolution (evolución del esquema) 
● ¿cómo reaccionar cuando una clase cambia? 
➲ Técnicas de caché de objetos 
➲ Seguridad
Clustering 
➲ El clustering o agrupamiento, trata de cómo 
agrupar los objetos en el almacenamiento 
persistente. 
➲ En las bases de datos relacionales nunca 
se lee realmente un registro en una op-eración 
de lectura, e incluso en ficheros 
normales del sistema operativo, nunca se 
leen un byte o cuatro bytes, sino que se lee 
en bloques de un tamaño predeterminado. 
➲ De esta forma, se espera que los datos ya 
en memoria satisfagan posteriores opera-ciones 
de lectura sin recurrir al disco.
Clustering 
➲ Por tanto, se agrupan los objetos en blo-ques, 
de forma que cuando se guardan se 
guarda ese bloque completo, y cuando se 
recuperan, se recupera también ese bloque 
completo. 
➲ El punto clave es establecer una política de 
agrupamiento que minimice el número de 
lecturas necesarias para trabajar con esos 
objetos.
Clustering 
➲ Deben ser necesarias las 
menos operaciones de 
lectura posibles para tra-bajar 
con esos objetos. 
➲ En la primera, sólo es 
necesario cargar 1 cluster. 
➲ En la segunda, dos clus-ters. 
➲ En la segunda, también 
dos clusters.
Clustering 
➲ Con la primera política de clustering, sólo 
es necesario leer un cluster. Sin embargo, 
no es posible colocar todos los objetos del 
almacenamiento persistente en un solo 
cluster. 
➲ Con la segunda política, se guardan las 
clases en un cluster y los objetos en otro. 
➲ La tercera es bastante habitual, y tiene que 
ver muchas veces con el momento de 
creación de los objetos: se trata de colocar 
en el mismo cluster a una clase y a sus ob-jetos.
Clustering 
➲ Existen algunas técnicas adaptativas, que 
mediante cálculos de tipo estadístico, colo-can 
a los objetos en sus clusters corre-spondientes 
según cuántas veces se utili-cen 
juntos. 
➲ Estas técnicas estadísticas han demostrado 
ser muy lentas.
Clustering 
➲ Una solución de compromiso es dejar que 
le usuario indique cuándo dos o más obje-tos 
deben guardarse en el mismo cluster. 
● El estándar ODMG 3.0 añade sintaxis que permite 
especificar esta circunstancia. Es muy poco 
transparente. 
● Barbados utiliza una metáfora de directorios, de 
forma que cada contenedor es un directorio. Así, 
el mismo usuario escoge el directorio donde va a 
colocar los objetos, y por tanto el clustering de los 
mismos, igual que en directorios en disco, de 
archivos.
Swizzling 
➲ El swizzling, (término intraducible), trata de 
la conversión de punteros entre su formato 
en disco y su formato (natural) como direc-ción 
de memoria, y viceversa. 
➲ El puntero (como la referencia de Java o el 
puntero, propiamente, de C++) suele susti-tuirse 
por un OID (OBject Identifier), para de 
esa forma restaurarlo cuando se cargue de 
nuevo el objeto. 
➲ Existen dos estrategias básicas para con-vertir 
los punteros en la fase de carga: 
● Eager (o temprana, o incluso deseosa). 
● Lazy (o tardía, o incluso, perezosa).
Swizzling 
➲ Cuando se guardan 
objetos, se susti-tuyen 
sus punteros 
por OID's. 
➲ El proceso contrario 
sucede cuando se 
cargan esos objetos 
en memoria.
Swizzling eager/lazy 
➲ Eager (temprano, deseoso) 
● En cuanto se cargan uno o más objetos, todas sus ref-erencias 
son resueltas. 
● Barbados utiliza un sistema mixto: cuando un contenedor es 
cargado, todas las referencias dentro de él son convertidas. Sin 
embargo, el contenedor es sólo una parte del almacenamiento 
persistente. 
➲ Lazy (tardío, perezoso) 
● Los objetos son cargados y tan sólo las referencias mín-imas 
son resueltas (quizás, ninguna). Sólo cuando las 
referencias son empleadas, éstas son convertidas. 
● Oberon-D utiliza un sistema de swizzling lazy. Cuando una ref-erencia 
provoca un error de “objeto no encontrado”, Oberon-D 
examina si está sin convertir (unswizzled). En tal caso, la con-vierte 
y continúa la ejecución.
Evolución del esquema 
(Schema Evolution) 
➲ Se trata del mismo problema que sucede 
cuando en una base de datos relacional se 
cambia una tabla: todos los registros de esa 
tabla deben ser adaptados. 
➲ En una base de datos orientada a objetos, o 
en un almacenamiento persistente, éste 
problema sucede cuando una clase cambia, 
es decir, es modificada. Todos sus objetos 
deben cambiarse también.
Evolución del esquema 
➲ También existen dos políticas de evolución 
del esquema, con las mismas premisas que 
en el mecanismo de swizzling. 
● Eager: Todos los objetos son convertidos en el 
mismo momento en el que se detecta la modifi-cación 
de la clase. 
● Lazy: Los objetos de la clase modificada son con-vertidos 
a medida que van siendo utilizados.
Evolución del esquema 
➲ Eager: 
● PJama proporciona una solución eager a este 
problema: existe una herramienta de línea de co-mando 
que se encarga de, pasándole el archivo . 
class de la nueva clase, y una función de conver-sión, 
sustituir la clase en cuestión y aplicar la fun-ción 
de conversión a todos los objetos afectados. 
La función de conversión tiene la ventaja de per-mitir 
transformaciones complejas entre objetos an-teriores 
y objetos nuevos. Lo mejor de este méto-do 
es que todos los objetos son convertidos una 
vez finalizado el trabajo de la herramienta. Lo peor 
es que, mientras se ejecute está conversión de 
objetos, el sistema no podrá ser usado.
Evolución del esquema 
➲ Lazy: 
● O2 proporciona una solución lazy a este proble-ma: 
cada transformación de la case es anotada, y 
a medida que se carguen los objetos de esa 
clase, los objetos son convertidos. La mayor ven-taja 
es que la conversión de objetos no supone 
que el sistema precise de estar fuera de uso. La 
mayor desventaja es que conviven objetos de 
diferentes versiones de las clases en el almace-namiento 
persistente, y que es posible que una 
clase sea modificada varias veces antes de que 
todos sus objetos sean convertidos, por lo que 
será necesario guardar todas las transforma-ciones 
que haya sufrido la clase.
Evolución del esquema 
➲ Intermedio eager/lazy: 
● Barbados proporciona una solución intermedia a 
este problema: cuando una clase cambia, todos 
los objetos de esa clase que existan en su mismo 
contenedor son convertidos. A medida que los 
contenedores con objetos de esa clase son car-gados, 
los objetos van siendo convertidos, pudi-endo 
definirse una función de conversión. Trata 
de aunar las ventajas de ambos sistemas: no to-dos 
los objetos del almacenamiento persistente 
son convertidos, sino sólo una parte cada vez. Por 
otro lado, todos los objetos están listos para ser 
usados una vez que el contenedor ha sido carga-do.
Aplicaciones de persistencia 
➲ OOOS (Object-Oriented Operating Systems): Sistemas op-erativos 
orientados a objetos. 
● EROS (http://www.eros-os.org/) 
● GRASSHOPPER ( 
http://www.gh.cs.su.oz.au/Grasshopper/) 
➲ OOPPS (Object-Oriented Persistent Programming 
Systems): Sistemas de programación orientada a objetos 
persistentes. 
● Barbados ( 
http://www.lsi.uvigo.es/lsi/erosello/imo/Imospain/pers.html) 
● Pjama (http://www.dcs.gla.ac.uk/pjava/) 
● Oberon-D ( 
http://www.ssw.uni-linz.ac.at/Research/Projects/OberonD.html) 
➲ OODBMS (Object-Oriented Database Management Sys-tems): 
Sistemas gestores de bases de datos orientadas a 
objetos. 
● O2 (http://www.dbis.informatik.uni-frankfurt.de/REPORTS/GOODSTEP/goodstep.html)
Bibliografía 
➲ Persistencia ortogonal 
● Atkinson M.P., Morrison R. (1995). “Orthogonality 
Persistent Object System”, VLDB Journal v4 n3, 
pp319-401, ISSN: 1066-8888 
● Se trata de la primera publicación que asienta unas 
bases (tres, en concreto), para cualquier tipo de im-plementación 
de persistencia en cualquier sistema. 
● Ortogonalidad (independencia) de: 
● tipo 
● trato 
● designación de objetos persistentes
Bibliografía 
➲ ODMG 3.0 
● http://www.odmg.org 
● Cattel R., Barry D., (eds.), (2003). “The Object 
Data Standard: ODMG 3.0”. Morgan Kaufmann 
Publishers. ISBN 1-55860-647-4 
● ODMG es el estándar que siguen muchas empre-sas 
que venden bases de datos relacionales con 
capas de abstracción de objetos, como ORACLE. 
● También hay implementaciones tipo JDBC para 
Java que siguen este estándar.
Bibliografía 
➲ PJama 
● Sun research: 
● http://www.sunlabs.com/forest/index.html 
● Universidad de Glasgow: 
● http://www.dcs.gla.ac.uk/pjava/ 
● PJama, o Java persistente, fue un proyecto termi-nado 
en Septiembre del 2000 para soportar per-sistencia 
ortogonal en Java. 
● Fue dirigido por históricos investigadores de la 
persistencia 
● No es completamente ortogonal (viola la segunda 
y la tercera regla), ya que se buscaba compatibili-dad 
hacia atrás con los programas existentes en 
Java.
Curso de Doctorado: Tecnologías 
de Objetos 
Grupo IMO 
Área de Lenguajes y Sistemas Informáticos 
Departamento de Informática 
J. Baltasar García Perez-Schofield 
http://webs.uvigo.es/jbgarcia/

Más contenido relacionado

Similar a Curso de doctorado Tecnología de Objetos: Persistencia.

Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
Wally IG
 
Java persistence
Java persistenceJava persistence
Java persistence
cabraval
 
ZabalaOrellanaRael2,Flyweight.pptx
ZabalaOrellanaRael2,Flyweight.pptxZabalaOrellanaRael2,Flyweight.pptx
ZabalaOrellanaRael2,Flyweight.pptx
NakzeNFno
 
ZabalaOrellanaRael,Flyweight.pptx
ZabalaOrellanaRael,Flyweight.pptxZabalaOrellanaRael,Flyweight.pptx
ZabalaOrellanaRael,Flyweight.pptx
NakzeNFno
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
Jonathan Macías
 
Manual hibernate
Manual hibernateManual hibernate
Manual hibernate
shimbosan17
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
Rokr02
 

Similar a Curso de doctorado Tecnología de Objetos: Persistencia. (20)

Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
 
Java persistence
Java persistenceJava persistence
Java persistence
 
ZabalaOrellanaRael2,Flyweight.pptx
ZabalaOrellanaRael2,Flyweight.pptxZabalaOrellanaRael2,Flyweight.pptx
ZabalaOrellanaRael2,Flyweight.pptx
 
ZabalaOrellanaRael,Flyweight.pptx
ZabalaOrellanaRael,Flyweight.pptxZabalaOrellanaRael,Flyweight.pptx
ZabalaOrellanaRael,Flyweight.pptx
 
12 b capitulo_4_fi_v1
12 b capitulo_4_fi_v112 b capitulo_4_fi_v1
12 b capitulo_4_fi_v1
 
Termino de programacion
Termino de programacionTermino de programacion
Termino de programacion
 
Gestion de archivos Iuta
Gestion de archivos IutaGestion de archivos Iuta
Gestion de archivos Iuta
 
Poo3
Poo3Poo3
Poo3
 
13 b capitulo_4_fi_v1
13 b capitulo_4_fi_v113 b capitulo_4_fi_v1
13 b capitulo_4_fi_v1
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
 
Manual hibernate
Manual hibernateManual hibernate
Manual hibernate
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y java
 
Colecciones, Arrays y Errores en VB
Colecciones, Arrays y Errores en VBColecciones, Arrays y Errores en VB
Colecciones, Arrays y Errores en VB
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y ...
Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y ...Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y ...
Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y ...
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Prototype-based programming with PROWL.
Prototype-based programming with PROWL.Prototype-based programming with PROWL.
Prototype-based programming with PROWL.
 
Curso de Java Intermedio
Curso de Java IntermedioCurso de Java Intermedio
Curso de Java Intermedio
 
Welean unisabaneta - ENTREGA FInal - como organizar los archivos en mi comput...
Welean unisabaneta - ENTREGA FInal - como organizar los archivos en mi comput...Welean unisabaneta - ENTREGA FInal - como organizar los archivos en mi comput...
Welean unisabaneta - ENTREGA FInal - como organizar los archivos en mi comput...
 

Más de Baltasar García Perez-Schofield

Más de Baltasar García Perez-Schofield (8)

Presentación ESEI para IES Lauro Olmo
Presentación ESEI para IES Lauro OlmoPresentación ESEI para IES Lauro Olmo
Presentación ESEI para IES Lauro Olmo
 
Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...
 
Post-graduate course: Object technology: Persistence.
Post-graduate course: Object technology: Persistence.Post-graduate course: Object technology: Persistence.
Post-graduate course: Object technology: Persistence.
 
Post-graduate course: Object technology: Implementation of object-oriented pr...
Post-graduate course: Object technology: Implementation of object-oriented pr...Post-graduate course: Object technology: Implementation of object-oriented pr...
Post-graduate course: Object technology: Implementation of object-oriented pr...
 
Prototype-based, object-oriented programming
Prototype-based, object-oriented programmingPrototype-based, object-oriented programming
Prototype-based, object-oriented programming
 
Learning object-oriented programming trough a visual tool at Cisti 2008
Learning object-oriented programming trough a visual tool at Cisti 2008Learning object-oriented programming trough a visual tool at Cisti 2008
Learning object-oriented programming trough a visual tool at Cisti 2008
 
Charla invitada en oviedo: Evolución del soporte de persistencia
Charla invitada en oviedo: Evolución del soporte de persistenciaCharla invitada en oviedo: Evolución del soporte de persistencia
Charla invitada en oviedo: Evolución del soporte de persistencia
 
Cp3-- A module support tool for C++
Cp3-- A module support tool for C++Cp3-- A module support tool for C++
Cp3-- A module support tool for C++
 

Último

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 

Último (20)

Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 

Curso de doctorado Tecnología de Objetos: Persistencia.

  • 1. Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez-Schofield http://webs.uvigo.es/jbgarcia/
  • 3. Persistencia ➲ Persistencia es el término utilizado para la salvaguarda y recuperación de datos, concretamente, de objetos. ➲ La mayoría de las aplicaciones siguen una estructura sencilla de funcionamiento: recuperación de datos de una anterior ejecución, procesado, y salvaguarda de los nuevos datos.
  • 4. Terminología ➲ Serialización: guardar el estado de un objeto directamente como una secuencia de bytes en un archivo en disco. ➲ Swizzling: conversión de punteros, de su formato en disco a su formato en memoria, y viceversa. ➲ Activación: Carga en memoria de un objeto que reside en disco. ➲ Pasivación: Salvaguarda en disco de un objeto que reside en memoria.
  • 5. Persistencia ➲ El proceso de recuperación se denomina unflattening, desaplanar, y el de salvaguarda flattening (aplanar). ➲ Lo que está sucediendo en realidad en ambos procesos es una codificación de los datos contenidos en los objetos de la aplicación a un fichero, y viceversa. ➲ ¿Por qué no guardar directamente los objetos, y recuperarlos cuando sea necesario?
  • 6. Salvaguarda de objetos ➲ Depende del lenguaje en el que se esté trabajando: ● JAVA: posee un sistema de serialización de objetos a disco, más o menos automático. ● C++: no posee ningún sistema de serialización, utilizándose mecanismos que tienen como base la grabación directa de objetos a disco: ● fwrite(&objeto, sizeof(objeto), 1,Fichero)
  • 7. Recuperación de objetos ➲ En los lenguajes como C++, sólo puede recuperarse el estado de un objeto guardado previamente; sin embargo no puede saberse a qué clase pertenece el objeto, y ni siquiera si es un objeto. ➲ En lenguajes como Java, la recuperación es un poco mejor, puesto que podemos obtener el archivo .class y el de datos; sin embargo, la recuperación y el tratamiento de estos archivos sólo es realmente sencillo si es la misma aplicación que los grabó la que los va a utilizar.
  • 8. Persistencia: dificultades en los lenguajes orientados a objetos actuales ➲ La mayor parte de los lenguajes permiten, hoy en día, serializar el estado de un objeto a un archivo en disco. ➲ Sin embargo, la simple serialización del estado no es suficiente para poder trabajar con un objeto guardado. La serialización es necesaria para obtener persistencia, si bien la serialización por sí misma no es persistencia. ➲ La mayoría de estos mecanismos, incluyendo el de Java, están en la práctica limitados a objetos que contienen datos “directos”, siendo incapaces de manejar objetos compuestos (complejos).
  • 9. La verdadera naturaleza de la persistencia ➲ La investigación en persistencia trata de ir un paso más allá que la idea inicial de guardar objetos en archivos de la misma forma que es posible guardar todo tipo de datos en ellos. ➲ Se trata de proporcionar un mecanismo tan automático como sea posible para la recuperación y salvaguarda de objetos, resultando por tanto obsoletos los conceptos de: ● Archivo: ya no es necesario. ● Distinción entre memoria primaria y secundaria: ya no es necesaria.
  • 10. Breve revisión histórica ➲ Las bases de datos orientadas a objetos empiezan a ser investigadas y desarrolladas a finales de los años 70. ➲ Desde entonces, empieza a trasladarse el concepto de persistencia a los SSOO y a los lenguajes de programación. ➲ La persistencia pierde buena parte de su fuerza investigadora mediados los 90.
  • 11. Persistencia Ortogonal ➲ Un objeto puede ser persistente, independientemente de la clase a la que pertenece. ➲ Los objetos deben ser tratados homogéneamente, sean persistentes o no persistentes. ➲ La decisión de si un objeto es persistente la toma el sistema, en base a un mecanismo de alcanzabilidad desde una raíz persistente.
  • 12. Persistencia: ¿por qué no triunfó? ➲ Compatibilidad hacia atrás: un excesivo número de sistemas se basan en un sistema de ficheros. ➲ Desconfianza: desaparece el fichero para ser sustituido por una parte del sistema que lo gestiona sin poder intervenir. ➲ Rendimiento: los sistemas persistentes no son tan eficientes como los sistemas no persistentes.
  • 13. Mecanismos y técnicas necesarias para persistencia ➲ Swizzling (conversión de punteros) ➲ Clustering (agrupación de objetos en el al-macenamiento persistente) ● ¿Cómo agrupar los objetos para que al leer cada grupo (cluster), leamos los necesarios para que los siguientes procesos no supongan acceso al disco? ➲ Schema evolution (evolución del esquema) ● ¿cómo reaccionar cuando una clase cambia? ➲ Técnicas de caché de objetos ➲ Seguridad
  • 14. Clustering ➲ El clustering o agrupamiento, trata de cómo agrupar los objetos en el almacenamiento persistente. ➲ En las bases de datos relacionales nunca se lee realmente un registro en una op-eración de lectura, e incluso en ficheros normales del sistema operativo, nunca se leen un byte o cuatro bytes, sino que se lee en bloques de un tamaño predeterminado. ➲ De esta forma, se espera que los datos ya en memoria satisfagan posteriores opera-ciones de lectura sin recurrir al disco.
  • 15. Clustering ➲ Por tanto, se agrupan los objetos en blo-ques, de forma que cuando se guardan se guarda ese bloque completo, y cuando se recuperan, se recupera también ese bloque completo. ➲ El punto clave es establecer una política de agrupamiento que minimice el número de lecturas necesarias para trabajar con esos objetos.
  • 16. Clustering ➲ Deben ser necesarias las menos operaciones de lectura posibles para tra-bajar con esos objetos. ➲ En la primera, sólo es necesario cargar 1 cluster. ➲ En la segunda, dos clus-ters. ➲ En la segunda, también dos clusters.
  • 17. Clustering ➲ Con la primera política de clustering, sólo es necesario leer un cluster. Sin embargo, no es posible colocar todos los objetos del almacenamiento persistente en un solo cluster. ➲ Con la segunda política, se guardan las clases en un cluster y los objetos en otro. ➲ La tercera es bastante habitual, y tiene que ver muchas veces con el momento de creación de los objetos: se trata de colocar en el mismo cluster a una clase y a sus ob-jetos.
  • 18. Clustering ➲ Existen algunas técnicas adaptativas, que mediante cálculos de tipo estadístico, colo-can a los objetos en sus clusters corre-spondientes según cuántas veces se utili-cen juntos. ➲ Estas técnicas estadísticas han demostrado ser muy lentas.
  • 19. Clustering ➲ Una solución de compromiso es dejar que le usuario indique cuándo dos o más obje-tos deben guardarse en el mismo cluster. ● El estándar ODMG 3.0 añade sintaxis que permite especificar esta circunstancia. Es muy poco transparente. ● Barbados utiliza una metáfora de directorios, de forma que cada contenedor es un directorio. Así, el mismo usuario escoge el directorio donde va a colocar los objetos, y por tanto el clustering de los mismos, igual que en directorios en disco, de archivos.
  • 20. Swizzling ➲ El swizzling, (término intraducible), trata de la conversión de punteros entre su formato en disco y su formato (natural) como direc-ción de memoria, y viceversa. ➲ El puntero (como la referencia de Java o el puntero, propiamente, de C++) suele susti-tuirse por un OID (OBject Identifier), para de esa forma restaurarlo cuando se cargue de nuevo el objeto. ➲ Existen dos estrategias básicas para con-vertir los punteros en la fase de carga: ● Eager (o temprana, o incluso deseosa). ● Lazy (o tardía, o incluso, perezosa).
  • 21. Swizzling ➲ Cuando se guardan objetos, se susti-tuyen sus punteros por OID's. ➲ El proceso contrario sucede cuando se cargan esos objetos en memoria.
  • 22. Swizzling eager/lazy ➲ Eager (temprano, deseoso) ● En cuanto se cargan uno o más objetos, todas sus ref-erencias son resueltas. ● Barbados utiliza un sistema mixto: cuando un contenedor es cargado, todas las referencias dentro de él son convertidas. Sin embargo, el contenedor es sólo una parte del almacenamiento persistente. ➲ Lazy (tardío, perezoso) ● Los objetos son cargados y tan sólo las referencias mín-imas son resueltas (quizás, ninguna). Sólo cuando las referencias son empleadas, éstas son convertidas. ● Oberon-D utiliza un sistema de swizzling lazy. Cuando una ref-erencia provoca un error de “objeto no encontrado”, Oberon-D examina si está sin convertir (unswizzled). En tal caso, la con-vierte y continúa la ejecución.
  • 23. Evolución del esquema (Schema Evolution) ➲ Se trata del mismo problema que sucede cuando en una base de datos relacional se cambia una tabla: todos los registros de esa tabla deben ser adaptados. ➲ En una base de datos orientada a objetos, o en un almacenamiento persistente, éste problema sucede cuando una clase cambia, es decir, es modificada. Todos sus objetos deben cambiarse también.
  • 24. Evolución del esquema ➲ También existen dos políticas de evolución del esquema, con las mismas premisas que en el mecanismo de swizzling. ● Eager: Todos los objetos son convertidos en el mismo momento en el que se detecta la modifi-cación de la clase. ● Lazy: Los objetos de la clase modificada son con-vertidos a medida que van siendo utilizados.
  • 25. Evolución del esquema ➲ Eager: ● PJama proporciona una solución eager a este problema: existe una herramienta de línea de co-mando que se encarga de, pasándole el archivo . class de la nueva clase, y una función de conver-sión, sustituir la clase en cuestión y aplicar la fun-ción de conversión a todos los objetos afectados. La función de conversión tiene la ventaja de per-mitir transformaciones complejas entre objetos an-teriores y objetos nuevos. Lo mejor de este méto-do es que todos los objetos son convertidos una vez finalizado el trabajo de la herramienta. Lo peor es que, mientras se ejecute está conversión de objetos, el sistema no podrá ser usado.
  • 26. Evolución del esquema ➲ Lazy: ● O2 proporciona una solución lazy a este proble-ma: cada transformación de la case es anotada, y a medida que se carguen los objetos de esa clase, los objetos son convertidos. La mayor ven-taja es que la conversión de objetos no supone que el sistema precise de estar fuera de uso. La mayor desventaja es que conviven objetos de diferentes versiones de las clases en el almace-namiento persistente, y que es posible que una clase sea modificada varias veces antes de que todos sus objetos sean convertidos, por lo que será necesario guardar todas las transforma-ciones que haya sufrido la clase.
  • 27. Evolución del esquema ➲ Intermedio eager/lazy: ● Barbados proporciona una solución intermedia a este problema: cuando una clase cambia, todos los objetos de esa clase que existan en su mismo contenedor son convertidos. A medida que los contenedores con objetos de esa clase son car-gados, los objetos van siendo convertidos, pudi-endo definirse una función de conversión. Trata de aunar las ventajas de ambos sistemas: no to-dos los objetos del almacenamiento persistente son convertidos, sino sólo una parte cada vez. Por otro lado, todos los objetos están listos para ser usados una vez que el contenedor ha sido carga-do.
  • 28. Aplicaciones de persistencia ➲ OOOS (Object-Oriented Operating Systems): Sistemas op-erativos orientados a objetos. ● EROS (http://www.eros-os.org/) ● GRASSHOPPER ( http://www.gh.cs.su.oz.au/Grasshopper/) ➲ OOPPS (Object-Oriented Persistent Programming Systems): Sistemas de programación orientada a objetos persistentes. ● Barbados ( http://www.lsi.uvigo.es/lsi/erosello/imo/Imospain/pers.html) ● Pjama (http://www.dcs.gla.ac.uk/pjava/) ● Oberon-D ( http://www.ssw.uni-linz.ac.at/Research/Projects/OberonD.html) ➲ OODBMS (Object-Oriented Database Management Sys-tems): Sistemas gestores de bases de datos orientadas a objetos. ● O2 (http://www.dbis.informatik.uni-frankfurt.de/REPORTS/GOODSTEP/goodstep.html)
  • 29. Bibliografía ➲ Persistencia ortogonal ● Atkinson M.P., Morrison R. (1995). “Orthogonality Persistent Object System”, VLDB Journal v4 n3, pp319-401, ISSN: 1066-8888 ● Se trata de la primera publicación que asienta unas bases (tres, en concreto), para cualquier tipo de im-plementación de persistencia en cualquier sistema. ● Ortogonalidad (independencia) de: ● tipo ● trato ● designación de objetos persistentes
  • 30. Bibliografía ➲ ODMG 3.0 ● http://www.odmg.org ● Cattel R., Barry D., (eds.), (2003). “The Object Data Standard: ODMG 3.0”. Morgan Kaufmann Publishers. ISBN 1-55860-647-4 ● ODMG es el estándar que siguen muchas empre-sas que venden bases de datos relacionales con capas de abstracción de objetos, como ORACLE. ● También hay implementaciones tipo JDBC para Java que siguen este estándar.
  • 31. Bibliografía ➲ PJama ● Sun research: ● http://www.sunlabs.com/forest/index.html ● Universidad de Glasgow: ● http://www.dcs.gla.ac.uk/pjava/ ● PJama, o Java persistente, fue un proyecto termi-nado en Septiembre del 2000 para soportar per-sistencia ortogonal en Java. ● Fue dirigido por históricos investigadores de la persistencia ● No es completamente ortogonal (viola la segunda y la tercera regla), ya que se buscaba compatibili-dad hacia atrás con los programas existentes en Java.
  • 32. Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez-Schofield http://webs.uvigo.es/jbgarcia/