- •Е.И. Асташева сетевые базы данных
- •Введение
- •1. Введение в базы данных
- •1.1. Что такое база данных
- •1.2. Структура базы данных
- •2. Иерархическая и сетевая модели организации данных
- •3. Реляционная модель базы данных
- •3.1. Домены и отношения
- •3.2. Целостность данных
- •3.3. Реляционная алгебра
- •3.4. Реляционное исчисление
- •4. Проектирование логической структуры базы данных
- •4.1. Концепция функциональной зависимости
- •4.2. Нормализация базы данных
- •4.3. Объектное моделирование
- •5. Функции защиты базы данных
- •5.1. Транзакции и параллелизм
- •5.2. Безопасность и целостность баз данных
- •6. Дополнительные аспекты реляционной технологии
- •6.1. Представления
- •6.2. Повышение производительности с помощью оптимизации
- •6.3. Домены, отношения и типы данных
- •6.4. Неопределенные значения и трехзначная логика
- •6.5. Распределенные базы данных
- •7. Технология физического хранения и доступа к данным
- •7.1. Основные этапы доступа к базе данных
- •7.2. Управление страницами
- •7.3. Процедура индексирования и хеширования
- •7.4. Сжатие данных
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
7. Технология физического хранения и доступа к данным
7.1. Основные этапы доступа к базе данных
Говоря о процессе работы с БД, нельзя не остановиться на вопросах хранения и методов доступа к данным. Вообще говоря, основные проблемы, связанные с физическим хранением данных, вызваны медленностью доступа и поиска, а также низкой скоростью передачи, поэтому основной целью повышения производительности системы с этой точки зрения является минимизация числа дисковых операций ввода-вывода данных.
Для хранения данных могут быть использованы различные структуры, обладающие разной производительностью, однако идеального способа хранения данных не существует. По этой причине СУБД должна содержать несколько структур хранения данных для разных задач и частей системы, а также предусматривать возможность изменения способов хранения в зависимости от изменяющихся требований к производительности системы.
Начнем с описания основных этапов процесса доступа к БД. Сначала СУБД определяет искомую запись в БД, для чего в оперативную память помещается набор записей, в котором ищется запрашиваемая, а для извлечения записи запрашивается так называемый диспетчер файлов. Диспетчер файлов определяет страницу, на которой находится искомая запись, а затем для извлечения этой страницы запрашивается диспетчер дисков. Диспетчер дисков определяет физическое расположение страницы на устройстве хранения информации и посылает запрос на ввод-вывод данных.
Таким образом, СУБД рассматривает БД как множество записей, просматриваемых при помощи диспетчера файлов. Последний рассматривает БД как набор страниц, просматриваемых с помощью диспетчера дисков, который уже непосредственно работает с устройствами хранения информации.
Заметим, что диспетчер дисков является частью операционной системы, с помощью которого выполняются все дисковые операции ввода-вывода. Для того, чтобы выполнять эти операции, диспетчеру необходимо обладать информацией о значениях физических адресов на диске, где располагаются те или иные данные.
Однако диспетчеру файлов такая информация совсем не нужна - вместо этого ему достаточно рассматривать диск как набор страниц строго фиксированного размера с уникальным идентификационным номером набора страниц. В свою очередь, каждая страница, обладает уникальным внутри данного набора идентификационным номером страницы, причем наборы не имеют общих страниц. При этом соответствие физических адресов на диске и номеров страниц достигается с помощью диспетчера дисков. Важнейшим преимуществом такой организации хранения данных является изоляция программного кода внутри диспетчера дисков, зависящего от конкретного устройства диска, за счет чего многие компоненты системы могут быть аппаратно независимыми.
Все страницы диска делятся на несвязанные наборы, а один из таких наборов, содержащий пустые страницы, соответственно содержит все имеющиеся свободные страницы, не используемые для размещения данных. Этот набор иногда называют свободным пространством на диске. При этом использование или освобождение страниц из наборов страниц осуществляется диспетчером дисков по запросу диспетчера файлов.
Основные операции, выполняемые диспетчером дисков с наборами страниц по запросу со стороны диспетчера файлов, следующие:
• извлечь страницу s из набора страниц n;
• заменить страницу s из набора страниц n;
• добавить новую страницу в набор страниц n;
• удалить страницу s из набора страниц n.
При работе с диском, как с набором хранимых файлов, диспетчер файлов использует все имеющиеся средства диспетчера дисков, при этом каждый набор страниц может содержать один или несколько хранимых файлов.
Каждый хранимый файл имеет уникальные в рассматриваемом наборе страниц имя или идентификационный номер, а каждая хранимая запись обладает идентификационным номером записи, уникальным в пределах данного хранимого файла.
С помощью операций с файлами в СУБД можно создавать структуры хранения и управлять, но следует иметь в виду, что в одних системах диспетчер файлов является компонентом операционной системы, а в других является частью СУБД однако принципы его работы существенно от этого не различаются. Основные операции с файлами, выполняемые диспетчером файлов, по запросу со стороны СУБД, следующие:
- извлечь хранимую запись z из хранимого файла f;
- заменить хранимую запись z в хранимом файле f;
- добавить новую хранимую запись z в хранимый файл f;
- удалить хранимую запись z из хранимого файла f;
- создать новый хранимый файл f;
- удалить хранимый файл f.
При хранении данных используют принцип кластеризации данных, в основе которого находится подход как можно более близкого физического размещения на диске логически связанных между собой и часто используемых данных. Физическая кластеризация данных достаточно важное условие высокой производительности, при этом различают внутрифайловую кластеризацию, когда она осуществляется в рамках одного хранимого файла. Например, если в системе часто требуется осуществлять доступ к данным согласно порядковому номеру, то все записи следует физически размещать таким образом, чтобы первая запись была возле второй записи, вторая запись - возле третьей и т.д.
Другой вариант кластеризации - межфайловая, когда ею охватывается сразу несколько файлов. Это используют, если в системе часто требуется осуществлять доступ к неким записям и к данным, связанными с ними, при этом первые стараются разместить рядом со вторыми.
Разумеется, в каждый момент времени кластеризацию файла или набора файлов можно осуществлять только одним из этих способов. Внутрифайловую и межфайловую кластеризацию СУБД может осуществлять, размещая логически связанные записи на одной странице, если это возможно, или на соседних страницах. По этой причине СУБД важно иметь сведения не только о сохраненных файлах, но и о страницах: при создании в СУБД новой записи необходимо, чтобы она с помощью диспетчера файлов была размещена возле некоторой текущей страницы, т.е. на той же или, по крайней мере, на логически близкой странице. В свою очередь, диспетчер дисков должен обеспечить, чтобы логически близкие страницы были физически близко расположены на диске.
Конечно, кластеризация внутри СУБД возможна только в том случае, если администратор БД организует ее, при этом часто предусматривается использование нескольких различных типов кластеризации данных из разных файлов, при необходимости выбирая тот или иной ее тип.