Una pregunta que debe plantearse un desarrollador de aplicaciones software acerca de los datos de su aplicación, es si estos deben ser persistentes o no ante diferentes ejecuciones del programa.
Habitualmente, un programa software se ejecutará varias veces. Cada vez que se ponga en ejecución, se hará después de que el programa se lance a través de un comando. Dicho programa en ejecución finalizará al recibir una señal, porque llega al final de su código (quizás existe incluso una opción de finalizar que el propio usuario tiene disponible en el menú) o porque se ha realizado una llamada a una función que termina el programa. Ese programa se puede volver a ejecutar varias veces, repitiendo el ciclo en el que el programa se ejecuta y termina.
Hay ocasiones en las que la aplicación requiere que los datos que hubiera resultado de la historia de previas ejecuciones, se mantengan, es decir que sean persistentes (por ejemplo que fotos añadidas en anteriores ejecuciones se vean en los listados de futuras ejecuciones del programa), mientras que hay otras ocasiones en las que la aplicación requiere que los datos de anteriores ejecuciones no se mantengan y se empiece desde cero tras cada nueva ejecución, es decir los datos no sean persistentes (por ejemplo que al principio el listado de fotos esté vacío y se muestren sólo las fotos que se han tomado en la última sesión).
Para el almacenamiento de información persistente ante diferentes ejecuciones, no cabe la posibilidad de almacenarla en memoria del programa ya sea estática o dinámica, porque tras la terminación de ejecución del programa, dicha información desaparece o aún peor, queda inaccesible consumiendo memoria (en el caso de las fugas de memoria). Por ello, para el almacenamiento de información persistente, se deben utilizar otros métodos, tales como los siguientes:
Almacenamiento en una Base de datos. No se verán en la asignatura. Son utilidades que permiten el almacenamiento persistente a través de una serie tablas. Permiten definir tablas, sus primary keys, las relaciones entre tablas, etc. y están optimizadas para realizar operaciones de datos a gran velocidad.
Almacenamiento en ficheros. Se puede utilizar uno o varios ficheros para almacenar información de manera persistente entre diferentes ejecuciones de programa. Los ficheros en sí, sobrevivirán a diferentes ejecuciones del programa, por lo que la información será persistente, y se podrá leer y escribir en diferentes ejecuciones. Si se utiliza esta opción, se debe seguir un criterio a la hora de almacenar los datos en un fichero, de forma que se puedan recuperar posteriormente siguiendo el mismo criterio.
Con respecto a la información no persistente se puede utilizar tanto memoria estática como dinámica. Para el caso concreto de cada una de las tablas y sus relaciones, se darán unas posibilidades de almacenamiento más adelante en este material.
Responde a las siguientes preguntas