Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Л-9 - Методы доступа к данным

.pdf
Скачиваний:
12
Добавлен:
28.06.2021
Размер:
606.3 Кб
Скачать

Индексирование данных (4)

Обращение к записи таблицы через индексы осуществляется в два этапа:

сначала СУБД считывает индекс в оперативную память (ОП) и находит в нем требуемое значение атрибута и соответствующий адрес записи (КБД),

затем по этому адресу происходит обращение к ВЗУ.

Индекс загружается в ОП целиком или хранится в ней постоянно во время работы с таблицей БД, если хватает объема ОП.

Первичные и вторичные индексы

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

Индекс по ключу, допускающему дубликаты значений, называется вторичным.

Большинство СУБД автоматически строят индексы по первичному ключу и по уникальным столбцам (используются для проверки ограничения целостности UNIQUE).

Для каждой таблицы можно иметь несколько вторичных индексов, что относится к достоинствам индексирования.

Составные индексы

Составной индекс включает два или более столбца одной таблицы. Последовательность вхождения столбцов в индекс определяется при его создании.

Данные в индексе отсортированы по первому столбцу (ID). В группе с одинаковыми значениями ID – по второму столбцу (EDATE). В группе с одинаковыми значениями ID

и EDATE – по столбцу (CODE).

Способы организации индексов – плотные и неплотные индексы

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

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

Тогда для каждой страницы в индексе задается диапазон значений ключей хранимых в ней записей, и поиск записи осуществляется среди записей на указанной странице.

Способы организации индексов – сжатые индексы

Для больших индексов актуальна проблема сжатия ключа. Наиболее распространенный метод сжатия основан на устранении избыточности хранимых данных.

Последовательно идущие значения ключа обычно имеют одинаковые начальные части, поэтому в каждой записи индекса можно хранить не полное значение ключа, а

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

Такой индекс называется сжатым.

Способы организации индексов – одно- и многоуровневые индексы

Одноуровневый индекс представляет собой линейную совокупность значений одного или нескольких полей записи. На практике используется редко.

В развитых СУБД применяются более сложные методы организации индексов.

Особенно эффективными являются многоуровневые индексы в виде сбалансированных деревьев

(В-деревьев, Balance Trees).

Древовидная организация данных (1)

Древовидные структуры состоят из набора вершин и ребер. Каждая вершина содержит данные и ссылку на вершину нижнего уровня.

Дерево – совокупность элементов, называемых узлами (один из которых определен как корень), и отношений,

образующих иерархическую структуру узлов.

Древовидная организация данных (2)

Вершина в 0-м уровне – корень дерева. В корень не входит ни одного ребра. Вершины, из которых не выходит ни одного ребра, – листья.

Дерево, из каждой вершины которого выходит только по два ребра, – бинарное (дерево порядка 2).

Древовидная организация данных (дерево) – множест-

во записей, расположенных следующим образом:

на 1-м уровне расположена только одна запись (корень дерева);

к любой записи i-го уровня ведет адрес связи только от одной записи уровня (i–1).

Упорядоченность бинарных деревьев

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

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

Пример упорядоченного бинарного дерева

Для набора чисел {7, 3, 5, 2, 8, 1, 6, 10, 9, 4, 11} получится бинарное дерево.

Структура бинарного дерева позволяет быстро вставлять и удалять записи и проводить эффективный поиск (в каждую запись добавлены два поля для ссылок).