Скачать презентацию 3 3 Индексные массивы 3 3 1 Скачать презентацию 3 3 Индексные массивы 3 3 1

уд-3-3_3-4.ppt

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

3. 3 Индексные массивы 3. 3 Индексные массивы

3. 3. 1 Линейные структуры 3. 3. 1 Линейные структуры

3. 3. 2 Нелинейные структуры 3. 3. 2 Нелинейные структуры

Нелинейные структуры индексов используют для создания индексных массивов ключевых полей. При организации индексов здесь Нелинейные структуры индексов используют для создания индексных массивов ключевых полей. При организации индексов здесь используются Бдеревья, которые представляют собой корневые сбалансированные сильно ветвистые деревья. Сбалансированность по степени вершин - каждая внутренняя вершина может иметь количество потомков, ограниченное определенной и одинаковой для всех вершин величиной. Сбалансированность по высоте – путь от корня до любого листа одинаков или различается не более чем на единицу – на одну вершину.

Каждая внутренняя вершина содержит информацию о n-1 различных последовательно возрастающих значениях индексируемого поля по Каждая внутренняя вершина содержит информацию о n-1 различных последовательно возрастающих значениях индексируемого поля по следующей схеме Pi Xi Pi+1 Xi+1 . . . Pn-1 Xn-1 Pn где Xi – i значение индексируемого поля, Pi – указатель на вершину, содержащую значение индексируемого поля, меньшие или равные Xi

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

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

В оперативную память считывается страница с корневой вершиной и последовательно просматривается до первого значения, В оперативную память считывается страница с корневой вершиной и последовательно просматривается до первого значения, превышающего значение индексируемого поля нужной записи, при этом определяется ссылка (номер) страницы-потомка (внутренней или листовой). Фамилия 1. Иванов 2. Петров 3. Сидоров 4. Лаврентьев 5. Егоров 6. Максимов 7. Сергеев 8. Григорьев 9. Матвеев 10. Владимиров 11. Николаев 1961 1972 1968 1975 1980 1973 1963 1977 1979 1966 1964 12. Федоров 1974 1968 1975 Год рождения 1963 1979 1961(1) 1963(7) 1964(11) 1966(10) 1968(3) 1972(2) 1973(6) 1974(12) 1975(4) 1980(5) 1977(8) 1979(9)

В оперативную память считывается страница потомок, если она внутренняя, ее обработка производится аналогично, если В оперативную память считывается страница потомок, если она внутренняя, ее обработка производится аналогично, если она является листовой, то она просматривается до нахождения нужного значения индексируемого поля и определяется номер страницы файла данных, которая содержит нужную запись. Фамилия 1. Иванов 2. Петров 3. Сидоров 4. Лаврентьев 5. Егоров 6. Максимов 7. Сергеев 8. Григорьев 9. Матвеев 10. Владимиров 11. Николаев 1961 1972 1968 1975 1980 1973 1963 1977 1979 1966 1964 12. Федоров 1974 1968 1975 Год рождения 1963 1979 1961(1) 1963(7) 1964(11) 1966(10) 1968(3) 1972(2) 1973(6) 1974(12) 1975(4) 1980(5) 1977(8) 1979(9)

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

3. 4 Расстановка (хеширование) записей 3. 4 Расстановка (хеширование) записей

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

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

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

1 -я новая запись Кл 1 h(Кл 1) = n добавление новой записи по 1 -я новая запись Кл 1 h(Кл 1) = n добавление новой записи по соотв. адресу M-я старая запись Кл. М h(Кл. М) = k считывание записи по соотв. адресу Выделенная под данные область памяти Номер(адрес) записи 1 … … 2 … … n … … k … …

Функция должна удовлетворять требованиям: - ее результат должен находиться в пределах диапазона адресов области Функция должна удовлетворять требованиям: - ее результат должен находиться в пределах диапазона адресов области памяти, выделяемой под данные; - значения функции в пределах выделенного диапазона должны быть равномерными. На практике используют функции, основанные на операциях деления по модулю (например М) h(Кл) = (Кл mod М) +1

Основная проблема хеширования – появление одинаковых значений хеш-сверток при разных значениях ключевых полей. Такие Основная проблема хеширования – появление одинаковых значений хеш-сверток при разных значениях ключевых полей. Такие ситуации называются коллизиями. Используются специальные подходы к их разрешению. Например – присоединение к записям, по которым возникают коллизии, дополнительных указателей, по которым размещаются новые записи, конфликтующие с ранее введенными. Для таких записей выделяется специальный участок памяти – область переполнения