Слайд 1Организация и поиск данных
во внешней памяти
НИУ ВШЭ – Пермь
Факультет
бизнес-информатики
Кафедра информационных технологий в бизнесе
Пермь 2013
Лядова Л.Н.
Материалы курса
«Теоретические основы
информатики»
Лекция 17
Слайд 2Организация файлов
Основные способы организации файлов:
файлы с последовательной организацией;
файлы с прямым
доступом;
индексированные файлы (индексно-последовательные, файлы с индексной организацией);
библиотеки.
Использование индексов ускоряет поиск
данных, но усложняет выполнение операций над ними.
Слайд 3Индексированные файлы
Если система сама берет на себя задачу организации вспомогательных
файлов (таблиц), используемых для ускорения доступа, то говорят об индексной
организации файлов.
Файлы с индексной организацией (или индексированные файлы) имеют более сложную организацию: кроме основного файла, представляющего собой массив записей, строится вспомогательная таблица (индекс), содержащая ключевую информацию для поиска, а также данные о местоположении записи в основном файле (смещение соответствующей записи относительно начала файла); кроме того, если записи могут иметь переменную длину, в каждой строке (элементе, записи) индекса содержится и размер записи.
Если поиск выполняется по различным ключам, то для каждого из них строится отдельный индекс. В современных базах данных объем индексов превышает объем собственно данных.
Слайд 4Индексированные файлы: простейший пример индексации
Слайд 5Индексированные файлы: многоуровневые индексы
Слайд 6Индексированные файлы:
поиск и обработка данных
Индексы позволяют ускорить поиск данных на
внешних запоминающих устройствах: индексы отсортированы по ключам (по возрастанию или
убыванию), что позволяет организовать поиск, например, методом «деления пополам» (бинарный поиск).
Однако поддерживать нужный порядок записей в индексе при выполнении операций над данными в файле – трудоёмкая задача:
при добавлении новых записей в файл (данные добавляются в конец файла) необходимо в индекс внести соответствующие изменения – тоже добавить запись, содержащую ключ и информацию о местоположении новой записи в файле, не нарушая порядок сортировки индекса;
при удалении записи из файла необходимо удалить и соответствующую запись из индекса;
при изменении ключевых полей в записи необходимо изменить и соответствующую запись в индексе, при этом может потребоваться изменить порядок записей в нём для сохранения установленного порядка сортировки.
Слайд 7Индексированные файлы:
динамические индексы
Динамический индекс строится в оперативной памяти по специальной
команде индексации файла и существует, пока в нём есть необходимость
(он используется для ускорения поиска данных в открытом для работы файле). После завершения работы с файлом или программы индекс уничтожается.
Индекс должен включать всю необходимую для поиска данных информацию: значение ключа и информацию о местоположении соответствующей записи.
Для создания такого индекса обычно используются динамические структуры данных.
Простейшая – бинарное дерево, которое позволяет выполнять бинарный поиск, сокращая количество операций просмотра записей (сравнения ключей).
Это ещё одна область применения деревьев в программировании.
Слайд 8Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 9Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 10Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 11Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 12Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 13Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 14Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 15Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 16Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 17Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 18Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 19Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Поиск записи с
ключом
«Носкова»
Слайд 20Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 21Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 22Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 23Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 24Бинарные деревья:
использование для индексации
Ссылка на корень индекса
Оперативная память
Слайд 25Бинарные деревья:
использование для индексации
Проблемы при работе с внешней памятью:
Число
уровней в обычном бинарном дереве может быть большим – требуется
балансировка.
Внешние устройства прямого доступа – блочно-ориентированные. Следовательно, необходимо обрабатывать информацию блоками.
Выход – использование для индексации другого типа деревьев – B-деревьев.
Слайд 26Понятие B-дерева
Базовым «древовидным» аппаратом для поиска данных во внешней памяти
являются B-деревья:
за одно обращение к внешней памяти необходимо считать как
можно больше информации, учитывая при этом необходимость экономного использования основной памяти;
при организации основной памяти в виде набора страниц равного размера естественно считать именно страницу единицей обмена с внешней памятью;
желательно обеспечить такую поисковую структуру во внешней памяти, при использовании которой поиск информации по любому ключу требует заранее известного числа обменов с внешней памятью.
Слайд 27Понятие B-дерева:
классические B-деревья
B-дерево порядка n представляет собой совокупность иерархически связанных
страниц внешней памяти (каждая вершина дерева – страница), обладающая следующими
свойствами:
Каждая страница содержит не более 2×n элементов (записей с ключом).
Каждая страница, кроме корневой, содержит не менее n элементов.
Если внутренняя (не листовая) вершина B-дерева содержит m ключей, то у нее имеется m+1 страниц-потомков.
Все листовые страницы находятся на одном уровне.
Слайд 28Пример B-дерева степени 2 глубины 3
Слайд 29Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
Слайд 30Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
Слайд 31Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
Слайд 32Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
…
Слайд 33Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
…
Необходимо расщепление страницы
Слайд 34Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
…
Необходимо расщепление страницы:
32 33 35 36 37
Слайд 35Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
Слайд 36Пример B-дерева степени 2 глубины 3
Добавляем:
15, 27, 36, 39,
Слайд 37Пример B-дерева степени 2 глубины 3
Слайд 38Пример B-дерева степени 2 глубины 3
Слайд 39Пример B-дерева степени 2 глубины 3
Добавляем 68
Слайд 40Пример B-дерева степени 2 глубины 3
Добавляем 68
Слайд 41Пример B-дерева степени 2 глубины 3
Удаляем 25
Выполняется переливание
Слайд 42Пример B-дерева степени 2 глубины 3
Удаляем 25
Слайд 43«Комбинированные» методы
Для ускорения поиска используются
«усовершенствованные» деревья (B+-деревья, R-деревья, имеющие
различную структуру листовых вершин и внутренних узлов,…);
сочетание хэширования и деревьев:
в памяти строится дерево, в которое записываются не ключи, а результаты хэширования;
…
Слайд 44Использованные источники:
КузнецовС.Д. Методы сортировки и поиска. М.: ИСП РАН.
Королёв Л.Н.,
Миков А.И. Информатика. Введение в компьютерные науки. М.: Высшая школа.