Persistencia (informática)Persistencia en informática de modo genérico, se refiere a la propiedad de los datos para que estos sobrevivan de alguna manera.
De forma sencilla puede entenderse que los datos tienen una duración efímera, desde el momento en que estos cambian de valor se considera que no hay persistencia de los mismos. Sin embargo en informática hay varios ámbitos donde se aplica y se entiende la persistencia.
Tipos de persistencia de datos
Se consideran varios tipos de persistencia en informática, según a qué persistencia nos refiramos. Se describen a continuación:
Persistencia 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. Existen 2 ideas respecto de lo que debe suceder con un dato, estructura u objeto una vez asignado desde el original.
• En unos casos lo que se desea es que haya 2 referencias a los mismos datos. Es decir un mismo dato tiene 2 punteros desde el 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 1 y cuando se elimina una referencia se disminuye el contador en 1. El tipo de datos por tanto sólo es realmente eliminado cuando la cuenta del contador llega a 0, es decir cuando no tiene referencias apuntando a los datos.
Veamos un ejemplo: Se crea un objeto de tipo colección, se le asignan 2 datos, luego se crea otro objeto al que se le asigna la colección previa.
Dim x As Collection
Dim y As Collection
Dim dia As String
Set x = New Collection
x.Add ("Domingo")
x.Add ("Jueves")
Set y = x
dia = y.Item(1)
MsgBox dia
y.Add ("Sábado")
dia = x.Item(3)
MsgBox dia
Set X = nothing
dia = y.Item(1)
MsgBox dia
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 deben permanecer almacenados.
Se puede citar modo ejemplo, un fichero que está almacenado en disco. Es común a muchas aplicaciones guardar a 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 proxima vez que el usuario ejecutare la aplicación, tendría que volver a definir las opciones de preferencia.
Persistencia de objetos
La persistencia de objetos puede ser fácilmente confundida con la persistencia en memoria, incluso con la persistencia de aplicación. La persistencia de objetos consiste en la inicialización de objetos con sus atributos por defecto. Esto es posible con 2 maneras de proceder.
•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.
•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.
Hay muchos ejemplos, para este tipo de persistencia, un caso típico son los controles ActiveX. Cuando, el control es compilado junto al código se guarda una copia de los datos que el programador definió por defecto. Cuando se instancia una referencia al control, éste lee del disco (donde está almacenada la librería asociada al control), los datos que definen configuran sus propiedades.
Otro ejemplo, son las primitivas que se utilizan para recrear objetos 3D a partir del cual pueden crearse objetos más complejos. Supongamos que vamos a crear un avión con geometría 3D, inicialmente podemos crear cada primitiva que compone el mismo, desde memoria, el motor de la aplicación puede definir un nuevo objeto con las medidas que el usuario define y posicionado igualmente en las cordenadas que el usuario señala para crear el objeto, sin embargo a medida que el objeto crece y tiene más datos, se hace necesario guardar el objeto a disco. Este objeto puede ahora ser guardado y ser utilizado en las próximas veces como una primitiva, un punto a partir del cual iniciar la creación de otros objetos más complejos basados en éste. Si ahora quiero crear un nuevo modelo de avión posiblemente sea más sencillo modificar la primitiva definida que crear uno totalmente nuevo, por tanto es necesaria la persistencia de la primitiva, para recrear nuevos objetos basados en ella. Las primitivas complejas se acoplan a la primera manera definida y las primitivas sencillas se ajustan a la 2ª manera definida.
Para guardar los datos de objetos a disco, se recurre a un mecanismo conocido como serializar que dispone en una secuencia de bytes todos los datos (o sólo aquellos que se desee) que definen el objeto.