Мы рассмотрели отдельные аспекты работы СУБД. Теперь попробуем кратко обобщить все, что узнали, и построим некоторую условную обобщенную структуру СУБД. На рис. 14.1 нзрбражена такая структура. Здесь условно показано, что СУБД должна управлять внешней памятью, в котором расположены файлы с данными, файлы журналов и файлы системного каталога.
С другой стороны, СУБД управляет и оперативной памятью, в которой располагаются буфера с данными, буфера журналов, данные системного каталога, которые необходимы для поддержки целостности и проверки привилегии пользователей. Кроме того, и оперативной памяти во время работы СУБД располагается информация, которая соответствует текущему состоянию обработки запросов, там хранятся планы выполнения скомпилированных запросов и т. д.
Модуль управления внешней памятью обеспечивает создание необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например для ускорения доступа к данным в некоторых случаях (обычно для этого используются индексы). Как мы рассматривали ранее, в некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа производится вплоть до уровня устройств внешней памяти. Но подчеркнем, что в развитых СУБД пользователи в любом случае не обязаны знать, использует ли СУБД файловую систему, и если использует, то как организованы файлы. В частности, СУБД поддерживает собственную систему именования объектов БД.
Модуль управления буферами оперативной памяти предназначен для решения задач эффективной буферизации, которая используется практически для выполнения всех остальных функций СУБД.
Условно оперативную память, которой управляет СУБД, можно представить как совокупность буферов, хранящих страницы данных, буферов, хранящих страницы журналов транзакций и область совместно используемого пула (см. рис. 14.2). Последняя область содержит фрагменты системного каталога, которые необходимо постоянно держать в оперативной памяти, чтобы ускорить обработку запросов пользователей, и область операторов SQL с курсорами.
Фрагменты системного каталога в некоторых реализациях называются словарем данных. В стандарте SQL2 определены общие требования к системному каталогу.
Системная таблица |
Содержание |
||
USERS - |
Одна строка для каждого идентификатора пользователя с зашифрованным паролем |
||
SCHEMA |
Одна строка для каждой информационной схемы |
||
DATA_TYPE_DESCRIPTION |
Одна строка для каждого домена или столбца, имеющего определенный тип данных |
||
DOMAINS |
Одна строка для каждого домена |
||
DOMAIN_CONSTRA1NS |
Одна строка для каждого ограничивающего условия, наложенного на домен |
||
TABLES |
Одна строка для каждой таблицы с указанием имени, владельца, количества столбцов, размеров данных столбцов, и т. д. |
||
VIEWS |
Одна строка для каждого представления с указанием имени, имени владельца, запроса, который определяет представление и т. д. |
||
COLUMNS |
Одна строка для каждого столбца с указанием имени столбца, имени таблицы или представления, к которому он относится, типа данных столбца, его размера, допустимости или недопустимости неопределенных значений (NULL ) и т. д. |
||
VIEW_TABLE_USAGE |
Одна стр.ока для каждой таблицы, на которую имеется ссылка в каком-либо представлении (если представление многотабличное, то для каждой таблицы заносится одна строка) |
||
VIEW_COLUMN_USAGE |
Одна строка для каждого столбца, на который имеется ссылка в некотором представлении |
||
TABLE_CONSTRAINS |
Одна строка для каждого условия ограничения, заданного в каком-либо определении таблицы |
||
KEY_COLUMN_USAGE |
Одна строка для каждого столбца, на который наложено условие уникальности и который присутствует в определении первичного или внешнего ключа (если первичный или внешний ключ заданы несколькими столбцами, то для каждого из них задается отдельная строка) |
||
REFERENTIAL_CONSTRAINTS |
Одна строка для каждого внешнего ключа, присутствующего в определении таблицы |
||
CHECK_ CONSTRAINTS |
Одна строка для каждого условия проверки, заданного в определении таблицы |
||
CHECK_TABLE_USAGE |
Одна строка для каждой таблицы, на которую имеется ссылка в условиях проверки, ограничительном условии для домена или всей таблицы |
||
Системная таблица |
Содержание |
||
CHECK_COLUMN_USAGE |
Одна строка для каждого столбца, на который имеется ссылка в условии проверки, ограничительном условии для домена или ином ограничительном условии |
||
ASSERTIONS |
Одна строка для каждого декларативного утверждения целостности |
||
TABLE_PRIVILEGES |
Одна строка для каждой привилегии, предоставленной на какую-либо таблицу |
||
COLUMN_PRIVILEGES |
Одна строка для каждой привилегии, предоставленной на какой-либо столбец |
||
USAGE_PRIVILEGES |
Одна строка для каждой привилегии, предоставленной на какой-либо домен, набор символов и т. д. |
||
CHARACTER_SETS |
Одна строка для каждого заданного набора символов |
||
COLLATIONS |
Одна строка для заданной последовательности |
||
TRANSLATIONS |
Одна строка для каждого заданного преобразования |
||
SQL_LAGUAGES |
Одна строка для каждого заданного языка, поддерживаемого СУБД |
||