Articulo de referencia

Persistencia (informática)

En informática , la persistencia se refiere a la característica del estado de un sistema que perdura más allá del proceso que lo creó. En la práctica, esto se logra almacenando ...

En informática , la persistencia se refiere a la característica del estado de un sistema que perdura más allá del proceso que lo creó. En la práctica, esto se logra almacenando el estado como datos en el almacenamiento de datos de la computadora . Los programas deben transferir datos hacia y desde los dispositivos de almacenamiento y deben proporcionar mapeos 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 los procesadores de texto , por ejemplo, logran la persistencia del estado guardando sus documentos en archivos .

persistencia ortogonal o transparente

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 se lean desde y hacia el almacenamiento utilizando instrucciones específicas en un programa, lo que da como resultado el uso de persistir como verbo transitivo: Al completarse, el programa persiste los datos .

La ventaja de los entornos de persistencia ortogonales radica en que los programas son más sencillos y menos propensos a errores.

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 «persist» (que describe una acción realizada por un programa) es una derivación regresiva.

Adopción

La persistencia ortogonal se utiliza ampliamente en sistemas operativos para la 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 y las ventajas para los programadores.

Técnicas de persistencia

Imágenes del sistema

El uso de imágenes del sistema es la estrategia de persistencia más sencilla. La hibernación de un notebook es un ejemplo de persistencia ortogonal mediante una imagen del sistema, ya que no requiere ninguna acción por parte de los programas que se ejecutan en la máquina. Un ejemplo de persistencia no ortogonal mediante una imagen del sistema es un programa sencillo de edición de texto que ejecuta instrucciones específicas para guardar un documento completo en un archivo.

Limitaciones : Requiere suficiente RAM para almacenar el estado completo del sistema. Los cambios de estado realizados en un sistema después de que se haya guardado su última imagen se pierden en caso de fallo o apagado del sistema. Guardar una imagen para cada cambio sería demasiado lento para la mayoría de los sistemas, por lo que las imágenes no se utilizan como única técnica de persistencia para sistemas críticos.

Revistas

El uso de registros es la segunda técnica de persistencia más sencilla. El registro consiste en almacenar eventos en un archivo de registro antes de que cada uno se aplique al sistema. Estos archivos de registro se denominan diarios.

Al iniciar el sistema, se lee el registro y cada evento se vuelve a aplicar, evitando así la pérdida de datos en caso de fallo o apagado del sistema.

El historial completo de "Deshacer/Rehacer" de los comandos del usuario en un programa de edición de imágenes, por ejemplo, cuando se guarda en un archivo, constituye un registro 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 les denomina "registros de transacciones" o "registros de rehacer".

Limitaciones : Cuando se utilizan exclusivamente registros, es necesario volver a aplicar todo el historial (potencialmente extenso) de todos los eventos del sistema cada vez que se inicia el sistema. Por ello, los registros suelen combinarse con otras técnicas de persistencia.

Sucio escribe

Esta técnica consiste en guardar en el almacenamiento únicamente aquellas partes del estado del sistema que se han modificado (están sucias) desde su última escritura. Las aplicaciones sofisticadas de edición de documentos, por ejemplo, utilizan la escritura sucia para guardar solo las partes de un documento que se han modificado realmente desde el último guardado.

Desventajas: Esta técnica requiere interceptar los cambios de estado dentro del programa. Esto se logra de forma poco transparente mediante llamadas específicas a la API de almacenamiento o de forma transparente mediante la transformación automática del programa . El resultado es un código más lento que el código nativo y más difícil de depurar.

Capas de persistencia

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 logran la persistencia directamente, sino que utilizan un sistema de gestión de bases de datos subyacente .

Prevalencia del sistema

La prevalencia del sistema es una técnica que combina imágenes del sistema y registros de transacciones, mencionados anteriormente, para superar sus limitaciones.

Limitaciones: Un sistema de uso generalizado debe tener suficiente RAM para almacenar todo el estado del sistema.

Sistemas de gestión de bases de datos (SGBD)

Los sistemas de gestión de bases de datos (DBMS) utilizan una combinación de las técnicas de escritura diferida y registro de transacciones mencionadas anteriormente. Proporcionan no solo persistencia, sino también otros servicios como consultas, auditoría y control de acceso.

Sistemas operativos persistentes

Los sistemas operativos persistentes son aquellos que permanecen persistentes incluso después de un fallo o un apagado inesperado. Los sistemas operativos que emplean esta capacidad incluyen:

Véase también

Referencias

  1. 1 2 Atkinson, MP ; Bailey, PJ; Chisholm, KJ; Cockshott, WP ; Morrison, R. (1983). "PS-algol: Un lenguaje para programación persistente" (PDF) . Actas de la 10.ª Conferencia Nacional Australiana de Computación . 10.ª Conferencia Nacional Australiana de Computación. Melbourne, Australia. págs. 70–79 . 
  2. Balzer, Stephanie (17 de noviembre de 2005). "Programación de objetos persistentes contraídos" (PDF) . Universidad de Glasgow - Escuela de Ciencias de la Computación - Investigación . ETH Zúrich. Archivado del original (PDF) el 31 de diciembre de 2006. Recuperado el 21 de septiembre de 2015 .