Скачать презентацию 9 Внутренние структуры хранения 9 1 Организация Скачать презентацию 9 Внутренние структуры хранения 9 1 Организация

9. Организация хранения данных.pptx

  • Количество слайдов: 60

9. Внутренние структуры хранения 9. Внутренние структуры хранения

9. 1. Организация доступа к данным • Наличие двух уровней системы для организации доступа 9. 1. Организация доступа к данным • Наличие двух уровней системы для организации доступа к данным • Поддержка отношений-каталогов • Регулярность структуры данных 2

9. 2. Схема обработки запроса 3 9. 2. Схема обработки запроса 3

9. 3. Уровень СУБД 4 9. 3. Уровень СУБД 4

9. 4. Уровень ОС 5 9. 4. Уровень ОС 5

9. 5. Временные характеристики • Наиболее распространенное время доступа к дисковой памяти – от 9. 5. Временные характеристики • Наиболее распространенное время доступа к дисковой памяти – от 3 до 9 миллисекунд • Время обращения к оперативной памяти – 100 нанасекунд (Данные из книги: Т. Кормен и др. Алгоритмы. Построение и анализ, 2 -е издание. : Пер. с англ. – М. : Издательский дом «Вильямс» , 2005) 6

9. 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 и др. 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. 7. Структура файлов базы данных Основной объект базы данных – таблица; совокупность строк Дополнительные управляющие структуры – индексы Управляющая (служебная) информация – для удовлетворения внутренних потребностей нижнего уровня системы 9

9. 8. Способы извлечения данных Последовательная выборка SELECT * FROM таблица Произвольная выборка SELECT 9. 8. Способы извлечения данных Последовательная выборка SELECT * FROM таблица Произвольная выборка SELECT * FROM таблица WHERE ключ = значение 10

9. 9. Методы доступа к данным • Последовательный метод доступа: для получения целевой записи 9. 9. Методы доступа к данным • Последовательный метод доступа: для получения целевой записи – обращение ко всем предшествующим цели записям • Произвольный метод доступа: для получения целевой записи – непосредственное обращение к ней Специальные объекты – индексы 11

9. 10. Бинарные деревья поиска Упорядоченная тройка (TL, R, TR) R – корень дерева 9. 10. Бинарные деревья поиска Упорядоченная тройка (TL, R, TR) R – корень дерева TL, TR – левое и правое поддеревья корня R; двоичные деревья NL, NR – количество узлов в поддеревьях, NL 0, NR 0 Общее количество узлов в дереве NR = NL + NR + 1 12

9. 11. Структура узла дерева • Значение узла – ключ и сопутствующая информация – 9. 11. Структура узла дерева • Значение узла – ключ и сопутствующая информация – некоторая запись Row. Id • Левый и правый указатели на поддеревья Длина поиска – длина пути от корня до целевой записи 13

9. 12. Примеры бинарных деревьев 14 9. 12. Примеры бинарных деревьев 14

9. 13. Многоходовые деревья • Каждый узел дерева содержит N > 1 ключей и, 9. 13. Многоходовые деревья • Каждый узел дерева содержит N > 1 ключей и, соответственно, N + 1 указатель на подчиненные узлы • Ключи в узле упорядочены по возрастанию: K 1 < K 2 < … < KN • Ключи в поддеревьях упорядочены по такому же принципу, как и в бинарном дереве 15

9. 14. Узел дерева K 1 P 0 . . . K 2 P 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. В-дерево Сбалансированное многоходовое дерево. Узлы В-дерева могут иметь свободное пространство, что упрощает 9. 15. В-дерево Сбалансированное многоходовое дерево. Узлы В-дерева могут иметь свободное пространство, что упрощает операции вставки и удаления а) от слова Balanced – сбалансированное дерево, в котором все листья имеют один и тот же уровень б) от Bayer – автора данной структуры 17

9. 16. В-дерево степени t 1. В каждом узле дерева, за исключением корня, должно 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 9. 16. В-дерево степени t 3. Любой узел дерева, за исключением листьев, имеющий j ключей, должен иметь j+1 подчиненный узел 4. Все пути от корня до любых листьев имеют одинаковую длину h, называемую также высотой В-дерева Эффективность операций: Ο(h), h ≤ logt(n + 1) 19

