Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объектно-ориентированные ИС (Моор).doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1.91 Mб
Скачать

2.4. Прочие аспекты функционирования оосубд

В разделе 2.2 были указаны три области, в которых применение реляционных СУБД связано с возникновением неразрешимых проблем, а именно:

  • продолжительные транзакции;

  • поддержка нескольких версий;

  • эволюция схемы.

В настоящем разделе описаны способы решения этих проблем в объектно-ориентированных СУБД. Здесь также рассматриваются возможные варианты архитектур ООСУБД и кратко описаны средства контроля производительности.

2.4.1. Транзакции

Транзакция является логической единицей работы, которая всегда должна переводить базу данных из одного непротиворечивого состояния в другое. В деловых приложениях обычно используются кратковременные транзакции, тогда как в инженерных и проектных приложениях, наоборот, транзакции в основном оперируют сложными объектами и могут выполняться в течение нескольких часов или даже суток. Ясно, что для поддержки долговременных транзакций необходимо использовать другие протоколы, которые отличаются от протоколов, применяемых в обычных приложениях баз данных.

В ООСУБД логической единицей управления параллельным выполнением и восстановлением является объект, хотя в целях повышения производительности могут использоваться более крупные единицы. Управление параллельным выполнением позволяет избежать возникновения конфликтов при доступе к базе данных со стороны многих пользователей. Протоколы на основе блокировки являются наиболее распространенным механизмом управления параллельным выполнением, используемым в ООСУБД для предотвращения конфликтов. Однако для пользователя, который инициировал долговременную транзакцию, будет совершенно неприемлемым, если из-за конфликта блокировок его транзакция будет отменена, а результаты всей проделанной работы утрачены. Для решения этой проблемы можно воспользоваться следующими двумя средствами:

  • протокол управления параллельным выполнением с поддержкой многих версий:

  • усовершенствованная модель обработки транзакций, например, с использованием механизма вложенных транзакций, хроник или многоуровневыхтранзакций.

2.4.2. Поддержка многих версий

Существует много приложений, в которых необходимо обеспечить доступ к предыдущему состоянию объекта. Например, разработка некоторого проекта часто имеет вид экспериментального пошагового процесса, состояние объектов которого меняется со временем. Поэтому в базах данных, хранящих информацию проектов, необходимо отслеживать эволюцию проектируемых объектов и изменения, вносимые в проект разными транзакциями.

Процесс сопровождения эволюции объектов называется управлением версиями. Версия объекта представляет некоторое определенное состояние объекта, а история версий — хронологию эволюции объекта. Механизм отслеживания версий должен управлять изменениями свойств объектов таким образом, чтобы ссылки на объект всегда указывали на правильную версию объекта. Рассмотрим один из способов управления версиями: будем рассматривать следующие три типа версий:

  • временные версии. Временная версия считается нестабильной и может быть обновлена и удалена. Она может быть создана заново на основании ранее выпущенной версии некоторого объекта, взятой из открытой базы данных. Она может также создаваться на основе рабочей или временной версии объекта из закрытой базы данных. В последнем случае базовая временная версия становится рабочей версией. Временные версии хранятся в закрытом рабочем пространстве разработчика проекта;

  • рабочие версии. Рабочая версия считается стабильной и не может быть обновлена, но может быть удалена только ее создателем. Эта версия также хранится в закрытом рабочем пространстве разработчика проекта;

  • выпущенные версии. Выпущенная версия считается стабильной и не может быть обновлена или удалена. Она хранится в открытой базе данных, в которую помещается в результате извлечения рабочей версии объекта из закрытой базы данных.

Для повышения производительности и уменьшения потребности в памяти для хранения поддерживаемых версий в системе может быть предусмотрено требование, согласно которому приложение должно сообщать о необходимости поддержки версий для некоторого класса. При создании экземпляра класса с поддержкой версий вместе с первой версией этого экземпляра создается его универсальный объект, который содержит информацию, необходимую для управления версиями.