- •Е.И. Асташева сетевые базы данных
- •Введение
- •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.2. Управление страницами
Основной функцией диспетчера дисков является скрытие от диспетчера файлов всех деталей физических дисковых операций ввода-вывода и замена их логическими страничными операциями ввода-вывода. Эта функция диспетчера дисков называется управлением страницами, которая реализуется в следующей последовательности, например, если в каждой используемой таблице требуется логически упорядочить записи согласно ключевому полю.
На начальном этапе БД совсем не содержит данных, но в ней имеется набор пустых страниц, последовательно пронумерованных начиная с номера один, в котором содержатся все страницы диска, за исключением страницы с нулевым номером, которой отводится особая роль. Для размещения записей с данными X диспетчер файлов создаст набор страниц и разместит на них данные X. С этой целью диспетчер дисков переместит соответствующее количество страниц из набора пустых страниц и пометит их как набор страниц данных ввода-вывода на основе страниц от СУБД и предоставляет ей возможность вести работу только с хранимыми записями и файлами. Такая работа, выполняемая диспетчером файлов, называется управлением хранимыми записями.
Предположим, что на одной странице могут быть размещены не одна, а несколько хранимых записей. При вставке небольшого количества хранимых записей, например, данных X, на соответствующей странице теперь может оставаться достаточно свободного пространства. Поэтому, если возникнет необходимость вставить новую запись данных X, то диспетчер файлов сохранит эту запись на той же странице вслед за последней сохраненной записью.
Теперь, при возникновении необходимости удалить существующую запись данных X, это выполнит диспетчер файлов и, если образовался пустой промежуток между записями на странице, он передвинет записи к началу страницы. Это говорит о том, что логическая последовательность хранимых записей для данной страницы может соответствовать физической последовательности, заданной внутри этой страницы. Для этого диспетчер файлов может передвигать отдельные записи вверх или вниз, размещая все записи в верхней части страницы и оставляя свободное пространство в нижней части страницы. Более того, если СУБД необходимо вставить новую запись на рассматриваемую страницу, то диспетчер файлов разместит запись в соответствии с ее идентификационным номером.
Итак, хранимые записи идентифицируются с помощью идентификационного номера записи z, который состоит из двух частей: номера страницы s, на которой данная запись находится, и информации о смещении записи от конца страницы s. Последняя, в свою очередь, содержит информацию о смещения записи z от начала страницы s. Эта схема в некоторой степени сочетает быстроту непосредственной адресации и гибкость косвенной адресации, т.к. записи внутри страницы могут сдвигаться без изменения идентификационных номеров записей, а корректируются только значения локальных смещений в конце страницы. К тому же, если известен идентификационный номер записей, доступ к требуемой записи осуществляется достаточно быстро, поскольку используется только доступ к данной странице.
Иногда для работы с некоторой записью может потребоваться доступ к двум страницам. Такая ситуация может возникнуть, например, если длина записи превышает размер страницы. Тогда такая запись будет размещена на специальной странице переполнения, а исходный указатель на идентификационный номер прежней записи будет заменен новым. При следующем переполнении страницы запись опять перемещается на новую страницу переполнения с соответствующим изменением указателя.
Следует обратить внимание на то, что для некоторого хранимого файла всегда можно осуществить последовательный доступ ко всем хранимым записям, т. е. доступ согласно последовательности записей внутри страницы и последовательности страниц внутри набора страниц, чаще всего, в порядке возрастания идентификационных номеров записей. Такая последовательность называется физической, хотя надо понимать, что она не обязательно соответствует физическому расположению данных на диске. Доступ к хранимому файлу можно осуществить согласно физической последовательности, даже если несколько файлов находятся на одной и той же странице, при этом записи, которые не относятся к искомому файлу, будут пропущены при последовательном просмотре содержания данной страницы.
Кроме того, поля хранимой записи используются в СУБД для составления индексов и т.д., однако диспетчер файлов эту информацию не использует. Таким образом, важным отличием между диспетчером файлов и СУБД является представление хранимой записи: с точки зрения СУБД хранимая запись обладает внутренней структурой, а с точки зрения диспетчера файлов это всего лишь строка байтов.
Однако существуют более совершенные способы упорядочения записей и способы доступа по сравнению с физической последовательностью: использование индексирования, хеширования, цепочек указателей, а также технологии сжатия. При этом часто эти способы используются совместно один на основе другого.