Professional Documents
Culture Documents
Informacion de Estructura de Datos
Informacion de Estructura de Datos
Núcleo, Monagas
Escuela de Ingeniería y Ciencias Aplicadas
Departamento de Ingeniería de Sistemas
Gerencia de Mantenimiento
ALMACENAMIENTO
PERSISTENTE
Profesor: Bachilleres:
Frank Díaz Adrián Ponce CI: 28.274.989
Introducción.....................................................................................................................................3
Conclusión.....................................................................................................................................15
2
Introducción
Esto es posible gracias a los sistemas informáticos que usan el sistema binario para
registrar los datos en discos giratorios u otros dispositivos, magnéticos, eléctricos, ópticos, entre
otros. Existen dos tipos de dispositivos de almacenamiento que funcional de forma similar al
cerebro humano:
La persistencia de los datos en memoria es todo un proceso interno que conlleva el uso de
distintas herramientas que, para el usuario de un software, no se puede apreciar a simple vista
pero que constantemente trabaja para que toda la información sea adecuadamente conservada.
3
¿Qué se entiende por persistencia?
“Es la capacidad del programador para conseguir que sus datos sobrevivan a la
ejecución del proceso que los creo, de forma que puedan ser reutilizados en otro proceso. Cada
objeto, independiente de su tipo, debería poder llegar a ser persistente sin traducción explicita.
También, debería ser implícito que el usuario no tuviera que mover o copiar los datos
expresamente para ser persistentes” M. P. Atkinson, F. Bancilhon, D. J. Dewitt, K. R. Dittrich,
D. Maier, y S. B. Zdonik. (1990).
De esta forma explica que es el programado quien se encarga de decidir cuando y cómo
una instancia pasa a ser persistente o deja de serlo, o cuando debe ser nuevamente reconstruida.
Asimismo, que la transformación de un objeto entre ambas modalidades sea transparente para
quien programa, sin su intervención y que todos los tipos o clases deberían tener la posibilidad
de que sus instancias perduren.
Por lo que, el programador no debe preocuparse por el mecanismo interno que hace a n
objeto persistente, sin importar si es soportado por el propio lenguaje de programación usado o
por utilidades de programación para la persistencia como librerías o compiladores.
Una instancia persistente es aquella cuyos datos se mantienen, más allá de la ejecución
del proceso que materializó la instancia. Una instancia transitoria o temporal es toda aquella
cuyos datos desaparecen cuando finalizan los procesos que la manipulan. En ambos casos, las
instancias en sí, como estructuras de datos residentes en memoria, desaparecen al finalizar los
procesos que las crearos. En un ejemplo sencillo sería la ejecución de un programa que solicita
4
introducir el nombre, el cual será usado repetidas veces en distintas operaciones. Si este dato es
recogido en una instancia transitoria, cuando finalice el programa y lo volvamos a ejecutar,
deberemos nuevamente introducir el dato; pero si está asociado a una instancia persistente, el
dato introducido podría ser recuperado y mostrado en sucesivas ejecuciones del programa.
Persistencia de en memoria
5
Este tipo de estructuras son comunes particularmente en programación lógica y
programación funcional. En un lenguaje de programación puramente funcional todos los datos
son inmutables, así que todas las estructuras son completamente persistentes. La persistencia se
puede lograr simplemente copiando las estructuras completas, pero esto puede ser muy
ineficiente en cuanto a cálculos del CPU y consumo de memoria RAM, debido a que
generalmente solo se hacen pequeños cambios.
Lo mejor sería explotar la similitud que existe entre la nueva versión y sus versiones
anteriores, y compartir parte de su estructura con ellas, como por ejemplo, utilizar algunos sub-
árboles que no se modificaron para el caso de las estructuras formadas por árboles. De todas
formas, debido a que rápidamente se vuelve no factible determinar cuantas versiones anteriores
comparten partes en común con la estructura actual y a que a veces se hace necesario descartar
versiones anteriores.
Las colecciones: En unos casos lo que se desea es que haya dos referencias a los mismos
datos. Es decir: un mismo dato tiene dos punteros desde los que es posible acceder a ellos. Un
tipo de dato que utiliza este método se dice que tiene persistencia si cuando se elimina uno de los
punteros, los datos siguen aún en memoria. En este caso el tipo de datos utiliza un contador de
referencias, de modo que cada vez que se crea una referencia se aumenta la cuenta en uno (+1) y
cuando se elimina una referencia se disminuye el contador en uno (-1). El tipo de datos, por
tanto, sólo es realmente eliminado cuando la cuenta del contador llega a cero (0); es decir,
cuando no tiene referencias apuntando a los datos.
Ejemplo:
6
Xs= [0, 1, 2]
Ys= [3, 4, 5]
Donde cada círculo significa un nodo de la lista y las flechas hacia el nodo en que apuntan.
Zs= xs ++ ys
7
Se puede notar que los nodos en la lista xs han sido copiados, pero los nodos en ys son
compartidos. Como resultado, las listas originales persisten y no han sido modificadas. La razón
de la copia es que el último nodo en xs no puede ser modificado para apuntar el inicio de ys,
porque eso cambiaría el valor de xs.
Árboles: Se considera un árbol binario utilizado para buscar de forma rápida, donde cada
nodo tiene la invariante recursiva de que los valores de los nodos a la izquierda son menores que
su valor y los de la derecha son mayores.
Ejemplo:
Xs = [a, b, c, d, f, g, h]
8
Persistencia de aplicación
Es la capacidad para que los datos sobrevivan a la ejecución del programa que los ha
creado. Sin esta capacidad, los datos solo existen en memoria RAM, y se pierden cuando la
memoria pierde energía, como cuando se apaga el computador.
Este tipo de persistencia requiere que los datos sean almacenados en un medio
secundario, no volátil, para su posterior reconstrucción y utilización, por lo que su tiempo de
vida es independiente del proceso que los creó. Por lo tanto, deberán permanecer almacenados en
memoria que no sea volátil. Es decir, que en caso de interrupción de la energía que alimenta al
computador, una copia de estos datos debe permanecer almacenada. Los medios magnéticos,
como las unidades de disco duro y las cintas, son tipos comunes de almacenamiento persistente,
al igual que las diversas formas de medios ópticos, como el DVD.
9
progresivamente este proceso. Las unidades de disco duro (HDD) funcionan con un disco
magnético que gira a gran velocidad mientras los cabezales registran los datos en él.
Por su parte, un disco de estado sólido externo (SSD) tiene una memoria NAND que
registra los flash o cargas eléctricas de diferentes voltajes, los cuales son datos en lenguaje
binario que se guardan en sus celdas microscópicas. Las memorias USB se valen de esta
tecnología.
Se puede citar, a modo ejemplo, un fichero que está almacenado en disco. Es común a
muchas aplicaciones guardar en disco una copia de las opciones de configuración de un
programa cada vez que el usuario realiza cambios. Si dichos cambios no se guardaran a disco, la
próxima vez que el usuario ejecutare la aplicación tendría que volver a definir las opciones de
preferencia.
Persistencia de objetos
1. Sobre un medio (de almacenamiento) fijo se guarda (cuando el objeto fue definido) un
conjunto de datos que son recuperados cuando el tipo de objeto en cuestión es creado;
dichos datos son transferidos a las propiedades del objeto.
2. Otro objeto mantiene los datos que serán transferidos a las propiedades del nuevo objeto
creado. En este caso los datos están en memoria.
Persistencia ortogonal
10
Dos características serán ortogonales, si el uso de una no afecta a la otra, es implica que
son independientes entre sí. Programas y persistencia serán ortogonales, si la forma en la que los
objetos son manipulados por estos programas es independiente de la utilización de la
persistencia, que los mimos mecanismos operan tanto sobre objetos persistentes como sobre
objetos transitorios, ambas categorías serían tratadas de la misma manera con independencia de
su característica de persistencia.
Ser persistente debería ser una característica intrínseca del objeto, soportada por la
infraestructura del entorno de programación y persistencia. La persistencia de un objeto debe ser
ortogonal al uso, tipo e identificación, esto quiere decir que, cualquier objeto debería poder
existir el tiempo que sea preciso ser manipulado, sin tener en cuenta si la duración de su vida
supera al proceso que lo creó y su identificación no estar vinculada al sistema de tipos, como la
posibilidad de dar nombres a los objetos.
1. Menos código. Una semántica para expresar las operaciones de persistencia más
simple de usar y entender. Evitar la duplicidad de código, uno preparado para
instancias transitorias y otro para instancias persistentes.
2. Evitar la traducción explicita entre el estado de los objetos y su representación en base
de datos, que redunda en mayor facilidad de mantenimiento y menos código también.
3. Facilitar la integridad y permitir que actúe el sistema de tipos subyacente, que
automáticamente podría verificar la consistencia y la correspondencia de tipos entre
estados en base de datos y objetos en programa, la integridad no sería responsabilidad
del programador.
Cierre de persistencia
11
Los objetos suelen referenciar a otros objetos, estos a su vez a otros, y así puede
continuar sucesivamente. C da objeto puede tener un gran número de objetos dependientes de
manera directa e indirecta. Esta relación de dependencias es parte integrante del estado de
cada objeto. Cuando el estado de un objeto es salvado o recuperado, sus dependencias
también deberían ser guardadas o recuperadas. De otro modo, cuando el objeto fuese
recuperado, llegaría a estar incompleto, sería inconsistente con respecto a como fue guardado.
Existen varios objetos que hacen de flujos de datos, y que se distinguen por la finalidad
del flujo de datos y por el tipo de datos que viajen a través de ellos. Según el tipo de datos que
transporten podemos distinguir:
Flujos de caracteres
Flujos de bytes
Dentro de cada uno de estos grupos tenemos varios pares de objetos, de los cuales uno
nos servirá para leer del flujo y el otro para escribir en él. Cada par de objetos será utilizado para
comunicarse con distintos elementos (memoria, ficheros, red u otros programas). Estas clases,
según sean de entrada o salida y según sean de caracteres o de bytes llevarán distintos sufijos.
Para poder enviar datos por los distintos flujos de datos, es necesario serializarlos. La
serialización es el proceso de convertir un objeto en una secuencia de bytes para almacenarlo o
transmitirlo a la memoria, a una base de datos o a un archivo. Su propósito principal es guardar
12
el estado de un objeto para poder volver a crearlo cuando sea necesario. El proceso inverso se
denomina deserialización.
La memoria no volátil, como puedes ver, tiene muchas ventajas sobre el uso de la RAM
volátil. Una ventaja significativa es la capacidad de almacenamiento, ya que este tipo de
memoria es generalmente mucho más barata de fabricar que la RAM, y se puede crear en
mayores cantidades. Otra ventaja significativa es que la memoria no volátil utiliza menos energía
que la RAM. Por otro lado, la memoria no volátil no necesita refrescarse, como hace la RAM.
Esto significa que el dispositivo no tendrá que esperar a que este proceso se lleve a cabo, ni
invertir energía en ello.
Una de las desventajas del uso de la memoria no volátil es que es más lenta que la RAM
volátil en cuanto a la latencia de accesos. Otra desventaja importante, y relacionada con la
anterior, es que la memoria no volátil no puede utilizarse como lugar temporal para almacenar
datos. Sólo retendrá los datos hasta que sean sobrescritos o eliminados por un operador. Esto
significa que el dispositivo tendrá que leer los datos de la memoria no volátil, enviarlos a la
RAM y luego procesarlos como se requiera en cada momento. Esto puede causar un retraso en el
funcionamiento, aunque no debería ser tan notable como lo sería si el dispositivo utilizara la
RAM.
13
Análisis de ciber amenazas. La memoria persistente permite a las empresas desplazarse
rápidamente para detectar y defenderse frente a las ciber amenazas que son cada vez más
numerosas.
Personalización a escala web. La memoria persistente permite a las empresas adaptar las
experiencias en línea al usuario al devolverle contenido y anuncios relevantes. En consecuencia,
se genera un mayor número de clics del usuario y más oportunidades de ingresos en comercio
electrónico.
Internet de las cosas (IoT). Un procesamiento más rápido de conjuntos de datos enormes
en tiempo real reduce la rentabilidad de la inversión.
14
Conclusión
15
Bibliografía
16