Функции администратора. Управление памятью. Управление многопользовательским доступом. Экспорт и импорт данных, страница 2

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

Внешняя память каждой БД структурирована следующим образом:

·  логическая единица памяти (табличное пространство, раздел) - используется для разделения памяти между таблицами БД. В табличном пространстве (разделе) находится одна или несколько таблиц, но, как правило, каждая таблица может находиться только в одном табличном пространстве (разделе). Размер логической единицы памяти складывается из размеров входящих в нее системных единиц памяти и может превышать предельно допустимые в ФС размеры файла и даже диска.

·  системная единица памяти (контейнер, файл) - используется для связи с ФС. Системная единица памяти соответствует единице хранения данных в ФС (файлу, набору данных). Логическая единица включает в себя одну или несколько системных единиц, которые могут располагаться в разных частях ФС (каталогах), в том числе и на разных дисках. При создании системной единицы указывается ее размер, требуемый ресурс может быть либо выделен сразу, либо выделяться постепенно по мере появления в нем необходимости. Таблицы, входящие в логическую единицу, могут быть распределены по входящим в нее системным единицам произвольным образом.

·  физическая единица памяти (страница, блок) - единица обмена между внешней и оперативной памятью. Обычно размер этой единицы бывает 2 - 4 – 8 Кбайт. Страница (блок) содержит данные, относящиеся только к одной таблице.

2.2. Внутренняя структура хранения данных

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

В современных версиях языка SQL допускаются "длинные" типы данных, размер которых может исчисляться десятками и более килобайт (например, LONG CHAR или BLOB). В соответствующих полях физических записях для таких значений хранятся не сами данные, а указатели на их размещение в специально выделенных для них пространствах памяти.

Наряду с таблицами память БД выделяется и для индексов. Управление индексной памятью - такое же, как и табличной, но структура индексов в корне отличается от структуры табличных данных. Для индексов используются структуры хешированных таблиц, двоичных деревьев или B+-деревьев. Последняя структура характеризуется тем, что каждый узел дерева содержит упорядоченный массив ключей и массив указателей на узлы нижнего уровня (или на листья), которые содержат ключи, лежащие между двумя соседними ключами массива в текущем узле. Поскольку узлы B+-дерева не заполняются до предела, изменения в дереве (добавление и удаление элементов) в значительном количестве случаев могут быть локализованы изменениями в отдельном узле и не приводят к изменению всей структуры дерева.