Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Физическая организация данных в БД. Словари баз данных.
Вопросы представления данных тесно связаны с операциями, при помощи которых эти данные обрабатываются. К числу таких операций относятся: выборка, изменение,включение иисключение данных. В основе всех перечисленных операций лежит операция доступа, которую нельзя рассматривать независимо от способа представления. В задачах поиска предполагается, что все данные хранятся в памяти с определенной идентификацией и, говоря о доступе, имеют в виду прежде всего доступ к данным (называемым ключами), однозначно идентифицирующим связанные с ними совокупности данных. Последовательный метод доступа Пусть нам необходимо организовать доступ к файлу, содержащему набор одинаковых записей, каждая из которых имеет уникальное значение ключевого поля. Самый простой способ поиска - последовательно просматривать каждую запись в файле до тех пор, пока не будет найдена та, значение ключа которой удовлетворяет критерию поиска. Очевидно, этот способ весьма неэффективен, поскольку записи в файле не упорядочены по значению ключевого поля. Сортировка записей в файле также неприменима, поскольку требует еще больших затрат времени и должна выполняться после каждого добавления записи. Поэтому, поступают следующим образом - ключи вместе с указателями на соответствующие записи в файле копируют в другую структуру, которая позволяет быстро выполнять операции сортировки и поиска. При доступе к данным вначале в этой структуре находят соответствующее значение ключа, а затем по хранящемуся вместе с ним указателю получают запись из файла. Существуют два класса методов, реализующих доступ к данным по ключу:
Индексно-последовательный метод доступа Бинарное дерево
Определение: Деревом называется конечное множество, состоящее из одного или более элементов, называемых узлами, таких, что:
Число порожденных отдельного узла (число поддеревьев данного корня) называется его степенью. Узел с нулевой степенью называют листом или концевым узлом. Максимальное значение степени всех узлов данного дерева называется степенью дерева. Если в дереве между порожденными узлами, имеющими общий исходный, считается существенным их порядок, то дерево называется упорядоченным. Упорядоченное дерево, степень которого не больше 2 называется бинарным деревом. Бинарное дерево особенно часто используется при поиске в оперативной памяти. Алгоритм поиска: вначале аргумент поиска сравнивается с ключом, находящимся в корне. Если аргумент совпадает с ключом, поиск закончен, если же не совпадает, то в случае, когда аргумент оказвается меньше ключа, поиск продолжается в левом поддереве, а в случае когда больше ключа - в правом поддереве. Увеличив уровень на 1 повторяют сравнение, считая текущий узел корнем. Бинарные деревья особенно эффективны в случае когда множество ключей заранее неизвестно, либо когда это множество интенсивно изменяется. Очевидно, что при переменном множестве ключей лучше иметь сбалансированное дерево. Определение: Бинарное дерево называют сбалансированным (balanced), если высота левого поддерева каждого узла отличается от высоты правого поддерева не более чем на 1. В-дерево и В+-дерево Занесение новой записи Удаление записи При поиске данных во внешней памяти очень важной является проблема сокращения числа перемещений данных из внешней памяти в оперативную. Поэтому, в данном случае по сравнению с бинарными деревьями более выгодными окажутся сильно ветвящиеся деревья - т.к. их высота меньше, то при поиске потребуется меньше обращений к внешней памяти. Наибольшее применение в этом случае получили В-деревья (В - balanced) Определение: В-деревом порядка n называется сильно ветвящееся дерево степени 2n+1, обладающее следующими свойствами:
Для такого дерева:
Включение в B-дерево Пусть необходимо вставить новый элемент в B-дерево порядка n. В этом случае этот элемент вставляется в соответствующий узел-лист. При этом возможны следующие варианты. 1. В вершине-листе есть место для нового ключевого значения. В этом случае ключ вставляется в соответствующее место этой вершины. 2. Вершина-лист уже содержит 2n ключей. В этом случае выполняются следующие действия. Новый ключ вставляется в соответствующее место данной вершины. После этого вершина будет иметь 2n+1 ключей, что недопустимо. Поэтому эту вершину необходимо разделить на две вершины, содержащие n ключей каждая, причем в левую вершину попадут ключи k1, ..., kn, а в правую – kn+2, ..., k2n+1. Ключ kn+1, т.е. средний ключ последовательности, должен быть включен в вершину-предок для данной вершины. Если в вершине-предке было меньше 2n ключей, то процесс заканчивается. 3. Вершина-предок тоже полна. В этом случае эту вершину также необходимо разделить на две. В худшем случае процесс деления вершин может распространиться на все вершины вплоть до корня. При этом высота дерева увеличится на единицу. Описанная процедура вставки сохраняет все свойства B-деревьев. Рассмотрим операцию включения на примере создания B-дерева степени 2 при следовании ключей в следующем порядке (20, 40, 10, 30, 15; 35, 7, 26, 18, 922; 5; 42, 13, 46, 27, 8, 32; 38, 24, 45, 25;). В этом случае результирующее дерево имеет вид (*) .
Исключение элемента из B-дерева При исключении элемента из B-дерева возможны два варианта. 1. Исключаемый элемент находится на листовой странице. В этом случае алгоритм удаления достаточно прост. 2. Элемент не находится на листовой странице. В этом случае его нужно заменить одним из двух лексикографически смежных элементов. Так как смежный элемент находится на листовой странице, то его исключить просто. В случае 2 поиск смежного ключа похож на поиск ключа при исключении из двоичного дерева. Необходимо спуститься вниз вдоль самых правых ссылок до листовой страницы T и заменить исключаемый элемент на правый элемент из T. При этом размер страницы T должен уменьшиться на единицу. В любом случае, после уменьшения размера страницы необходимо проверить количество элементов, оставшихся на этой странице. Если это количество стало меньше n, то нарушится одно из свойств B-дерева. В этом случае необходимо выполнить некоторые дополнительные действия. Один из возможный вариантов решения этой проблемы – позаимствовать элементы с одной из соседних страниц, назовем ее Q. В этом случае элементы исходной страницы Т и страницы Q поровну распределяются на обе страницы. Этот процесс называется балансировкой страниц. Однако может случиться так, что в странице Q нечего занимать, т.к. ее размер уже равен минимальному – n. В этом случае общее число элементов на страницах Т и Q равно 2n-1, и мы можем слить две страницы в одну, добавив сюда средний элемент из родительской для Т и Q страницы, а затем уничтожить страницу Q. Эти действия в точности обратны процессу разделения страниц при добавлении новых элементов. Удаление среднего ключа на родительской странице вновь может привести к тому, что ее размер станет меньше критического и потребуется проведение описанный выше действий уже на более высоком уровне. В худшем случае слияние страниц может распространиться вплоть до корневой страницы. Если корень сократиться до нулевого размера, то он удаляется, и высота B- дерева уменьшается. Пусть дано B-дерево второй степени (*). Рассмотрим процесс удаления элементов из этого дерева в следующем порядке: 25, 45, 24; 38, 32; 8, 27, 46, 13, 42; 5, 22, 18, 26; 7, 35, 15;. В результате должно получиться следующее B- дерево.
В-дерево, в котором истинные значения содержатся только в листьях (концевых узлах), называется В+-деревом. Во внутренних узлах такого дерева содержатся ключи-разделители, задающие диапазон изменения ключей для поддеревьев.
B- деревья наилучшим образом подходят только для организации доступа к достаточно простым (одномерным) структурам данных. Для доступа к более сложным структурам, таким, например, как пространственные (многомерные) данные в последнее время все чаще используют R-деревья. R-дерево (R-Tree) это индексная структура для доступа к пространственным данным, предложенная А.Гуттманом (Калифорнийский университет, Беркли). R-дерево допускает произвольное выполнение операций добавления, удаления и поиска данных без периодической переиндексации. Оно подобно B-дереву, но используется для организации доступа к пространственным данным, то есть для индексации многомерной информации, такой, например, какгеографические данные с двумерными координатами (широтой и долготой). Типичным запросом с использованием R-деревьев мог бы быть такой: «Найти все музеи в пределах 2 километров от моего текущего местоположения».Эта структура данных разбивает пространство на множество иерархически вложенных и, возможно, пересекающихся, прямоугольников (для двумерного пространства). В случае трехмерного или многомерного пространства это будут прямоугольные параллелепипеды (кубоиды) или параллелотопы.
Для представления данных используются записи, каждая из которых имеет уникальный идентификатор (tuple-identifier). В каждом концевом узле (листе) дерева содержится запись вида(I,tuple-identifier), где I - n-мерный параллелепипед, содержащий указатели на пространственные данные (его также называют minimal bounding rectangle, MBR), а каждый элемент в tuple-identifier содержит верхнюю и нижнюю границу параллелепипеда в соответствующем измерении. Неконцевые узлы содержат записи вида (I, childnode-pointer), где I минимальный ограничивающий параллелепипед для MBR всех узлов, производных по отношению к данному.Childnode-pointer - это указатель на производные узлы. Пусть M и m <= M/2 соответственно максимальное и минимальное количество элементов, которое может быть размещено в узле. Тогда свойства R-дерева можно описать следующим образом: |
||
Последнее изменение этой страницы: 2018-05-29; просмотров: 209. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |