Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МР - занятие № 2.doc
Скачиваний:
2
Добавлен:
24.08.2019
Размер:
308.22 Кб
Скачать
    1. Оптимизация

Реляционные операторы, как уже отмечалось, выполняются на уровне множеств. Поэтому реляционные языки называют непроцедурными, так как пользователь определяет, что делать, но не как делать. Фактически пользователь определяет, что ему нужно, без указания процедуры получения результата. Процесс «навигации» по хранимой БД с целью удовлетворения запроса пользователя выполняется автоматически, а не пользователем вручную. Поэтому реляционные системы иногда называют системами автоматической навигации. В нереляционных системах ответственность за навигацию по базе данных несет, в основном, сам пользователь. Можно сказать, что реляционные языки, такие как SQL, обладают более высоким уровнем абстракции, чем типичные языки программирования (например, C++), либо подъязыки данных, относящиеся к нереляционным СУБД.

Ответственность за то, как именно выполняется автоматическая навигация, несет очень важный компонент СУБД – оптимизатор. Другими словами, работа оптимизатора заключается в том, чтобы для каждого запроса пользователя выбрать самый эффективный способ выполнения этого запроса.

Пример 2.4. Предположим, что пользователь сделал следующий запрос:

RESULT := (Служащие WHERE НомСлужащего = ‘С4’) { Зарплата }

Здесь выражение круглых скобках представляет запрос выборки строк, а выражение в фигурных скобках – выборку столбцов (или проекцию). В результате выполнения данного запроса результат будет содержать одну строку из одного столбца, содержащей величин зарплаты служащего с номером ‘C4’.

В данном случае возможны несколько способов поиска необходимых данных:

  1. Последовательный физический просмотр переменной-отношения «Служащие», пока требуемая запись не будет найдена.

  2. Если есть индекс для столбца НомСлужащего переменной-отношения, то переход с помощью этого индекса непосредственно к данным служащего ‘C4’.

Оптимизатор выберет, какую стратегию следует применить.

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

  • На какие переменные-отношения есть ссылки в запросе;

  • Насколько велики эти переменные-отношения;

  • Какие существуют индексы;

  • Насколько избирательны эти индексы;

  • Как физически группируются данные на диски;

  • Какие реляционные операции используются и т.д.

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

    1. Каталог

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

Замечательным свойством реляционных систем является то, что каталог состоит также из переменных-отношений (или системных переменных-отношений, названных так для того, чтобы отличать их от пользовательских). В результате пользователь может обращаться к каталогу, как и к своим данным. Например, в каталоге обычно содержатся системные переменные-отношения TABLES и COLUMNS, назначение которых – описать известные системе таблицы (т.е. переменные-отношения) и столбцы этих таблиц.

Примечание. Кроме того, каталог должен описывать самого себя, а значит, в системных переменных-отношениях должны присутствовать записи, соответствующие переменным-отношениям каталога.