En informática , la persistencia se refiere a la característica del estado de un sistema que sobrevive (persiste más que) el proceso que lo creó. Esto se logra en la práctica almacenando el estado como datos en el almacenamiento de datos de la computadora . Los programas tienen que transferir datos hacia y desde dispositivos de almacenamiento y tienen que proporcionar asignaciones desde las estructuras de datos del lenguaje de programación nativo a las estructuras de datos del dispositivo de almacenamiento. [1] [2]
Los programas de edición de imágenes o procesadores de texto , por ejemplo, logran la persistencia del estado guardando sus documentos en archivos .
Se dice que la persistencia es " ortogonal " o "transparente" cuando se implementa como una propiedad intrínseca del entorno de ejecución de un programa. Un entorno de persistencia ortogonal no requiere ninguna acción específica por parte de los programas que se ejecutan en él para recuperar o guardar su estado .
La persistencia no ortogonal requiere que los datos se escriban y lean hacia y desde el almacenamiento utilizando instrucciones específicas en un programa, lo que resulta en el uso de persistir como verbo transitivo: al finalizar, el programa persiste los datos .
La ventaja de los entornos de persistencia ortogonal es que los programas son más simples y menos propensos a errores. [ cita requerida ]
El término "persistente" fue introducido por primera vez por Atkinson y Morrison [1] en el sentido de persistencia ortogonal: utilizaron un adjetivo en lugar de un verbo para enfatizar la persistencia como una propiedad de los datos, a diferencia de una acción imperativa realizada por un programa. El uso del verbo transitivo "persistir" (que describe una acción realizada por un programa) es una formación inversa.
La persistencia ortogonal se adopta ampliamente en sistemas operativos para hibernación y en sistemas de virtualización de plataformas como VMware y VirtualBox para guardar el estado.
Los lenguajes prototipo de investigación como PS-algol , Napier88 , Fibonacci y pJama demostraron con éxito los conceptos junto con las ventajas para los programadores.
El uso de imágenes del sistema es la estrategia de persistencia más sencilla. La hibernación de un portátil es un ejemplo de persistencia ortogonal que utiliza una imagen del sistema porque no requiere ninguna acción por parte de los programas que se ejecutan en la máquina. Un ejemplo de persistencia no ortogonal que utiliza una imagen del sistema es un programa de edición de texto simple que ejecuta instrucciones específicas para guardar un documento completo en un archivo.
Desventajas : requiere suficiente memoria RAM para almacenar todo el estado del sistema. Los cambios de estado realizados en un sistema después de que se guardó su última imagen se pierden en caso de una falla o apagado del sistema. Guardar una imagen para cada cambio individual llevaría demasiado tiempo para la mayoría de los sistemas, por lo que las imágenes no se utilizan como la única técnica de persistencia para sistemas críticos.
El uso de diarios es la segunda técnica de persistencia más sencilla. El registro en diario es el proceso de almacenar eventos en un registro antes de que cada uno de ellos se aplique a un sistema. Estos registros se denominan diarios.
Al iniciar, se lee el diario y cada evento se vuelve a aplicar al sistema, evitando la pérdida de datos en caso de falla o apagado del sistema.
Todo el historial "Deshacer/Rehacer" de los comandos de usuario en un programa de edición de imágenes, por ejemplo, cuando se escribe en un archivo, constituye un diario capaz de recuperar el estado de una imagen editada en cualquier momento.
Los registros son utilizados por los sistemas de archivos de registro , los sistemas predominantes y los sistemas de gestión de bases de datos , donde también se denominan "registros de transacciones" o "registros de rehacer".
Desventajas : cuando se utilizan registros de forma exclusiva, es necesario volver a aplicar todo el historial (que puede ser muy extenso) de todos los eventos del sistema en cada inicio del sistema. Por ello, los registros suelen combinarse con otras técnicas de persistencia.
Esta técnica consiste en escribir en el almacenamiento únicamente aquellas partes del estado del sistema que se modificaron (están sucias) desde la última vez que se escribieron. Las aplicaciones sofisticadas de edición de documentos, por ejemplo, utilizarán escrituras sucias para guardar únicamente aquellas partes de un documento que realmente se modificaron desde la última vez que se guardó.
Desventajas: Esta técnica requiere que los cambios de estado se intercepten dentro de un programa. Esto se logra de manera no transparente al requerir llamadas específicas a la API de almacenamiento o de manera transparente con la transformación automática del programa . Esto da como resultado un código más lento que el código nativo y más complicado de depurar.
Cualquier capa de software que facilite a un programa la persistencia de su estado se denomina genéricamente capa de persistencia. La mayoría de las capas de persistencia no lograrán la persistencia directamente, sino que utilizarán un sistema de gestión de bases de datos subyacente .
La prevalencia del sistema es una técnica que combina imágenes del sistema y diarios de transacciones, mencionados anteriormente, para superar sus limitaciones.
Desventajas: Un sistema predominante debe tener suficiente RAM para almacenar todo el estado del sistema.
Los DBMS utilizan una combinación de las técnicas de escritura sucia y registro de transacciones mencionadas anteriormente. No solo proporcionan persistencia, sino también otros servicios como consultas, auditoría y control de acceso.
Los sistemas operativos persistentes son sistemas operativos que permanecen persistentes incluso después de una falla o un apagado inesperado. Los sistemas operativos que emplean esta capacidad incluyen