You are on page 1of 16

Universidad de Oriente

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

Maturín, marzo de 2023


Índice

Introducción.....................................................................................................................................3

¿Qué se entiende por persistencia?..................................................................................................4

¿Qué significa instancia persistente y transitoria?...........................................................................4

¿Qué se entiende por transparencia de datos?.................................................................................5

¿Qué es el almacenamiento persistente de datos?...........................................................................5

Flujo de datos de entrada/salida.....................................................................................................12

Ventajas del uso de la memoria no volátil.....................................................................................13

Desbentajas del uso de la memoria no volátil...............................................................................13

Casos de uso del almacenamiento persitente.................................................................................13

Conclusión.....................................................................................................................................15

2
Introducción

La memoria es el dispositivo que se encarga principalmente de contener, recordar y


almacenar datos informáticos durante algún período de tiempo. Se puede considerar como un
medio de grabación para la conservación de datos utilizando el PC y otros dispositivos. El
almacenamiento de datos es ese proceso donde se guardan bits de información que puede
contener todo tipo de archivos, como imágenes, texto, vídeo, programas, entre otros.

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:

 Primarios, que se encargan de recabar los datos de forma temporal.


Siempre que tengan una fuente eléctrica, de la misma forma en que lo hace la memoria a
corto plazo. El ejemplo más común es la memoria de acceso aleatorio (RAM) de una
computadora
 Secundarios, que tienen la capacidad de grabar datos de forma permanente
y sin perderlos. Sin importar si existe una fuente eléctrica, de forma similar a la memoria
a largo plazo. El disco duro (HDD) de la computadora es un claro ejemplo de eso.

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?

Se pueden considerar diferentes definiciones del termino persistencia, según diversos


autores. Presentándose a continuación dos que con más claridad y sencillez, concretan el
concepto de 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.

Otra definición dicta: “Es la capacidad de un lenguaje de programación o entorno de


desarrollo de programación para, almacenar y recuperar el estado de los objetos de forma que
sobrevivan los procesos que los manipulan” M. Bertrand (1997)

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.

¿Qué significa instancia persistente y transitoria?

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.

¿Qué se entiende por transparencia de datos?

Cuando un sistema o entorno de programación ofrece transparencia de datos, el conjunto


de las clases persistentes y el esquema de la base de datos es uno, las clases definen de hecho el
esquema en la base de datos. Los estados almacenados en la base de datos son manejados con el
lenguaje de programación elegido, no es necesario otro. Los objetos son recuperados de la base
de datos automáticamente, cuando las referencias a estos son accedidas. También, las
modificaciones del estado de los objetos persistentes son reflejadas en la base de datos
automáticamente. Los estados de los objetos son recuperados y actualizados de forma
transparente; no hay cambios en la semántica de referencia o de asignación en la aplicación.
Objetos transitorios y persistentes son manipulados de igual forma. Las operaciones propias de la
persistencia son efectuadas sin la intervención directa del programador, con más código.

¿Qué es el almacenamiento persistente de datos?

En términos generales, el almacenamiento persistente es proceso que se da en un


dispositivo de memoria direccionable según los bytes, de alto rendimiento y estado sólido que
reside en el bus de memoria. Permite principalmente recuperar o acceder datos e información
según necesite. Existen varios tipos de persistencia en informática, los cuales son:

 Persistencia de en memoria

La persistencia en memoria es la capacidad de un dato u objeto para seguir existiendo tras


determinadas operaciones. La operación más común que se presta a la persistencia en memoria
es la asignación. Una estructura de datos persistente es una estructura de datos que siempre
preserva sus versiones anteriores, después de ser modificada. Este tipo de estructura son objetos
inmutables, ya que sus operaciones no modifican la estructura actual, sino que crean una nueva
estructura modificada.

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.

Entre las estructuras de datos persistentes más comunes se encuentran:

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.

Listas enlazadas: Probablemente la estructura persistente más sencilla sea la lista


enlazada, una simple lista de objetos, donde cada uno tiene una referencia el siguiente. Para que
sea persistente cuando se modifica un nodo, la nueva versión puede compartir con la anterior, los
nodos que estaban después de él, o sea, la cola.

Ejemplo:

Considere las dos listas:

6
Xs= [0, 1, 2]
Ys= [3, 4, 5]

Estas deben ser representadas en memoria de la siguiente forma:

Donde cada círculo significa un nodo de la lista y las flechas hacia el nodo en que apuntan.

Concatenar las dos listas

Zs= xs ++ ys

Resulta en la siguiente estructura en memoria:

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]

Después de efectuar insertar “e” en xs, se obtiene lo siguiente:

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.

Actualmente el funcionamiento del almacenamiento de datos conserva un sistema con las


mismas bases; pero con la entrada del lenguaje binario se abrió la posibilidad a optimizar

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.

