
Лаб6
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Сетевые информационные технологии и сервисы»
Практическая работа №6
по дисциплине
«Принципы построения систем управления базами данных и знаний»
Вариант 17
Выполнил:
студент гр. БСТ2202
Овчинников П.А.
Проверил:
Гадасин Д. В.
Москва, 2024
Задача 6
B-дерево используется как составная часть структуры БД. Пусть дисковый блок способен хранить А записей данных либо (В-1) ключей и В указателей, и блок вершины В-дерева заполнен в среднем на С% (если В = 100, а С = 70, то блок максимально может содержать 69 ключей и 70 указателей). Полагая, что никакая информация изначально в оперативную память не загружена и ключ поиска является одновременно первичным ключом записей данных, определить:
1. Общее количество блоков, требуемых для хранения файла с 1 000 000 записей.
2. Число операций, необходимых для извлечения записи, обладающей заданным значением ключа поиска.
Для случаев:
1. Данные размещены в последовательном файле, отсортированном по ключу поиска и каждый блок состоит из A записей. В-древовидный индекс является плотным.
2. То же, что и в п.п. 1, но В-дерево является разреженным.
3. Листья В-дерева содержат не указатели на записи данных, а записи как таковые. Блок способен вместить A записей, блок-лист заполнен в среднем на С%, (если A = 10 C = 70, то блок данных хранит 7 записей).
4. Файл данных является последовательным, а В-дерево – разреженным, но каждому основному блоку данных поставлен в соответствие блок переполнения. Каждый основной блок в среднем полон, а область блока переполнения используется на 50%.
Исходные данные – вариант 24:
Вариант |
A |
B |
C |
17 |
16 |
80 |
90 |
Решение задачи 6
Случай 1:
Сперва найдём количество блоков данных. Так как A – число записей данных в 1 блоке, количество блоков данных:
блоков
данных.
Чтобы посчитать количество блоков в дереве, нужно определить сколько в нем уровней и сколько блоков на каждом из них. Так как блоки с указателями на блоки данных находятся только на последнем уровне, на этом уровне должно хватить места для указателей на 1 000 000 записей. Блок содержит B указателей, заполненных на C процентов – следовательно, для адресации используется:
индекса
для адресации.
Определим
число уровней B-дерева
через неравенство
:
.
(Число уровней: X+1=5)
Таким образом, для хранения файла с 1 000 000 записей потребуется общее количество блоков:
блоков.
Чтобы найти число операций, нужно значит число уровней дерева – X+1=5 уровней. Можно использовать бинарный поиск для поиска ключа на каждом уровне дерева. Тогда число операций, необходимых для извлечения записи, обладающей заданным значением ключа поиска, равно:
операций.
Ответ: 27 314 861 блоков, 35 операций.
Случай 2:
Сперва найдём количество блоков данных. Так как A – число записей данных в 1 блоке, количество блоков данных:
блоков данных
Из-за неплотного индекса потребуется меньше указателей. Разряженный индекс содержит только по одному указателю на каждый блок данных. Блок содержит B указателей, заполненных на C процентов – следовательно, для адресации используется:
индекса
для адресации.
Определим
число уровней B-дерева
через неравенство
:
.
(Число уровней: X+1=5)
Таким образом, для хранения файла с 1 000 000 записей потребуется общее количество блоков:
блоков.
Чтобы найти число операций, нужно значит число уровней дерева – X+1=5 уровней. Можно использовать бинарный поиск для поиска ключа на каждом уровне дерева. Так как индекс разряженный, после нахождения блока данных с нужным ключом, необходимо найти в нем нужную запись из A записей. Тогда число операций, необходимых для извлечения записи, обладающей заданным значением ключа поиска, равно:
операций.
Ответ: 27 377 361 блоков, 39 операций.
Случай 3:
Сперва
найдём количество блоков данных. В
данном случае на уровне «листьев»
находятся сами данные. Так как блок
хранит
записей, для хранения 1 000 000 записей
потребуется:
блоков
данных.
Блок содержит B указателей, заполненных на C процентов – следовательно, для адресации используется:
индекса для адресации.
Определим число уровней B-дерева через неравенство :
.
(Число уровней: X+1=4)
Таким образом, для хранения файла с 1 000 000 записей потребуется общее количество блоков:
блоков.
Чтобы найти число операций, нужно значит число уровней дерева – X+1=4 уровня. На первых трех уровнях блоки содержат по 72 записей, а на последнем уровне – блок содержит 8 записей. Можно использовать бинарный поиск для поиска ключа. Тогда число операций, необходимых для извлечения записи, обладающей заданным значением ключа поиска, равно:
операции.
Ответ: 27 247 177 блоков, 24 операции.
Случай 4:
Сперва найдём количество блоков данных. Так как A – число записей данных в 1 блоке, количество блоков данных:
блоков данных.
Разряженный индекс содержит только по одному указателю на каждый блок данных. Блок содержит B указателей, заполненных на C процентов – следовательно, для адресации используется:
индекса для адресации.
Определим число уровней B-дерева через неравенство :
.
(Число уровней: X+1=4)
Таким образом, для хранения файла с 1 000 000 записей потребуется общее количество блоков вместе с блоками переполнения:
блоков.
Чтобы найти число операций, нужно значит число уровней дерева – X+1=4 уровня. Можно использовать бинарный поиск для поиска ключа на каждом уровне дерева. Так как индекс разряженный, после нахождения блока данных с нужным ключом, необходимо найти в нем нужную запись из A записей. . Так как у основного блока есть область переполнения в среднем заполненная на 50%, для её просмотра также понадобится некоторое число операций. Тогда число операций, необходимых для извлечения записи, обладающей заданным значением ключа поиска, равно:
операции.
Ответ: 27 439 861 блоков, 34 операции.