
- •2 Модели и типы данных
- •2.1 Иерархическая модель данных
- •2.2. Сетевая модель данных
- •2.3. Реляционная модель данных
- •2.4. Многомерная модель данных
- •2.5. Объектно-ориентированная модель данных
- •2.6. Объектно- реляционная модель данных
- •2.7. Типы данных
- •2.8. Выбор моделей данных
- •2.9. Вопросы реализации баз данных на физическом уровне
- •2.9.1 Методы физического доступа
- •2.9.2 Сравнение методов последовательного и прямого доступа
- •2.9.3Поиск в файлах с помощью хэша
- •2.9.3.1 Сущность метода хэширования
- •2.9.3.2Стратегия разрешения коллизий с областью переполнения
- •2.9.3.3Разрешения коллизий при стратегии свободного замещения
- •2.9.4Поиск с помощью индексных файлов
- •2.9.4.1Типы индексных файлов
- •2.9.4.2 Файлы с плотным индексом или индексно-прямые файлы
- •2.9.4.2 Файлы с неплотным индексом или индексно-последовательные файлы
- •2.9.5 Организация данных на основе использования в-деревьев
- •2.9.5.1 Терминология и разновидности графов типа «дерево»
- •2.9.5.2 Индексирование на основе в-деревьев
- •2.9.5.3 Индексирование и поиск на основе использования двоичных деревьев
- •2.10 Выводы по итогам обзора моделей данных и методов доступа
2.9.2 Сравнение методов последовательного и прямого доступа
С точки зрения пользователя, файлом называется поименованная линейная последовательность записей, расположенных на внешних носителях.
На рис. 2.13представлена такая условная последовательность записей.
Рис. 2.13. Файл как линейная последовательность
записей
Так как файл - это линейная последовательность записей, то всегда в файле можно определить текущую запись, предшествующую ей и следующую за ней. Всегда существует понятие первой и последней записи файла. Не вдаваясь в особенности физической организации внешней памяти, выделим в ней те черты, которые существенны для рассмотрения нашей темы.
В соответствии с методами управления доступом различают устройства внешней памяти с произвольной (прямой) адресацией (магнитные и оптические диски) и устройствас последовательной адресацией (магнитофоны, стримеры).
На устройствах с произвольной адресацией теоретически возможна установка головок чтения-записи в произвольное место мгновенно. Практически существует время позиционирования головки, которое весьма мало по сравнению со временем считывания-записи.
В устройствах с последовательным доступом для получения доступа к некоторому элементу требуется «перемотать (пройти)» все предшествующие ему элементы информации. На таких устройствах вся память рассматривается как линейная последовательность информационных элементов (см. рис.2.14).
Рис. 2.14. Модель хранения информации на устройстве последовательного доступа
На устройствах последовательного доступа могут быть организованы файлы только последовательного доступа.
Файлы с переменной длиной записи всегда являются файлами последовательного доступа. Они могут быть организованы двумя способами:
1. Конец записи отмечается специальным маркером.
|
Запись 1 |
X |
Запись 2 |
X |
Запись 3 |
X |
2. В начале каждой записи записывается ее длина.
|
LZ1 |
Запись 1 |
LZ2 |
Запись2 |
LZ3 |
Запись 3 |
Здесь LZN — длина N-й записи.
В частности, при иерархически последовательном методе организации данных записи хранятся в логической последовательности, файл имеет постоянный размер, указатели могут отсутствовать. Данные хранятся в главном файле, а обновление требует создания нового главного [4, 10, 11] файла с упорядочением, для чего используется вспомогательный файл. Эффективность использования памяти близка к 100%, эффективность доступа низка.
Метод удобен для режима 1, однако быстродействие в режиме 2 мало: для его повышения необходимо использовать бинарный поиск (В- и В+-деревья). Время включения и удаления записей значительно.
Файлы с постоянной длиной записи, расположенные на устройствах прямого доступа (УПД), являются файлами прямого доступа.
В этих файлах физический адрес расположения нужной записи может быть вычислен по номеру записи (NZ).
Для каждого файла в системе хранится следующая информация:
имя файла;
тип файла (например, расширение или другие характеристики);
размер записи;
количество занятых физических блоков;
базовый начальный адрес;
ссылка на сегмент расширения;
способ доступа (код защиты).
Для файлов с постоянной длиной записей, которые плотно и последовательно по номерам размещены на ВЗУ, адрес размещения записи с номером NZможет быть вычислен по формуле:
ВА +(NZ - 1) * LZ + 1,
где ВА — базовый адрес, LZ — длина записи.
Выделяют два вида адресов: относительный и абсолютный. Абсолютный адрес записи включает номера следующих объектов: устройства, цилиндра, дорожки, блока. В качестве базового адреса можно зафиксировать часть этих номеров, после чего относительно него задается (вычисляется) относительный адрес записи (который, естественно, короче).
Как уже сказано, если можно всегда определить адрес, на который необходимо позиционировать механизм считывания-записи, то устройства прямого доступа делают это практически мгновенно, поэтому для таких файлов чтение произвольной записи практически не зависит от ее номера. Файлы прямого доступа обеспечивают наиболее быстрый доступ к произвольным записям, и их использование считается довольно перспективным в системах баз данных.
Однако, далеко не всегда возможно хранить информацию в виде файлов прямого доступа, но главное — это то, что доступ по номеру записи в базах данных весьма неэффективен. Чаще всего в базах данных необходим поиск по первичному или возможному ключам, иногда необходима выборка по внешним (вторичным) ключам. Во всех этих случаях мы знаем значение ключа, но не знаем физического номера, а значит и адреса записи, который соответствует этому ключу.
В прямом методе доступа предполагается наличие взаимно однозначного соответствия между ключом записи и ее физическим адресом, определяемым номером записи.В этом методе необходимо математическое преобразование ключа в адрес. При этом надо четко знать исходные данные и организацию памяти. Ключи должны быть уникальными.
При организации файлов прямого доступа в некоторых (очень редких) случаях возможно построение функции, которая по значению ключа однозначно вычисляет адрес (номер записи файла).
NZ = F(K),
где NZ — номер записи, К — значение ключа, F( ) — функция.
Функция F() при этом должна быть линейной, чтобы обеспечивать однозначное соответствие.Эффективность доступа равна 1, а эффективность хранения зависит от плотности ключей.
Однако далеко не всегда удается построить взаимно однозначное соответствие между значениями ключа и номерами записей. Часто бывает, что значения ключей разбросаны по нескольким диапазонам. В этом случае не удается построить взаимно однозначную функцию, либо эта функция будет иметь множество незадействованных значений, которые соответствуют недопустимым значениям ключа. В подобных случаях применяют различные методы хэширования (рандомизации) и создают специальные хэш- функции.