- •Логические и физические записи данных, виды организации файлов
- •Смешанные файлы
- •Последовательные файлы
- •Индексы, индексные и индексированные файлы
- •Многоуровневые индексы
- •Индексно – последовательные файлы
- •Хешированные файлы (файлы прямого доступа)
- •Метод открытой адресации
- •Метод области переполнения
- •Контрольные вопросы и упражнения
Многоуровневые индексы
При увеличении размера индексного файла до большого количества страниц требуется их загрузка с диска в память, и время поиска нужного индекса возрастает. Эта проблема решается с использованием многоуровневого индекса. По существу речь идет об индексе индекса. Индекс разделяется на несколько субиндексов меньшего размера, которые быстрее считываются в память. Индексы более высокого уровня могут сами ссылаться на индексы более низкого уровня.
Пример двухуровневого индекса. Первый уровень индекса можно рассматривать как индексированный файл по отношению ко второму уровню индекса.
4
7
6
В этом примере на каждой странице могут храниться две записи. Будем считать для упрощения, что на каждой странице индексного файла хранятся также две записи, хотя в действительности записи индексного файла короткие. Каждая запись индексного файла содержит значение ключа (индекса) и адрес страницы. Значение ключа в индексной странице соответствует наибольшему значению ключа на адресуемой странице.
Пусть необходимо найти запись с индексом «КБ38». При поиске по заданному значению атрибута вначале происходит обращение к индексу второго уровня. Здесь отыскивается индекс, значение которого больше или равно «КБ38». В данном случае это значение «КБ47». Найденная запись содержит адрес индекса первого уровня, в котором нужно продолжить поиск. В данном примере нужная страница первого уровня содержит значения «КБ9» и «КБ47». По адресу, содержащемуся в индексе «КБ47» мы попадаем на страницу 2 файла данных, где и находится искомая запись.
Индексно – последовательные файлы
Индексно – последовательные файлы (Indexed Sequential Access Method, ISAM) являются дальнейшим развитием последовательных файлов. Такие файлы широко используются в СУБД. Они сохраняют главную особенность последовательного файла: записи организованы последовательно. Добавлено два дополнительных элемента: индексный файл по ключу для поддержки быстрого доступа и файл (область) переполнения. Т.е. это последовательный упорядоченный файл с индексом по ключевому полю.
С
труктура
Каждая запись в индексном файле состоит из двух полей: ключевого поля, идентичного ключевому полю в основном файле и указателя на физическую страницу в основном файле. Для доступа к определенной записи сначала выполняется двоичный поиск по ключу в индексном файле. После того как в индексном файле найдено значение ключа, осуществляется переход в главный (основной) файл на соответствующую страницу.
Дополнение новых записей к файлу производится в файл переполнения. При этом в каждой записи главного файла имеется специальное дополнительное поле, которое может содержать указатель на запись файла переполнения. Если в главном файле нет свободных страниц, то новая запись добавляется в файл переполнения. Запись в главном файле со значением ключа, предшествующим добавляемому значению, обновляется. В дополнительное поле этой записи помещается указатель на новую запись в файле переполнения. Ссылки (указатели) дополнительных полей используются при поиске нужных записей по значению ключа. Записи в главном файле обрабатываются до тех пор, пока не будет обнаружена ссылка на файл переполнения. После этого поиск продолжается в файле переполнения, пока не будет найдена нужная запись или не встретится нулевой указатель. Это признак завершения цепочки поиска в файле переполнения.
В файлах ISAM периодически в удобное время производится слияние области переполнения с главным файлом.
