Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

14.2.8. Збереженість

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

  • Проміжні результати обчислення виразів.

  • Локальні змінні у виклику процедур.

  • Власні змінні (як в ALGOL-60), глобальні змінні й динамічно створювані дані.

  • Дані, що зберігаються між сеансами виконання програми.

  • Дані, що зберігаються під час переходу на нову версію програми.

  • Дані, які взагалі переживають програму.

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

Уніфікація принципів паралелізму для об'єктів дозволила створити паралельні мови програмування. Аналогічним чином, введення збереженості, як нормальної складової частини об'єктного підходу приводить нас до об’єктно-орієнтованих баз даних (OODB, object-oriented databases). На практиці подібні бази даних будуються на основі перевірених часом моделей - послідовних, індексованих, ієрархічних, мережних або реляційних, але програміст може ввести абстракцію об’єктно-орієнтованого інтерфейсу, через який запити до бази даних та інших операцій виконуються в термінах об'єктів, час життя яких перевищує час життя окремої програми. Така уніфікація значно спрощує розроблення окремих видів програм, дозволяючи, зокрема, застосувати єдиний підхід до різних сегментів програми, одні із яких пов'язані з базами даних, а інші не мають такого зв'язку.

Мови програмування, як правило, не підтримують поняття збереженості; за виключенням мови Smalltalk, в якій є протоколи для збереження об'єктів на диску й завантаження з диску. Однак, записувати об'єкти в неструктуровані файли - це все-таки наївний підхід, придатний тільки для невеликих систем. Як правило, збереженість досягається застосуванням (нечисленних) комерційних OODB. Інший варіант - створити об’єктно-орієнтовану оболонку для реляційних СКБД; це краще, зокрема, для тих, хто вже вклав засоби в реляційну систему.

Збереженість - це не тільки проблема збереження даних. В OODB є сенс зберігати й класи, так, щоб програми могли правильно інтерпретувати дані. Це створює додаткові складнощі в міру збільшення обсягу даних, особливо, якщо клас об'єкту раптом треба було змінити.

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

Збереженість - здатність існувати об'єкта в часі, переживаючи його процес, що породив його, і (або) у просторі, переміщуючись зі свого первісного адресного простору.