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


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


допустимо ли по отношению к его результату использовать курсор.)

Таким образом, базовым интерфейсом System R следует считать интерфейс первого типа, когда предложения SQL встраиваются в программу на традиционном языке программирования. С использованием этого базового интерфейса можно создать множество различных прикладных систем, в том числе, и интерактивных. Так что средство интерактивного взаимодействие с использованием базового диалекта SQL - это лишь пример одной из возможных прикладных программ. В коммерческих развитиях System R DB2 и SQL/DS таких интерфейсных подсистем гораздо больше. Например, на тех же принципах реализован интерфейс Query-By-Ecsample [73]. Поэтому в дальнейшей части этого подраздела нас будет интересовать реализация в System R только базового интерфейса.

Как описывется в [26], схема обработки программы на традиционном языке (PL/1, Cobol или ассемблер), включающей предложения SQL, является следующей. Программа обрабатывается прекомпилятором SQL, который просматривает исходный текст в поиске специальным образом помеченных предложений SQL. При нахождении каждого такого предложения прекомпилятор выполняет его трехфазную обработку.

Для выполнения первой фазы обработки вызывается программа грамматического разбора предложений SQL. Эта программа производит синтаксический анализ полученного предложения и формирует его внутреннее древовидное представление. Кроме того, программа грамматического разбора формирует два списка имен - список имен "входных" переменных, значениями которых должен параметризоваться запрос, и список имен "выходных" переменных, в которые должны помещаться значения полей кортежей результирующего отношения запроса при его последовательном просмотре. Внутреннее представление запроса и два этих списка являются ответными параметрами программы грамматического разбора.

На второй фазе, которая начинается, естественно, только при успешном завершении первой, выработанное дерево запроса передается следующему компоненту, который в System R называется оптимизатором. (Мы выделили это слово, поскольку компонент выполняет далеко не только оптимизирующие действия.) Если при выполнении грамматического разбора предложений SQL взаимодействие с базой данных не требуется, то оптимизатор активно использует данные из служебных отношений-каталогов базы данных.


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