Persistance
En programmation, la gestion de persistance des données et éventuellement des états de programme se réfère au mécanisme responsable de la sauvegarde et la restauration de données, afin qu'un programme puisse se terminer sans que ses données ni son état d'exécution soient perdus.
Ces informations de reprise peuvent être sauvegardées sur disque ou transmises à un serveur (un serveur de bases de données relationelles, par exemple).
Tout mécanisme logiciel de persistance acceptable se doit de convertir les données en format indépendant de l'architecture Hardware avant de les sauvegarder. Toutefois, pour des raisons de rapidité d'exécution en cas d'urgence, une sauvegarde dans un format spécifique reste acceptable aussi s'il existe par ailleurs un mécanisme de conversion de cet état vers une forme portable.
Exemples
- En électronique numérique, les données telles les instructions d'un circuit programmables doivent être préservées (EEPROM, Flash, etc)
- Les serveurs de base de données relationelles sauvegardent généralement les bases de données sur disque et les modifications sur un fichier journal (mécanisme du COMMIT).
- La sérialisation Java, ainsi que celle de Perl permettent de sauvegarder les objets sur disque ou dans une base de données relationnelle. Le langage Python dispose d'un module pickle pour sauver/restorer des graphes d'objets sur disque.
- Le moteur de jeux Agar sauvegarde sa hiérarchie d'objets (tels les cartes et les personnages) en format binaire. Le concepteur de niveaux crée la hiérarchie initiale et le joueur la modifie au cours du jeu.
- Les commandes )SAVE et )CONTINUE en APL permettent de sauvegarder la totalité de son environnement de travail (workspace) en catastrophe, et de reprendre le tout ensuite exactement là où on l'avait laissé. Forth dispose d'un mécanisme analogue.
- Les langages SmallTalk et Common Lisp ont la capacité de sauver sur disque une image (en anglais snapshot) du système ou du programme en train de s'exécuter. L'exécution du programme correspondant à cette image peut être reprise plus tard.
- La notion de prévalence des objets (sérialisation transparente des graphes d'objets en mémoire et support des transactions sur ces objets) connaît un récent succès d'estime, à travers ses implémentations en Java (Prevayler) et Common Lisp (Elephant).
