- •Физическая организация данных в
- •Введение 4
- •1. Теоретические сведения
- •1.1 Физическая организация данных. Основные понятия
- •1.2 Эффективность организации блоков в файле
- •1.3 Организация файлов в виде кучи
- •1.4 Эффективность организации файлов в виде кучи
- •1.5 Организация хешированных файлов
- •1.5.2 Динамическое хеширование
- •1.6 Операции над хешированными файлами
- •1.7 Эффективность хешированных файлов
- •1.8 Индексированные файлы
- •1.9 Операции над индексированными файлами
- •1.10 Эффективность индексированных файлов
- •1.11 Плотное индексирование
- •1.12 B-деревья
- •1. 13 Операции на в-деревьях.
- •1.14 Эффективность в-дерева.
- •2 Задания на лабораторные работы
- •2.1 Задание 1. Организация файла в виде кучи
- •2.2 Задание 2. Организация хешированного файла
- •2.3 Задание 3. Организация индексного файла
- •2.4 Задание 4. Организация файла в виде в-дерева
1.14 Эффективность в-дерева.
Пусть главный файл содержит n записей, а e и d – параметры организации В–дерева. Тогда листьев в дереве будет не больше чем n/e, так как е – наименьшее число записей в одном блоке. Предков листьев будет n/de, предков предков листьев n/d2e, и так далее. Если путь от корня до листьев содержит i узлов, то для количества блоков последнего уровня будет ровняться n/di-1e. Так как известно, что в В–дереве только один блок является корнем, то следовательно n/di-1e равняется 1, из этого следует что, n равняется di-1e, и i равняется 1+Logd(n/e), так как d и e по определению минимальны, то i меньше или равно 1+Logd(n/e).
То есть, максимальное число обращений к диску при поиске будет 1+Logd(n/e). При вставке данное значение увеличивается на 1 (для записи блока).
2 Задания на лабораторные работы
2.1 Задание 1. Организация файла в виде кучи
Написать программу, которая работает с организованным в виде кучи файлом, хранящем информацию об отношении «студент».
В программе должны быть реализованы следующие функции:
добавление информации о студент;
изменение информации о студенте;
удаление информации о студенте;
осуществление поиска информации о студенте.
Отношение студент должно содержать следующие атрибуты: номер зачетки (тип integer), фамилия (тип string(30)), имя (тип string(20)), отчество (тип string(30)), номер группы (тип integer).
Для организации хранения информации о записи в файле необходимо использовать тип Zap.
Type
Zap = record
Id_zachet, id_gr: integer;
Surname, Name: string (20);
Patronymic: string(30);
End;
Блок файла должен включать 5 записей.
Type
Block = record
Zap_block: array[1..5] of zap;
End;
Для хранения схемы отношения в файле должен использоваться нулевой блок.
Программа должна работать с любым файлом, организованным по данной схеме.
Контрольные вопросы
Что такое запись?
Какие дополнительные байты может содержать запись?
Что такое блок?
В чем особенности организации файлов в виде кучи?
Эффективность рабы с файлом, организованным в виде кучи.
2.2 Задание 2. Организация хешированного файла
Написать программу, которая работает с хешированным фалом хранящем информацию об отношении «студент».
В программе должны быть реализованы следующие функции:
добавление информации о студент;
изменение информации о студенте;
удаление информации о студенте;
осуществление поиска информации о студенте.
Отношение студент должно содержать следующие атрибуты: номер зачетки (тип integer), фамилия (тип string(30)), имя (тип string(20)), отчество (тип string(30)), номер группы (тип integer). Атрибут «номер зачетки» выступает в роли первичного ключа.
В качестве хеш-функции необходимо использовать остаток от деления первичного ключа на 4.
Для организации хранения информации записи в файле необходимо использовать тип Zap.
Type
Zap = record
Id_zachet, id_gr: integer;
Surname, Name: string (20);
Patronymic: string(30);
End;
Каждый блок – это запись из массива записей и указателя на следующий блок. Блок файла должен включать 5 записей.
Type
Block = record
Zap_block: array[1..5] of zap;
Nextb:integer;
End;
Для хранения схемы отношения в файле должен использоваться нулевой блок.
Информация о каталоге бакетов также должна размещаться в нулевом блоке.
Type
Block0 = record
Relation_scheme: string(255);
Catalog: array[0..4]of record nf,nl:integer;
End;
End;
Переменная nf – номер первого блока в бакете, переменная nl – номер последнего блока в бакете.
В пределах каждого бакета, блоки записываются как в файле в виде кучи.
Программа должна работать с любым файлом, организованным по данной схеме.
Контрольные вопросы
Что такое бакет?
Что такое каталог бакетов?
Что такое хеш-функция?
В чем особенности организации хешированных файлов?
Причины снижения эффективности хешированных файлов.
Что такое динамическое хеширование?
Эффективность работы хешированных файлов.