9. 17. Структура узла В-дерева R 1 P 0 . . . R 2 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. 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. 19. Примеры В-деревьев 22

9. 20. Вставка в В-дерево Вставка – только в лист В-дерева Ситуации: 1. Целевой 9. 20. Вставка в В-дерево Вставка – только в лист В-дерева Ситуации: 1. Целевой лист не заполнен 23

9. 20. Вставка в В-дерево 2. Целевой лист заполнен полностью – расщепление листа 24 9. 20. Вставка в В-дерево 2. Целевой лист заполнен полностью – расщепление листа 24

9. 21. Пример: вставка в В-дерево степени 1 Вставляется последовательность ключей 20, 12, 48, 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 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 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 9. 21. Пример: вставка в В-дерево степени 1 7) 101 20 5 3 70 12 48 101 28

9. 22. Удаление ключа • Удаляемый ключ находится в листе дерева • Удаляемый ключ 9. 22. Удаление ключа • Удаляемый ключ находится в листе дерева • Удаляемый ключ находится в промежуточном узле дерева – замещается следующим за ним элементом (минимальный ключ из правого поддерева) – замещается предшествующим ему элементом (максимальный ключ из левого поддерева) 29

9. 23. Нормальная ситуация В целевом листе находится более чем t элементов (t – 9. 23. Нормальная ситуация В целевом листе находится более чем t элементов (t – степень В-дерева) Пример: фрагмент В-дерева степени 2; удаляется ключ 20 20 42. . . 21 25 27 29 35. . . 30

9. 24. Антипереполнение листа В целевом листе находится только t ключей – минимально допустимое 9. 24. Антипереполнение листа В целевом листе находится только t ключей – минимально допустимое количество При удалении ключа нарушается свойство В-дерева 1. Перераспределение ключей 2. Слияние узлов 31

9. 25. Перераспределение ключей Соседний лист, подчиненный тому же ключу, что и целевой, содержит 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, 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 ключей Общее количество ключей: 9. 26. Слияние листьев Соседние листья содержат только по t ключей Общее количество ключей: (t – 1) + 1 + t = 2 t Удаляется один из листьев Удаляется ключ из родительского узла 34

9. 26. Слияние листьев Пример: фрагмент В-дерева степени 2; удаляется ключ 15 32 75 9. 26. Слияние листьев Пример: фрагмент В-дерева степени 2; удаляется ключ 15 32 75 92 8 15 42 52 35

9. 27. Пример: В-дерево степени 1 Удаляется ключ 77 64 19 10 81 25 9. 27. Пример: В-дерево степени 1 Удаляется ключ 77 64 19 10 81 25 77 93 36

9. 28. Основные свойства В-дерева 1. Ключи и ассоциированные с ними данные (Row. ID) 9. 28. Основные свойства В-дерева 1. Ключи и ассоциированные с ними данные (Row. ID) хранятся во всех узлах В-дерева 2. Произвольная выборка данных выполняется эффективно 3. Последовательная выборка данных мало эффективна 37

9. 29. В+ дерево Два типа узлов В+ дерева: • внутренние узлы – представляют 9. 29. В+ дерево Два типа узлов В+ дерева: • внутренние узлы – представляют собой В-дерево индексов; содержат только ключи • листья – объединены в двухсвязный список; содержат все ключи и ассоциированные с ними данные (Row. ID) 38

9. 29. В+ дерево Внутренние узлы – индексы. . . Листья 39 9. 29. В+ дерево Внутренние узлы – индексы. . . Листья 39

9. 30. Вставка в В+ дерево Аналогично В-дереву, за исключением расщепления листа: медианный ключ 9. 30. Вставка в В+ дерево Аналогично В-дереву, за исключением расщепления листа: медианный ключ перемещается в родительский узел и остается в листе (правом или левом) … … k 0 k 1 … kj-1 kj … k 2 n+1 40

9. 31. Пример: вставка в В+ дерево степени 1 Вставляется последовательность ключей 20, 12, 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 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 9. 31. Пример: вставка в В+ дерево степени 1 6) 70 5 3 20 5 12 48 20 48 70 43

9. 31. Пример: вставка в В+ дерево степени 1 6) 70 20 5 3 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 9. 31. Пример: вставка в В+ дерево степени 1 7) 101 20 5 48 3 20 5 12 70 70 101 48 45

