Тема 3. Индексирование.

Главная цель – ускорение поиска кортежей отношения, удовлетворяющих некоторым условиям (заданное значение ключа).

Индексно-последовательные файлы.

Файл данных должен быть отсортирован по атрибуту индекса.

Плотный индекс – одна запись индексного файла соответствует одному кортежу файла данных.

Разреженный индекс – одна запись индексного файла соответствует одному блоку файла данных.

Многоуровневые индексы – индексы, построенные для файлов индексов.

Дублирующие значения ключа.

Простейший подход – плотный индекс (дублирующие значения ключа в индексном файле).

1 способ – индекс содержит по одной записи для каждого ключевого значения, которая указывает на первый кортеж файла данных с таким значением ключевого атрибута (остальные находятся путем просмотра файла данных, начиная с записи, полученной с помощью индекса).

2 способ – разреженный индекс, каждая запись индекса соответствует первому ключевому значению каждого блока данных.

3 способ – разреженный индекс, запись индекса хранит первое новое ключевое значение каждого блока (если такого нет, то хранится единственное ключевое значение, встречающееся в этом блоке)

Изменения в индексах при модификации файла данных.

Стратегии:

Создание блоков переполнения файла данных. Вставка нового блока в файл данных (внутрь связанного списка блоков файла). Перемещение кортежей в смежные блоки.

Возможны 7 основных действий с файлами данных:

Действие

Плотный индекс

Разреженный индекс

Создание пустого блока переполнения

Ничего не делать

Ничего не делать

Удаление пустого блока переполнения

Ничего не делать

Ничего не делать

Создание пустого блока файла данных

Ничего не делать

Вставка записи о блоке

Удаление пустого блока файла данных

Ничего не делать

Удалить запись о блоке

Вставка записи

Вставка

Возможно изменение

Удаление записи

Удаление

Возможно изменение

Перемещение записи

Изменение

Возможно изменение

Удаление записи из файла.

1.  Удаление записи из файла с плотным индексом.

Дано:

Удаление записи с ключом 30 (есть указатели на записи файла извне)

2.  Удаление записи из файла с разреженным индексом.

Дано:

Удаление записи с ключом 30 (указателей на записи вовне нет)

Удаление записи с ключом 40.

Вставка записи в файл с разреженным индексом.

Дано:

Вставка записи с ключом 15 (если есть возможность перемещение записей).

Вставка в исходный файл записи с ключом 25 (использование блоков переполнения).

Вторичные индексы – индекс, построенный не по ключевому атрибуту отношения (сортировка в файле осуществляется по другому атрибуту)

Повторение ключей во вторичных индексах (появляется промежуточный уровень адресации - сегменты).

Использование вторичных индексов, если указаны два условия отбора – пересечение указателей, из сегментов двух вторичных индексов (читаются только записи файла данных, удовлетворяющие обоим условиям).

Например, найти все кинофильмы, снятые на киностудии “Disn” в 1995 году.

Инвентированные индексы – индексы, используемые в информационно-поисковых системах для поиска документов по ключевым словам.

Документ – отношение Doc(hasCat, hasDog….). Каждый атрибут отношения – булево значение, равное true, если соответствующее слово присутствует в документе.

Определен вторичный индекс по ключевым словам, сегменты которого содержат только ссылки на документы, в которых слово есть (или позицию в документе заданного слова).