Персистентность - life-prog

Персистентность в програмуванні означає здатність стану існувати довше, ніж процес, який створив його. Без цієї можливості, стан може існувати тільки в оперативній пам'яті і втрачається, коли оперативна пам'ять вимикається, наприклад, при виключенні комп'ютера.

Це досягається шляхом зберігання стану як даних на пристрої тривалого зберігання, такому як жорсткий диск або флеш-пам'ять.

Ортогональна або прозора персистентність

Персистентность називається «ортогональної» або «прозорою», якщо вона реалізована як внутрішня властивість середовища виконання програми. Середовище для ортогональної персистентності не вимагає ніяких спеціальних дій програм, які виконуються в ньому, для збереження або відновлення свого стану.

Неортогональних персистентність вимагає запису і читання даних на пристрої зберігання шляхом використання спеціальних інструкцій у програмі, для опису чого використовується допоміжне дієслово зберігати. При завершенні програма зберігає дані.

Перевага середовища ортогональної персистентності - прості і менш схильні до помилок програми.

Способи реалізації персистентності

образи системи

Недоліки. Зміни стану, зроблені в системі після останнього збереження образу губляться в разі збою або відключення системи. Збереження образу після кожного невеликого зміни може стати занадто часоемнім для більшості систем, тому образи не використовуються як метод простий персистентності для критичних систем.

Використання журналів - другий по простоті спосіб реалізації персистентності. Журнал роботи - процес збереження подій в лог перед застосуванням до системи. Такі логи називаються журналами.

На старті журнал Новомосковскется, і кожна дія повторно застосовується до системи, що дозволяє уникнути втрати даних у разі збою або відключення.

Журнали використовуються журнальними файловими системами і СУБД, де вони також називаються логами транзакцій або балками повторних дій.

Недоліки. Журнали часто поєднуються з іншими методиками персистентності, щоб вся (потенційно велика) історія всіх подій системи не вимагала повторного застосування при запуску системи.

Превалентность системи

Превалентність системи (System prevalence) - методика, що поєднує системні образи і журнали транзакцій, розглянуті вище, щоб обійти їх обмеження.

Недоліки: Превалентна система повинна мати достатньо оперативної пам'яті для розміщення всього стану системи.

«Брудна» запис

«Брудна» запис складається в запису на зовнішній пристрій тільки тих частин стану системи, які були змінені ( «забруднилися») після свого останнього запису. Наприклад, складні програми редагування документів використовувати «брудний» запис для збереження тільки тих частин документа, змінилися після останнього збереження.

Недоліки: Ця техніка вимагає перехоплення змін стану в рамках програми. Це досягається у непрозорий спосіб, що вимагає спеціальних викликів API збереження, або прозорим способом з автоматичною трансформацією програми. В результаті, код стає більш повільним, ніж нативний код, і його важче налагоджувати.

рівні персистентності

Будь-який рівень програмного забезпечення (software layer), що допомагає програмі зберегти стан, узагальнено називається рівнем персистентності. Більшість рівнів персистентності не досягають персистентності безпосередньо, а використовують основну СУБД.

СУБД використовують поєднання «брудної» записи і журналу транзакцій, розглянутих вище. Вони забезпечують не тільки персистентність, а й інші послуги, такі як запити, ревізії та контроль доступу.

Персистентні операційні системи

Персистентні ОС - операційні системи, що зберігають свій стан навіть після збою або несподіваного відключення. Комп'ютер залишається в тому ж стані, навіть якщо його відключити, подібно телевізора або будь простого пристрою. До операційним системам, які забезпечують таку можливість, відносяться:

  • CapROS, переробка EROS
  • Coyotos, нащадок EROS
  • EROS, нащадок KeyKOS
  • KeyKOS
  • Multics з однорівневим сховищем single-level store
  • Phantom

Схожі статті