9. 32. Удаление из В+ дерева Только из листьев Пример: В+ дерево степени 2; 9. 32. Удаление из В+ дерева Только из листьев Пример: В+ дерево степени 2; удаляется ключ 31 15 31 73 219. . . 17 21 27 . . . 31 35 39 . . . 46

9. 33. Антипереполнение: перераспределение Удаляется 39; перераспределение ключей (ключ 31 удаляется) 15 31 73 9. 33. Антипереполнение: перераспределение Удаляется 39; перераспределение ключей (ключ 31 удаляется) 15 31 73 219. . . 17 21 27 . . . 35 39 . . . 47

9. 34. Антипереполнение: слияние Удаляется 39; слияние листьев (ключ 31 удаляется) 15 31 73 9. 34. Антипереполнение: слияние Удаляется 39; слияние листьев (ключ 31 удаляется) 15 31 73 219. . . 17 21 . . . 35 39 . . . 48

9. 35. Хэш индексы • Для произвольного доступа к данным • Строится на уникальных 9. 35. Хэш индексы • Для произвольного доступа к данным • Строится на уникальных атрибутах • Хэш функция отображает индекс в физический адрес хранения соответствующей строки таблицы • Принцип отображения – m : 1 49

9. 36. Организация хранения таблицы 0 1 . . . N-1 Бакеты (buckets) 50 9. 36. Организация хранения таблицы 0 1 . . . N-1 Бакеты (buckets) 50

9. 37. Идея хеширования Ключи Первичная область Область переполнения hash бакет 51 9. 37. Идея хеширования Ключи Первичная область Область переполнения hash бакет 51

9. 37. Идея хеширования Для k 1 k 2 hash(k 1) = hash(k 2) 9. 37. Идея хеширования Для k 1 k 2 hash(k 1) = hash(k 2) k 1, k 2 – синонимы Разрешение коллизий: • выявление свободного пространства в бакете • обработка переполнения бакета 52

9. 38. Метод открытой адресации Первичная область + область переполнения Бакет А Бакет В 9. 38. Метод открытой адресации Первичная область + область переполнения Бакет А Бакет В бакет 53

9. 39. Метод срастающихся цепочек Указатель на свободное пространство Бакет В Бакет А 54 9. 39. Метод срастающихся цепочек Указатель на свободное пространство Бакет В Бакет А 54

9. 40. Метод раздельных цепочек Бакет В Область переполнения Бакет А Первичная область 55 9. 40. Метод раздельных цепочек Бакет В Область переполнения Бакет А Первичная область 55

9. 41. Сравнение методов индексирования В+ деревья Хеш индексы • представляются объектами базы данных 9. 41. Сравнение методов индексирования В+ деревья Хеш индексы • представляются объектами базы данных • не влияют на представление таблицы • упорядоченное хранение строк таблицы • определены и операции < и > для сравнения ключей • не представляются объектами базы данных • влияют на представление таблицы • упорядоченность строк отсутствует • определены только операции = и для сравнения ключей 56

9. 41. Сравнение методов индексирования В+ деревья Хеш индексы • пространство для таблицы выделяется 9. 41. Сравнение методов индексирования В+ деревья Хеш индексы • пространство для таблицы выделяется по мере вставки строк • могут создаваться на ключевых и не ключевых атрибутах • используются всеми СУБД • пространство для таблицы выделяется при создании таблицы • должны создаваться только на ключевых атрибутах • используются не всеми СУБД 57

9. 42. Рекомендации • Если размер таблицы сильно изменяется – не хэш таблица • 9. 42. Рекомендации • Если размер таблицы сильно изменяется – не хэш таблица • Если часто организуется поиск по критериям < > – не хэш таблица • Если используются справочники (мало изменяемые таблицы, поиск в них по =) – хэш таблицы 58

9. 43. Пример создания хеш таблицы Создание кластерного хеш-индекса (Oracle) CREATE CLUSTER HD ( 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 9. 43. Пример создания хеш таблицы Создание хеш-таблицы (Oracle) CREATE TABLE Tab ( MDID NUMBER (5) NOT NULL PRIMARY KEY, . . . -- другие колонки таблицы ) CLUSTER HD(MDID) -- на каком хеш-индексе строится таблица 60