- •Логические и физические записи данных, виды организации файлов
- •Смешанные файлы
- •Последовательные файлы
- •Индексы, индексные и индексированные файлы
- •Многоуровневые индексы
- •Индексно – последовательные файлы
- •Хешированные файлы (файлы прямого доступа)
- •Метод открытой адресации
- •Метод области переполнения
- •Контрольные вопросы и упражнения
Последовательные файлы
В последовательных файлах (sequential file) записи имеют фиксированный формат. Все они имеют одинаковую длину и состоят из одинакового количества полей фиксированной длины. Длина и позиция каждого поля в записи известны, поэтому адрес записи можно вычислить по её позиции (индексу). Смещение записи от начала файла определяется умножением индекса записи на её длину.
Последовательные файлы разделяются на 2 разновидности:
Последовательные неупорядоченные файлы
Последовательные упорядоченные файлы. Последовательные неупорядоченные файлы
Структура последовательного неупорядоченного файла:
Поле
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Запись
Записи размещаются в файле в том же порядке, в котором они в него добавляются. Новая запись помещается на последнюю страницу файла. Когда на последней странице не хватает места, то в файл добавляется новая страница. Таким образом, очень просто и быстро выполняются операции вставки записей. Но для поиска требуемой записи нужно произвести последовательный перебор записей файла (последовательный или линейный поиск) с загрузкой физических страниц в ОП.
Для удаления записи также нужно найти нужную страницу, на которой размещается запись, потом удалить нужную запись, а после этого сохранить измененную страницу на диске. Пространство удаленных записей повторно не используется. Поэтому необходима периодическая реорганизация таких файлов («сборка мусора»), которая выполняется в определенные отрезки времени, устанавливаемые администратором БД.
Т.о., операции вставки новых записей требуют одинакового времени, операции поиска, обновления и удаления – времени, пропорционального N/2, где N – количество записей.
Последовательные упорядоченные файлы
В упорядоченных последовательных файлах записи отсортированы по значению ключа, т.е. поля, однозначно определяющего каждую запись. Пример организации подобного файла с двумя записями на страницу. В действительности страница может иметь несколько десятков записей.
10 |
|
20
|
|
30 |
|
40
|
|
50 |
|
60
|
|
Поскольку записи упорядочены по значению
ключа, то при поиске записи по значению
ключа используется двоичный (быстрый)
поиск по ключевому полю. При числе
записей N двоичный
поиск требует log2N
операций поиска, т.е. по сравнению с
последовательным поиском двоичный
поиск в
быстрее. Таким образом, двоичный поиск
значительно быстрее линейного и выигрыш
возрастает при увеличении числа записей
N. Но следует
помнить, что в последовательном
упорядоченном файле быстрый двоичный
поиск может осуществляться только по
значению ключа, но не других полей файла.
Операции вставки и удаления записей в упорядоченном файле выполняются значительно сложнее и медленнее, чем в неупорядоченном. Для вставки новой записи нужно найти её место в соответствии со значением ключа. Например, запись со значением ключа 35 нужно поместить на место записи с ключом 40. Если свободного места на нужной физической странице недостаточно, то потребуется переместить одну или несколько записей на следующую страницу. Если на следующей странице свободного места опять недостаточно, то необходимо переместить некоторые записи на следующую страницу. Процесс реорганизации положения записей файла может оказаться сложным и медленным. Поэтому последовательные упорядоченные файлы в БД используются редко.
