В информатике персистентность относится к характеристике состояния системы, которая переживает (сохраняется дольше), чем процесс , который ее создал. На практике это достигается путем сохранения состояния в виде данных в хранилище данных компьютера . Программы должны передавать данные на устройства хранения и с них и должны предоставлять сопоставления из структур данных собственного языка программирования в структуры данных устройства хранения. [1] [2]
Например, программы редактирования изображений или текстовые процессоры достигают сохранения состояния путем сохранения своих документов в файлах .
Сохранение называется « ортогональным » или «прозрачным», когда оно реализовано как внутреннее свойство среды выполнения программы. Среда ортогонального сохранения не требует никаких специальных действий от программ, работающих в ней, для извлечения или сохранения их состояния .
Неортогональное сохранение требует, чтобы данные записывались в хранилище и считывались из него с использованием определенных инструкций в программе, что приводит к использованию глагола сохранять как переходного: по завершении программа сохраняет данные .
Преимущество ортогональных сред сохранения заключается в более простых и менее подверженных ошибкам программах. [ необходима цитата ]
Термин «persistent» был впервые введен Аткинсоном и Моррисоном [1] в смысле ортогональной персистентности: они использовали прилагательное, а не глагол, чтобы подчеркнуть персистентность как свойство данных, в отличие от императивного действия, выполняемого программой. Использование переходного глагола «persist» (описывающего действие, выполняемое программой) является обратной конструкцией.
Ортогональное сохранение широко применяется в операционных системах для спящего режима и в системах виртуализации платформ , таких как VMware и VirtualBox, для сохранения состояния.
Исследовательские прототипы языков, такие как PS-algol , Napier88 , Fibonacci и pJama, успешно продемонстрировали концепции и преимущества для программистов.
Использование системных образов — простейшая стратегия сохранения. Гибернация ноутбука — пример ортогонального сохранения с использованием системного образа, поскольку она не требует никаких действий со стороны программ, работающих на машине. Примером неортогонального сохранения с использованием системного образа является простая программа редактирования текста, выполняющая определенные инструкции для сохранения всего документа в файл.
Недостатки : Требуется достаточно оперативной памяти для хранения всего состояния системы. Изменения состояния, внесенные в систему после сохранения ее последнего образа, теряются в случае сбоя или выключения системы. Сохранение образа для каждого отдельного изменения было бы слишком трудоемким для большинства систем, поэтому образы не используются в качестве единственного метода сохранения для критических систем.
Использование журналов — вторая простейшая техника сохранения. Журналирование — это процесс сохранения событий в журнале перед тем, как каждое из них будет применено к системе. Такие журналы называются журналами.
При запуске журнал считывается, и каждое событие повторно применяется к системе, что позволяет избежать потери данных в случае сбоя или завершения работы системы.
Например, вся история пользовательских команд «Отменить/Повторить» в программе редактирования изображений, записанная в файл, представляет собой журнал, позволяющий восстановить состояние отредактированного изображения в любой момент времени.
Журналы используются в файловых системах журналирования , распространенных системах и системах управления базами данных , где их также называют «журналами транзакций» или «журналами повторного выполнения».
Недостатки : Когда журналы используются исключительно, вся (потенциально большая) история всех системных событий должна быть повторно применена при каждом запуске системы. В результате журналы часто объединяются с другими методами сохранения.
Этот метод заключается в записи в хранилище только тех частей состояния системы, которые были изменены (являются грязными) с момента их последней записи. Например, сложные приложения для редактирования документов будут использовать грязные записи для сохранения только тех частей документа, которые были фактически изменены с момента последнего сохранения.
Недостатки: Этот метод требует перехвата изменений состояния в программе. Это достигается непрозрачным способом, требуя определенных вызовов API хранилища или прозрачным способом с автоматическим преобразованием программы . Это приводит к коду, который медленнее собственного кода и сложнее для отладки.
Любой программный слой , который упрощает сохранение состояния программы, обычно называется слоем сохранения. Большинство слоев сохранения не достигают сохранения напрямую, а используют базовую систему управления базами данных .
Распространенность системы — это метод, объединяющий образы системы и журналы транзакций, упомянутые выше, для преодоления их ограничений.
Недостатки: Распространенная система должна иметь достаточно оперативной памяти для хранения всего состояния системы.
СУБД используют комбинацию грязных записей и методов журналирования транзакций, упомянутых выше. Они обеспечивают не только сохранение, но и другие услуги, такие как запросы, аудит и контроль доступа.
Устойчивые операционные системы — это операционные системы , которые остаются устойчивыми даже после сбоя или неожиданного выключения. Операционные системы, которые используют эту возможность, включают