Развитие идей и приложений реляционной СУБД System R


Трансляция запросов и поддержка времени выполнения - часть 13


При выполнении первого обращения к XRDI производится динамическая загрузка модуля доступа в виртуальную память задачи (в среде MVS модуль доступа загружается в область памяти с отличным от пользовательского ключем защиты) и далее выполнение транзакции происходит путем соответствующих вызовов операций в секциях модуля доступа (и, конечно, стоящих за ними вызовов операций RSS).

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

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

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


Начало  Назад  Вперед