7.3.Структура сервера базы данных.
В заключение рассмотрим физическую организацию сервера базы данных. Как правило, он
включает следующие компоненты:
- подсистема взаимодействия с клиентским приложением Данный модуль отвечает
за поддержание связи с клиентом. Как правило, механизм его работы выглядит следующим
образом. Подсистема взаимодействия "прослушивает" сеть в ожидании клиентских запросов на
установление соединения. Когда такой запрос обнаруживается, порождается новый процесс,
который будет обеспечивать связь с данным клиентом. Клиенту сообщается идентификатор данного
процесса, в дальнейшем клиент передает свои запросы и получает данные взаимодействуя с
этим интерфейсным процессом. После того, как клиент закрывает соединение, обслуживавший
его процесс прекращается. Характеристики интерфейсных процессов зависят от операционной
системы, под которой исполняется сервер базы данных.
- подсистема синтаксического разбора запросов Данный модуль отвечает за компиляцию
поступающих от клиентов через интерфейсные процессы запросов во внутренний код, который
будет исполняться сервером. При ошибках компиляции соответствующие сообщения передаются
клиенту. Наиболее современные СУБД позволяют сохранять откомпилированный код запросов некоторое
время. Это позволяет избежать стадии компиляции при повторном обращении клиента к запросу.
- подсистема планирования выполнения запросов Данный модуль должен составить такой
план выполения запроса, чтобы он был обработан наиболее быстро. Для этого анализируются
условия выборок и соединений, устанавливается порядок их выполения. Пусть, например, надо
извлечь одного сотрудника из списка работников, в качестве критерия поиска задаются его имя и
фамилия. Возможны два плана выполения запроса: (1) вначале делается выборка всех сотрудников
с данным именем, из нее извлекаются записи, содержащие данную фамилию; (2) - наоборот,
вначале делается выборка по фамилии, затем по имени. Поскольку множество имен, как правило,
меньше множества фамилий, во втором случае запрос будет обработан быстрее, т.к. на втором
этапе здесь мы получим меньшую выборку. Планировщики запросов ведущих СУБД отслеживают
информацию о распределении значений в таблицах. План выполнения запроса включается в его
откомпилированный код.
- подсистема выполнения транзакций Здесь выполняется оптимизированный код запроса,
обновляются индексы, выполняются в случае необходимости триггеры и хранимые процедуры.
Как правило, несколько запросов могут исполняться параллельно, при этом обеспечивается
необходимый уровень их изоляции. Также ведется журнал транзакций, обеспечивается их
завершение и корректный откат.
- подсистема упарвления памятью Этот компонент отвечает за считывание данных с
диска в оперативную память, синхронизацию обновленний с данными диске и т.д. Он может
использовать файловые функции операционной системы, но часто СУБД имеет свои собственные
низкоуровневые средства доступа к дискам.
Следующая глава: 8.Базы знаний.
Введение в базы данных. (c) Зеленков
Ю.А. (yz@yars.free.net) 1997 г.
(c) Центр Интернет ЯрГУ