Сохраняемость
Сохраняемость (устойчивость) – способность объекта существовать во времени, переживая породивший его процесс, и/или в пространстве, перемещаясь из своего первоначального адресного пространства.
Любой программный объект существует в памяти и живет во времени. Спектр сохраняемости объектов охватывает:
- Промежуточные результаты вычисления выражений.
- Локальные переменные в вызове процедур.
- Собственные (статические) переменные функции, глобальные переменные и динамически создаваемые данные.
- Данные, сохраняющиеся между сеансами выполнения программы.
- Данные, сохраняемые при переходе на новую версию программы.
- Данные, которые вообще переживают программу.
Традиционно, первыми тремя уровнями занимаются языки программирования, а последними – базы данных. Языки программирования, как правило, не поддерживают сохраняемость в полном объеме (исключение – язык Smalltalk). Введение сохраняемости, как нормальной составной части объектного подхода приводит к объектно-ориентированным базам данных (OODB). На практике подобные базы данных строятся на основе проверенных временем моделей – последовательных, индексированных, иерархических, сетевых или реляционных, но программист может ввести абстракцию объектно-ориентированного интерфейса, через который запросы к базе данных и другие операции выполняются в терминах объектов, время жизни которых превосходит время жизни отдельной программы. При использовании одноуровневой памяти как в System/38 разработка OODB существенно упрощается.
Сохраняемость – это не только проблема сохранения данных. В OODB имеет смысл сохранять и классы, так, чтобы программы могли правильно интерпретировать данные. Это создает большие трудности по мере увеличения объема данных, особенно, если класс объекта вдруг потребовалось изменить.
В большинстве систем объектам при их создании отводится место в памяти, которое не изменяется и в котором объект находится всю свою жизнь. Однако для распределенных систем желательно обеспечивать возможность перенесения объектов в пространстве, так, чтобы их можно было переносить с машины на машину и даже при необходимости изменять форму представления объекта в памяти.