Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

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

Отношение А индекс отношения А по ключу Атр.1

Атр.1 | | ключ | tid |

a | | a | 1 | ключ | tid

b | | Þ a | 4 | или a | 1, 4 – список tid

c | | b | 2 | b | 2

a | | c | 3 | c | 3

 

Отношение B индекс отношения B по ключу Атр.2

Атр.2 | | ключ | tid |

10 | | 2 | 2 |

2 | | Þ 8 | 4 |

14 | | 10 | 1 |

8 | | 14 | 3 |

 

мультииндекс отношений А и В по ключам Атр.1 и Атр.2:

| a 2 | 1, 2 || a 14

| a 2 | 4, 2 || a 14

| a 8 |... || b 2

| a 8 | || b 8

| a 2 | ||...

| a 2 | ||

Большинство СУБД строит индекс сразу, как только определит ключ. Существует много способов построения индексов, но самым распространённым является способ ”B(b)-деревьев”.

B-дерево обладает двумя свойствами:

1) сбалансированность – длина пути от корня до любого места одна и та же;

2) ветвистость – это свойство каждого узла ссылаться на большое количество потомков.

Каждый узел B-дерева соответствует страница ВП. Внутренние страницы и листовые страницы должны иметь разную структуру:

I. внутренняя.

№1(ключ 1), №2(ключ 2), …, №m(ключ m): здесь содержатся номера страниц и ключи.

Ключ каждой страницы удовлетворяет условиям:

– кл.1 <= кл.2 <= … <= кл.m (<= – предшествует или равен);

– на странице №S находятся ключи: кл.S <= k <= кл.(S+1).

 
 

 

 


II. листовая.

 
 
Кл.1 список1 кл.2 список2 …

 

 


Кл.1 <= кл.2 <= …

А списки – списки идентификаторов кортежей, которые имеют отношение к данному ключу. Элементы в списке могут быть однонаправленными или двунаправленными:

 


Поиск в B-дереве – это прохождение от корня к листу в соответствии с данным значением ключа. Т.к. дерево сильно ветвистое, таких переходов не будет слишком много, а т.к. оно сбалансировано, поиск происходит всегда за одинаковое количество шагов.

           
   
 
 
Ссылки на соответствующие кортежи
 
Ключ2 – неуспешный поиск Ключ1,3 – успешный
 

 


Скорость операции сравнения: (поиск) logmn,

Где n – число ключей, m – степень ветвистости.

Основная проблема – поддержание свойств B-дерева при добавлении и исключений записей.

Рассмотрим алгоритм добавления новой записи:

1) поиск по ключу: если B-дерево не содержит записей с таким ключом, то будет получен № страницы, где этот ключ должен содержаться;

2) вставка: нужно вытащить эту страницу в буфер ОЗУ и там модифицировать листовую страницу:

– если размер достаточен, то вытолкнуть после модификации во ВП;

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

При удалении записей алгоритм обладает теми же особенностями:

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

Для большей эффективности используется упреждающее расщепление не при переполнении, а по достижении заполненности страницы некоторого уровня.

В литературе такие деревья называют B+, B*. Альтернативой B-деревьев является хеширование информации.




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 328; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.