9. Организация хранения данных.pptx
- Количество слайдов: 60
9. Внутренние структуры хранения
9. 1. Организация доступа к данным • Наличие двух уровней системы для организации доступа к данным • Поддержка отношений-каталогов • Регулярность структуры данных 2
9. 2. Схема обработки запроса 3
9. 3. Уровень СУБД 4
9. 4. Уровень ОС 5
9. 5. Временные характеристики • Наиболее распространенное время доступа к дисковой памяти – от 3 до 9 миллисекунд • Время обращения к оперативной памяти – 100 нанасекунд (Данные из книги: Т. Кормен и др. Алгоритмы. Построение и анализ, 2 -е издание. : Пер. с англ. – М. : Издательский дом «Вильямс» , 2005) 6
9. 6. Каталоги Обычные отношения РМД Содержат информацию, связанную с объектами базы данных В MS SQL Server: системные представления (view) – sys. tables, sys. columns и др. Примеры: SELECT * FROM T INSERT INTO T VALUES (e 1, e 2, … ) 7
9. 6. Каталоги В MS SQL Server: Системные базы данных – master и др. Системные таблицы и представления (view) – sys. tables, sys. columns и др. Примеры: SELECT * FROM T INSERT INTO T VALUES (e 1, e 2, … ) 8
9. 7. Структура файлов базы данных Основной объект базы данных – таблица; совокупность строк Дополнительные управляющие структуры – индексы Управляющая (служебная) информация – для удовлетворения внутренних потребностей нижнего уровня системы 9
9. 8. Способы извлечения данных Последовательная выборка SELECT * FROM таблица Произвольная выборка SELECT * FROM таблица WHERE ключ = значение 10
9. 9. Методы доступа к данным • Последовательный метод доступа: для получения целевой записи – обращение ко всем предшествующим цели записям • Произвольный метод доступа: для получения целевой записи – непосредственное обращение к ней Специальные объекты – индексы 11
9. 10. Бинарные деревья поиска Упорядоченная тройка (TL, R, TR) R – корень дерева TL, TR – левое и правое поддеревья корня R; двоичные деревья NL, NR – количество узлов в поддеревьях, NL 0, NR 0 Общее количество узлов в дереве NR = NL + NR + 1 12
9. 11. Структура узла дерева • Значение узла – ключ и сопутствующая информация – некоторая запись Row. Id • Левый и правый указатели на поддеревья Длина поиска – длина пути от корня до целевой записи 13
9. 12. Примеры бинарных деревьев 14
9. 13. Многоходовые деревья • Каждый узел дерева содержит N > 1 ключей и, соответственно, N + 1 указатель на подчиненные узлы • Ключи в узле упорядочены по возрастанию: K 1 < K 2 < … < KN • Ключи в поддеревьях упорядочены по такому же принципу, как и в бинарном дереве 15
9. 14. Узел дерева K 1 P 0 . . . K 2 P 1 P 2 KN PN– 1 PN P 0 K 1 P 1 K 2 P 2 … PN-1 KN PN { K(Pi-1)} < Ki < {K(Pi)}, 16
9. 15. В-дерево Сбалансированное многоходовое дерево. Узлы В-дерева могут иметь свободное пространство, что упрощает операции вставки и удаления а) от слова Balanced – сбалансированное дерево, в котором все листья имеют один и тот же уровень б) от Bayer – автора данной структуры 17
9. 16. В-дерево степени t 1. В каждом узле дерева, за исключением корня, должно располагаться минимум t, максимум 2 t ключей: t ≤ j ≤ 2 t 2. В корне В-дерева может располагаться минимум 1, максимум 2 t ключей: 1 ≤ j ≤ 2 t 18
9. 16. В-дерево степени t 3. Любой узел дерева, за исключением листьев, имеющий j ключей, должен иметь j+1 подчиненный узел 4. Все пути от корня до любых листьев имеют одинаковую длину h, называемую также высотой В-дерева Эффективность операций: Ο(h), h ≤ logt(n + 1) 19
9. 17. Структура узла В-дерева R 1 P 0 . . . R 2 P 1 P 2 RN PN– 1 PN P 0, P 1, P 2, …, Pk – указатели на подчиненные узлы R 1, R 2, …, Rk – записи (ключи и Row. ID) 20
9. 18. Правила следования 1. Ключи записей в текущем узле упорядочены по возрастанию 2. Записи в узле P 0 имеют ключи, меньшие, чем ключ записи R 1 3. Записи в узле Pk имеют ключи, большие, чем ключ записи Rk 4. Записи в узле Pj, 1 j k – 1, имеют ключи, большие, чем ключ записи Rj, и меньшие, чем ключ записи Rj + 1 21
9. 19. Примеры В-деревьев 22
9. 20. Вставка в В-дерево Вставка – только в лист В-дерева Ситуации: 1. Целевой лист не заполнен 23
9. 20. Вставка в В-дерево 2. Целевой лист заполнен полностью – расщепление листа 24
9. 21. Пример: вставка в В-дерево степени 1 Вставляется последовательность ключей 20, 12, 48, 3, 5, 70, 101 1) 20 20 2) 12 12 20 48 3) 48 20 12 48 25
9. 21. Пример: вставка в В-дерево степени 1 4) 3 20 3 5) 5 12 48 5 5 3 20 12 48 26
9. 21. Пример: вставка в В-дерево степени 1 6) 70 5 3 20 12 70 48 70 101 7) 101 27
9. 21. Пример: вставка в В-дерево степени 1 7) 101 20 5 3 70 12 48 101 28
9. 22. Удаление ключа • Удаляемый ключ находится в листе дерева • Удаляемый ключ находится в промежуточном узле дерева – замещается следующим за ним элементом (минимальный ключ из правого поддерева) – замещается предшествующим ему элементом (максимальный ключ из левого поддерева) 29
9. 23. Нормальная ситуация В целевом листе находится более чем t элементов (t – степень В-дерева) Пример: фрагмент В-дерева степени 2; удаляется ключ 20 20 42. . . 21 25 27 29 35. . . 30
9. 24. Антипереполнение листа В целевом листе находится только t ключей – минимально допустимое количество При удалении ключа нарушается свойство В-дерева 1. Перераспределение ключей 2. Слияние узлов 31
9. 25. Перераспределение ключей Соседний лист, подчиненный тому же ключу, что и целевой, содержит t + m + 1 ключ, m 0 Общее количество ключей: (t – 1) + 1 + (t + m + 1) = 2 t + 1 + m, m 0 Перераспределение: (t + d) + 1 + (t + m – d), d 0 (Обычно d = 0) 32
9. 25. Перераспределение ключей Пример: фрагмент В-дерева степени 3; удаляется ключ 276 191, 196, 201, 210, 211, 253, 255, 293. . . 189 253 510. . . 191 195 201 210 211 255 276 293 33
9. 26. Слияние листьев Соседние листья содержат только по t ключей Общее количество ключей: (t – 1) + 1 + t = 2 t Удаляется один из листьев Удаляется ключ из родительского узла 34
9. 26. Слияние листьев Пример: фрагмент В-дерева степени 2; удаляется ключ 15 32 75 92 8 15 42 52 35
9. 27. Пример: В-дерево степени 1 Удаляется ключ 77 64 19 10 81 25 77 93 36
9. 28. Основные свойства В-дерева 1. Ключи и ассоциированные с ними данные (Row. ID) хранятся во всех узлах В-дерева 2. Произвольная выборка данных выполняется эффективно 3. Последовательная выборка данных мало эффективна 37
9. 29. В+ дерево Два типа узлов В+ дерева: • внутренние узлы – представляют собой В-дерево индексов; содержат только ключи • листья – объединены в двухсвязный список; содержат все ключи и ассоциированные с ними данные (Row. ID) 38
9. 29. В+ дерево Внутренние узлы – индексы. . . Листья 39
9. 30. Вставка в В+ дерево Аналогично В-дереву, за исключением расщепления листа: медианный ключ перемещается в родительский узел и остается в листе (правом или левом) … … k 0 k 1 … kj-1 kj … k 2 n+1 40
9. 31. Пример: вставка в В+ дерево степени 1 Вставляется последовательность ключей 20, 12, 48, 3, 5, 70, 101 1) 20 20 2) 12 12 20 48 3) 48 20 12 20 48 41
9. 31. Пример: вставка в В+ дерево степени 1 4) 3 20 3 5 12 20 48 5) 5 5 3 20 5 12 20 48 42
9. 31. Пример: вставка в В+ дерево степени 1 6) 70 5 3 20 5 12 48 20 48 70 43
9. 31. Пример: вставка в В+ дерево степени 1 6) 70 20 5 3 48 5 12 20 48 101 70 7) 101 44
9. 31. Пример: вставка в В+ дерево степени 1 7) 101 20 5 48 3 20 5 12 70 70 101 48 45
9. 32. Удаление из В+ дерева Только из листьев Пример: В+ дерево степени 2; удаляется ключ 31 15 31 73 219. . . 17 21 27 . . . 31 35 39 . . . 46
9. 33. Антипереполнение: перераспределение Удаляется 39; перераспределение ключей (ключ 31 удаляется) 15 31 73 219. . . 17 21 27 . . . 35 39 . . . 47
9. 34. Антипереполнение: слияние Удаляется 39; слияние листьев (ключ 31 удаляется) 15 31 73 219. . . 17 21 . . . 35 39 . . . 48
9. 35. Хэш индексы • Для произвольного доступа к данным • Строится на уникальных атрибутах • Хэш функция отображает индекс в физический адрес хранения соответствующей строки таблицы • Принцип отображения – m : 1 49
9. 36. Организация хранения таблицы 0 1 . . . N-1 Бакеты (buckets) 50
9. 37. Идея хеширования Ключи Первичная область Область переполнения hash бакет 51
9. 37. Идея хеширования Для k 1 k 2 hash(k 1) = hash(k 2) k 1, k 2 – синонимы Разрешение коллизий: • выявление свободного пространства в бакете • обработка переполнения бакета 52
9. 38. Метод открытой адресации Первичная область + область переполнения Бакет А Бакет В бакет 53
9. 39. Метод срастающихся цепочек Указатель на свободное пространство Бакет В Бакет А 54
9. 40. Метод раздельных цепочек Бакет В Область переполнения Бакет А Первичная область 55
9. 41. Сравнение методов индексирования В+ деревья Хеш индексы • представляются объектами базы данных • не влияют на представление таблицы • упорядоченное хранение строк таблицы • определены и операции < и > для сравнения ключей • не представляются объектами базы данных • влияют на представление таблицы • упорядоченность строк отсутствует • определены только операции = и для сравнения ключей 56
9. 41. Сравнение методов индексирования В+ деревья Хеш индексы • пространство для таблицы выделяется по мере вставки строк • могут создаваться на ключевых и не ключевых атрибутах • используются всеми СУБД • пространство для таблицы выделяется при создании таблицы • должны создаваться только на ключевых атрибутах • используются не всеми СУБД 57
9. 42. Рекомендации • Если размер таблицы сильно изменяется – не хэш таблица • Если часто организуется поиск по критериям < > – не хэш таблица • Если используются справочники (мало изменяемые таблицы, поиск в них по =) – хэш таблицы 58
9. 43. Пример создания хеш таблицы Создание кластерного хеш-индекса (Oracle) CREATE CLUSTER HD ( DID NUMBER (5, 0) SIZE 1 K -- размер строк с одним и тем же значением индекса (бакета) HASH IS DID -- на каком атрибуте создается хеш-индекс HASHKEYS 200 -- число различных значений хеш индекса ) 59
9. 43. Пример создания хеш таблицы Создание хеш-таблицы (Oracle) CREATE TABLE Tab ( MDID NUMBER (5) NOT NULL PRIMARY KEY, . . . -- другие колонки таблицы ) CLUSTER HD(MDID) -- на каком хеш-индексе строится таблица 60