De igual manera, el almacenamiento de datos óptico utiliza el lenguaje binario. En su


caso registra con rayos láser surcos microscópicos sobre la superficie del disco para ir grabando
la información. Como ejemplos tenemos el disco compacto (CD), el disco versátil digital (DVD)
y el disco Blue-Ray.

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

En el caso de persistencia de objetos la información que persiste en la mayoría de los


casos son los valores que contienen los atributos en ese momento, no necesariamente la
funcionalidad que proveen sus métodos.

La persistencia de objetos consiste en la inicialización de objetos con sus atributos


predeterminados o atributos por defecto. Esto es posible con dos maneras de proceder.

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.

A la hora de plasmar el uso de la persistencia en los programas, una persistencia


ortogonal ideal, llevaría a no tener que modificar el código de nuestras clases, salvo aquellas
donde se deba introducir las operaciones que provocan la persistencia para cualquier objeto que
sea duradero. Los beneficios que aporta la persistencia ortogonal son muy notorios: Mayores
cotas de facilidad de mantenimiento, corrección, continuidad del código y productividad de
desarrollo. Se consigue:

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.

Un mecanismo de persistencia que posibilita la persistencia automática de las


dependencias de un objeto, que deban persistir, se dice que admite el cierre de persistencia.
Cuando el estado de un objeto es almacenado, los estados de los objetos dependientes que
tengan que ser persistentes, son también almacenados, y así, sucesivamente. En otro sentido,
en la recuperación del estado de un objeto, los estados de los objetos dependientes son
recuperados. El cierre de persistencia determina el conjunto de referencias necesario, que
ayuda a conseguir la consistencia entre el estado del objeto en el instante de guardar y estado
resultante de su recuperación.

Flujo de datos de entrada/salida

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.

Ventajas del uso de la memoria no volátil

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.

Desbentajas del uso de la memoria no volátil

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.

Casos de uso del almacenamiento persitente

La memoria persistente se puede utilizar de diversas formas para proporcionar una


latencia menor en las aplicaciones, como:

Detección del fraude. La memoria persistente mejora la velocidad a la que las


instituciones financieras y las compañías de seguros pueden analizar los datos de millones de
registros para detectar transacciones fraudulentas y, de este modo, poder evitar pérdidas
financieras y otras repercusiones en el prestigio de la marca.

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.

Transacciones financieras. Las aplicaciones de transacciones financieras pueden usar la


memoria persistente para procesar y llevar a cabo estas operaciones con rapidez. De este modo,
ganan en competitividad y crean una mayor oportunidad de ingresos.

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

Muchos sistemas operativos, administradores de archivos y otros programas proveen


facilidades que hacen que el archivo no sea inmediatamente eliminado cuando el usuario solicita
esa acción. En su lugar, el archivo es trasladado a un área de retención que permite al usuario
fácilmente revertir la acción si ha cometido un error.

Incluso cuando no se proporciona un área de retención de archivos eliminados explícita, o


cuando el usuario no la usa, los equipos normales realmente no quitan el contenido de un archivo
cuando se lo intenta eliminar. En lugar de eso, simplemente eliminan la entrada del archivo del
índice del sistema de archivos porque esto requiere menos trabajo y por lo tanto es una solución
más rápida. Los contenidos del archivo – los verdaderos datos – permanecen en el medio de
almacenamiento. Los datos permanecerán allí hasta que el sistema operativo reutilice el espacio
para nuevos datos. En algunos sistemas, suficientes metadatos del sistema de archivos son
conservados para facilitar la recuperación de los datos por programas utilitarios fácilmente
disponibles. Aun cuando la recuperación se ha tornado imposible, los datos, hasta que sean
sobrescritos, pueden ser leídos por programas que leen los sectores del disco directamente.

15
Bibliografía

Lenis, A. (2023). ¿Qué es el almacenamiento de datos, cómo funciona y qué tipos


existen? Recuperado de: https://blog.hubspot.es/marketing/que-es-almacenamiento-de-datos
(marzo, 2023)

Wikipedia. (2020). Persistencia (informática). Wikipedia, la enciclopedia libre.


Recuperado de: https://es.wikipedia.org/wiki/Persistencia_(inform%C3%A1tica) (marzo, 2023)

N. (2019). ¿Qué es la memoria persistente?: PMEM. NetApp. Recuperado de:


https://www.netapp.com/es/data-storage/what-is-persistent-memory/ (marzo, 2023)
Kaplan, Haim (2001). «Persistent data structures». Handbook on Data Structures and
Applications (CRC Press). Recuperado de: http://www.math.tau.ac.il/~haimk/papers/persistent-
survey.ps (marzo, 2023)
Castillo, J. (s.f). Persistencia de Objetos. JDO, Solución Java. Recuperado de:
http://dis.um.es/~jmolina/Persistencia%20de%20Objeto%20JDO.pdf (marzo, 2023)

16

You might also like