En informatique , la persistance fait référence à la caractéristique de l'état d'un système qui survit (persiste plus longtemps que) au processus qui l'a créé. Cela est réalisé en pratique en stockant l'état sous forme de données dans le stockage de données informatiques . Les programmes doivent transférer des données vers et depuis des périphériques de stockage et doivent fournir des mappages des structures de données du langage de programmation natif vers les structures de données du périphérique de stockage.
Les programmes d'édition d'images ou de traitement de texte , par exemple, parviennent à la persistance de l'état en enregistrant leurs documents dans des fichiers .
Persistance orthogonale ou transparente
La persistance est dite « orthogonale » ou « transparente » lorsqu'elle est implémentée comme une propriété intrinsèque de l'environnement d'exécution d'un programme. Un environnement de persistance orthogonal ne nécessite aucune action spécifique de la part des programmes qui y sont exécutés pour récupérer ou sauvegarder leur état .
La persistance non orthogonale nécessite que les données soient écrites et lues vers et depuis le stockage à l'aide d'instructions spécifiques dans un programme, ce qui entraîne l'utilisation de persist comme verbe transitif : Une fois terminé, le programme conserve les données .
L'avantage des environnements de persistance orthogonaux est que les programmes sont plus simples et moins sujets aux erreurs.
Le terme « persistant » a été introduit pour la première fois par Atkinson et Morrison dans le sens de persistance orthogonale : ils ont utilisé un adjectif plutôt qu'un verbe pour souligner la persistance en tant que propriété des données, par opposition à une action impérative effectuée par un programme. L'utilisation du verbe transitif « persister » (décrivant une action effectuée par un programme) est une rétroformation.
Adoption
La persistance orthogonale est largement adoptée dans les systèmes d’exploitation pour l’hibernation et dans les systèmes de virtualisation de plate-forme tels que VMware et VirtualBox pour la sauvegarde de l’état.
Les langages de prototypes de recherche tels que PS-algol , Napier88 , Fibonacci et pJama ont démontré avec succès les concepts ainsi que les avantages pour les programmeurs.
Techniques de persistance
Images système
L'utilisation d'images système est la stratégie de persistance la plus simple. La mise en veille prolongée d'un ordinateur portable est un exemple de persistance orthogonale utilisant une image système, car elle ne nécessite aucune action de la part des programmes exécutés sur la machine. Un exemple de persistance non orthogonale utilisant une image système est un simple programme d'édition de texte exécutant des instructions spécifiques pour enregistrer un document entier dans un fichier.
Inconvénients : nécessite suffisamment de RAM pour conserver l'intégralité de l'état du système. Les modifications d'état apportées à un système après l'enregistrement de sa dernière image sont perdues en cas de panne ou d'arrêt du système. L'enregistrement d'une image pour chaque modification prendrait trop de temps pour la plupart des systèmes. Les images ne sont donc pas utilisées comme technique de persistance unique pour les systèmes critiques.
Journaux
L'utilisation de journaux est la deuxième technique de persistance la plus simple. La journalisation est le processus de stockage des événements dans un journal avant que chacun d'eux ne soit appliqué à un système. Ces journaux sont appelés journaux.
Au démarrage, le journal est lu et chaque événement est réappliqué au système, évitant ainsi la perte de données en cas de panne ou d'arrêt du système.
L'historique complet « Annuler/Rétablir » des commandes utilisateur dans un programme d'édition d'images, par exemple, lorsqu'il est écrit dans un fichier, constitue un journal capable de récupérer l'état d'une image éditée à tout moment.
Les journaux sont utilisés par les systèmes de fichiers journalisés , les systèmes prévalents et les systèmes de gestion de bases de données où ils sont également appelés « journaux de transactions » ou « journaux de rétablissement ».
Inconvénients : Lorsque les journaux sont utilisés de manière exclusive, l'historique complet (potentiellement volumineux) de tous les événements système doit être réappliqué à chaque démarrage du système. Par conséquent, les journaux sont souvent combinés à d'autres techniques de persistance.
Des écritures sales
Cette technique consiste à enregistrer dans la mémoire uniquement les parties de l'état du système qui ont été modifiées (sales) depuis leur dernière écriture. Les applications d'édition de documents sophistiquées, par exemple, utiliseront des écritures sales pour enregistrer uniquement les parties d'un document qui ont été réellement modifiées depuis la dernière sauvegarde.
Inconvénients : cette technique nécessite que les changements d'état soient interceptés au sein d'un programme. Cela se fait de manière non transparente en exigeant des appels d'API de stockage spécifiques ou de manière transparente avec une transformation automatique du programme . Cela donne un code plus lent que le code natif et plus compliqué à déboguer.
Couches de persistance
Toute couche logicielle qui permet à un programme de conserver son état plus facilement est appelée couche de persistance. La plupart des couches de persistance n'obtiendront pas directement la persistance, mais utiliseront un système de gestion de base de données sous-jacent .
Prévalence du système
La prévalence du système est une technique qui combine les images système et les journaux de transactions, mentionnés ci-dessus, pour surmonter leurs limites.
Inconvénients : Un système répandu doit avoir suffisamment de RAM pour contenir l’intégralité de l’état du système.
Systèmes de gestion de bases de données (SGBD)
Les SGBD utilisent une combinaison des techniques d'écritures sales et de journalisation des transactions mentionnées ci-dessus. Ils fournissent non seulement la persistance, mais également d'autres services tels que les requêtes, l'audit et le contrôle d'accès.
Systèmes d'exploitation persistants
Les systèmes d'exploitation persistants sont des systèmes d'exploitation qui restent persistants même après une panne ou un arrêt inattendu. Les systèmes d'exploitation qui utilisent cette capacité incluent
- CléKOS
- EROS , le successeur de KeyKOS
- Coyotos, successeur d'EROS
- Multics avec son magasin à un seul niveau
- Fantôme
- Système IBM/38
- IBM i
- Système d'exploitation Grasshopper [1]
- Système d'exploitation Lua
- tahrpuppy-6.0.5