Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Структурный подход к организации баз данных

..pdf
Скачиваний:
4
Добавлен:
12.11.2023
Размер:
14.79 Mб
Скачать

ма 1М5 корпорации 1ВМ обеспечивает так называемое вторичное индек­ сирование, которое иллюстрируется рис. 7.7). Доступ к индексу последова­ тельный. Последовательная организация индекса дает возможность после­ довательно обрабатывать записи. При втором способе индекс не упорядо­ чивается, но к нему осуществляется произвольный доступ (например, система ОМ5-Н корпорации ВиггоидЬз обеспечивает произвольный доступ к статьям индекса, рис. 7.8), Общим для этих двух способов явля-

Индексный файл

Файл данных

Рис. 7.8. Индексно-произвольный метод доступа. Значение действительного ключа об­ рабатывается подпрограммой рандомизации (ПР), в результате чего вычисляется адрес записи в файле данных. Между вырабатываемым адресом и физической записью суще­ ствует однозначное соответствие. Доступ к индексу реализуется через ПР

ется то, что записи хранятся неупорядоченно по ключу индекса. Поэтому метод и называется индексно-произвольным.

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

Этот метод доступа имеет два основных недостатка:

1.Если индекс не упорядочивается, то только с его помощью обработать записи последовательно в соответствии с порядком индекса невозможно.

2.Поскольку каждой записи соответствует статья индексного файла, последний может иметь довольно большой объем.

Для устранения указанных недостатков широко применяется ин­ дексно-последовательный метод доступа (15АМ).

Эффективность доступа

1.Произвольная обработка. Так как индекс содержит статью для каждой записи, эффективность доступа равна единице. Это справедливо только для действительного ключа.

2.Последовательная обработка. Поскольку записи базы данных хранят­ ся в произвольном порядке и необязательно в логической последователь­ ности, эффективность последовательной обработки предсказать невозмож­ но. Для частичного решения этой проблемы индекс может быть органи­ зован логически последовательно.

Эффективность хранения

Размеры базы данных. Каждой записи базы данных соответствует статья индекса, поэтому индексный файл может иметь довольно большой объем, что потребует создания нескольких уровней индексации.

Для обеспечения возможности выборки различными прикладными программами по более чем одному типу атрибута или поля записи может возникнуть необходимость построения индексов для различных типов атрибутов. Метод доступа, в основу которого положена такая концепция, называется инвертированным.

7.2.4. Инвертированный метод доступа

Как правило, инвертированный метод доступа применяется только для поиска, хотя в некоторых системах им можно воспользоваться и для обновления. Хранение чаще всего осуществляется с помощью других методов доступа. Загрузка базы данных может, например, выполняться любым из описываемых в настоящей главе методов доступа внешней модели. Каждому «инвертированному» полю соответствует статья в табли­ це. Статья включает имя поля, его значение и адрес записи. После началь­ ной загрузки базы данных происходит упорядочение статей по имени поля, а групп статей с общим именем поля — по значению поля. Для каждого имени поля можно построить отдельный индекс. Записи с одним и тем же значением поля группируются, а общее для всех записей группы значение используется в качестве указателя этой группы. По мере добавления но­ вых записей создаются статьи в соответствующих индексах для соответ­ ствующих значений. При исключении записей статьи индекса, в соответ­ ствующих индексах для соответствующих значений уничтожаются. На

рис. 7.9 приведен пример поиска записей инвертированным методом досту­

па.

Инвертированный индекс для номера курса

Илак 1

Файл данных

Рис. 7.9. Инвертированный метод доступа. Файл данных инвертируется относительно поля «Номер курса». Каждому инвертированному полю соответствует статья в таблице, называемая также индексом. Статья включает имя поля, его значение и адрес записи. Для любого поля можно построить отдельный индекс, т. е. инвертировать файл относи­ тельно этого поля

Эффективность доступа. Доступу к записям базы данных предшеству­ ет доступ к индексному файлу (файлам). Поэтому эффективность инвер­ тированного метода доступа зависит от эффективности метода доступа, используемого для обращения к индексу. В любом случае необходимо по меньшей мере одно обращение к индексу и по меньшей мере одно обраще­ ние собственно к базе данных. Таким образом, эффективность доступа меньше 0,5. Для обращения к одной записи требуется осуществить мини­ мум два физических обращения. Определение метода, с помощью которого выполняется доступ к индексному файлу, связано с проведением соответ­ ствующего анализа. Эффективность доступа значительно повышается, если во время работы базы данных инвертированный индекс постоянно находится в памяти.

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

7.2.5. Прямой метод доступа

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

Физическое местоположение записи определяется непосредственно из значения ключа.

Эффективность доступа. Если между значением ключа и физическим адресом существует взаимно однозначное соответствие, то при непосред­ ственном использовании этого метода эффективность доступа всегда равна единице. В противном случае эффективность доступа при выборке запи­ сей зависит от метода выборки.

Эффективность хранения. Эффективность хранения зависит от плот­ ности ключей. При низкой плотности память расходуется впустую, посколь­

ку

резервируются

адреса, соответствующие

отсутствующим

ключам

(рис. 7.10).

 

 

 

 

 

 

Н о м е р а с т у д е н т о в

П р е о б р а з о в а н н ы е к л ю ч и

А д р е с а х р а н е н и я

 

 

(о т н о с и т е л ь н ы е

 

 

(и с х о д н ы е к л ю ч и )

(о б ъ е к т н ы е к л ю ч и )

 

 

н о м е р а б л о к о в )

 

 

 

 

 

 

Х101

01

 

1

Х101

 

 

XI02

02

 

2

Х102

 

 

Х103

03

 

3

Х103

 

 

 

 

 

' •

 

 

 

 

 

 

 

Х199

99

 

99

XI99

 

 

VI00

100

 

100

У500

 

 

У101,

101

 

101

У501

 

 

(Отсутствует)

(отсутствует)

пустая ячейка

 

 

У103

103

 

103

У503

 

Рис. 7.10. Прямой метод доступа. При построении

преобразованных (объектных) ключей

в

основу берутся номера студентов (исходные

ключи),

соответствующие

уникальным

адресам хранения. Взаимно однозначное соответствие между ключом записи и ее физическим адресом — основная особенность этого метода доступа

На рис. 7.10 приведен пример следующего алгоритма: у всех исходных ключей, начинающихся с комбинации «XI», оставить только последние две цифры, использовать их в качестве целевого ключа и адреса хранения; у всех исходных ключей, начинающихся с символа «V», оставить три последние цифры, которые использовать в качестве целевого ключа и адре­ са хранения. Заметим, что физическая запись с ключом «У102» отсутству­ ет, а память для этой записи резервируется. Другим недостатком этого метода доступа является обязательная уникальность ключей.

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

7.2.6. Метод доступа посредством хеширования

Как и прямой метод доступа, метод доступа посредством хеширова­ ния основан на алгоритмическом определении адреса физической записи по значению ее ключа. Различие состоит в том, что при прямом методе доступа имеет место взаимно однозначное отображение ключа в адрес, а метод доступа посредством хеширования допускает возможность отобра­ жения многих ключей в один адрес ат, е. один и тотчже адрес или блок может быть идентифицирован более чем одним значением ключа).

Алгоритм преобразования ключа в адрес часто называют подпрограм­ мой рандомизации или подпрограммой хеширования. Одинаковые ключи

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

На рис. 7.11 значение исходного ключа Гетта преобразуется в адрес первой записи цепочки синонимов — 415. Запись Гетта содержит указа­ тель на адрес 423, по которому размещается запись Мобиль. В свою очередь запись Мобилы содержит указатель на адрес 852, по которому размещается запись Суноси. Запись Суноси содержит указатель на адрес 900, по которому размещается запись Тексаси. Эта последняя запись в цепочке содержит нулевой указатель.

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

Исходные преоб­ Адрес

Содержи­ Указа­ Адрес

Содержи­ Указа­

ключи разован­

мое

тель

мое

тель

ные

записи

цепочки

записи

цепочки

ключи

(целевые)

Адамс

101

 

101

Адамс

0

Беккер

213

 

213

Беккер

°

Дамплин

311

 

311

Дамплин

 

0

Гетта

415

-

*»415

гетта

423у

Харти

т

 

420

Харта

У *

Мобиль

 

415

 

мобиль* 8 5 2 -'

Суноси

415

 

 

 

 

Текши

415

 

 

 

Основнал область хранения

_____4 Суноси 900 —^ _

^900 Тексаси- -*»о

Область переполнения

Рис. 7.11. Метод доступа посредством хеширования. Алгоритм преобразования ключа в адрес часто называют подпрограммой рандомизации или подпрограммой хеширования. Обратите внимание на цепочку синонимов для записей с ключами Гетта, Мобиль, Суноси и Тексаси

Эффективность доступа

На эффективность доступа данного метода оказывают влияние три фактора:

1. Распределение исходных ключей. В большинстве случаев распределение исходных ключей отличается от чисто случайного. Чем больше разработ­ чику известно о распределении, тем выше вероятность правильного выбора числа блоков и числа записей в блоках. Оптимальный выбор этих значений позволяет разработчику сократить среднюю длину цепочки синонимов. Эф­ фективность метода доступа посредством хеширования в значительной сте-

пени зависит от длины цепочки синонимов. В большинстве коммерческих систем управления базами данных подпрограммы рандомизации обеспечи­ вают приемлемые параметры, и пользователю едва ли необходимо их пере­ писывать.

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

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

Эффективность хранения

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

С помощью рассмотренных выше шести методов доступа внутренней модели можно реализовать другие, более сложные, методы доступа.

7.3. Методы доступа внешней модели (представления пользователя)

Методы доступа, описывающие логические взаимосвязи, мы называем методами доступа внешней модели. На основе модели данных, используе­ мой СУБД (например, реляционной, иерархической, сетевой или какоголибо их сочетания), могут быть получены различные представления поль­ зователя (внешние модели), описывающие взаимосвязь (взаимосвязи) между различными частями физической записи.

Методы доступа внутренней модели обеспечивают вхождение в базу данных, а методы внешней модели выполняют дальнейший поиск записей базы данных или их частей. С помощью взаимосвязей между записями методы доступа внешней модели осуществляют их хранение или поиск. Взаимосвязи между записями определяются моделью данных, используе­ мой конкретной СУБД в качестве основной структуры данных. Для отыска­ ния записи можно воспользоваться несколькими методами доступа внешней модели, но для хранения — только одним.

7.3.1. Взаимосвязи между двумя записями

Чтобы выяснить взаимосвязи между двумя записями, рассмотрим такую ситуацию.

Положим, имеются две записи X и V. Запись X уже хранится в базе данных, а запись V должна в ней храниться. Или другой случай: запись X найдена, а запись V необходимо найти. При наличии какой-либо взаимо­ связи между двумя записями, X и V, для иерархической и сетевой моделей данных она может задаваться следующими способами:

1. Взаимосвязь полей упорядочения. Две записи связаны по полю упоря­ дочения ключа, если поле упорядочения ключа записи У следует за полем упорядочения ключа записи X.

2. Взаимосвязь по подчиненности. Между записями X и V существует

взаимосвязь по подчиненности, если запись У <— подчиненная по отноше­ нию к записи X.

Иерархическая модель данных. Запись V может быть порожденной, а запись X — исходной.

Сетевая модель данных. V может быть записью-членом, а X — здписью-владельцем.

3. Взаимосвязь по порождению. Это — взаимосвязь по подчиненности, здесь X и V, меняются:ролями.

Иерархическая модель данных. Найденная запись X может быть по­ рожденной, а запись V, которую необходимо найти, — исходной.

Сетевая модель данных. Найденная запись X может быть записьючленом, а запись V, которую необходимо найти, — записью-владельцем. 4. Взаимосвязь «рядом». Эта взаимосвязь просто определяет необходи­ мость хранения записи V рядом с записью X.

Иерархическая модель данных. Наличие или отсутствие между запи­ сями X и У взаимосвязи полей упорядочения, взаимосвязи по подчинен­ ности или взаимосвязи по порождению не играет никакой роли.

Сетевая модель данных. Наличие или отсутствие между записями X и У взаимосвязи полей упорядочения, взаимосвязи по подчиненности или взаимосвязи по владению не играет никакой роли.

7.3.2. Методы доступа внешней модели

Существуют четыре типа методов доступа внешней модели, основан­ ных на четырех типах взаимосвязей между записями. Их следует оцени­ вать с точки зрения организации как хранения, так и поиска. Мы рассмот­ рим методы доступа внешней модели ддя иерархической и сетевой моделей далных.

1. Метод доступа с использованием полей упорядочения. Подлежащая хранению запись У — это запись, поле упорядочения которой следует за полем упорядочения записи X.

Иерархическая модель данных. Записи X и V принадлежат к одному и тому же типу узла. При отсутствии экземпляра узла, с которым можно установить взаимосвязь, понятие следующего по порядку экземпляра те­ ряет смысл.

Сетевая модель данных. X и V принадлежат к одному и тому же типу записи. При отсутствии экземпляра записи, с которым можно установить взаимосвязь, понятие следующего по порядку экземпляра теряет смысл.

Перечислим методы доступа, используемые для установления взаимо­ связей на основании поля упорядочения.

К предшествующему.

Иерархическая модель данных. Либо включить (хранить) /либо найти экземпляр узла V, РЦЮК (ПРЕДШЕСТВУЮЩИЙ) экземпляру узла X.

Сетевая модель данных. Либо включить (хранить), либо найти эк­ земпляр записи V, РРЮК (ПРЕДШЕСТВУЮЩИЙ) экземпляру запи­ си X.

К следующему

Иерархическая модель данных. Либо включить (хранить), либо найти экземпляр узла V, ^ Х Т (СЛЕДУЮЩИЙ) за экземпляром узла X.

Сетевая модель данных. Либо включить (хранить), либо найти эк­ земпляр записи V, \ЕХТ (СЛЕДУЮЩИЙ) за экземпляром записи X.

2. Метод доступа по подчиненности. Метод доступа по подчиненности может использоваться для хранения и поиска подчиненных узлов для иерархической модели данных и записей для сетевой модели данных. Можнр определить следующие условия (рис. 7.12).

Рис. 7.12. Методы доступа по подчиненности. Условия: первый, последний, упорядочен­ ный (следующий и предыдущий), «нет условий». Методы доступа по подчиненности могут использоваться как для хранения, так и для поиска порожденных узлов иерархической модели данных и записей сетевой модели данных

Первый

Иерархическая модель данных, В результате включения порожденный узел У — первый порожденный исходного узла X.

Сетевая модель данных. В результате включения запись-член V — первый член записи-владельца X.

Последний

Иерархическая модель данных. В результате включения порожденный узел V — последний порожденный исходного узла X.

Сетевая модель данных. В результате включения запись-член V — последний член записи-владельца X.

Упорядоченный

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

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

Нет условий.

Система управления базами данных не будет поддерживать порядка подчинения.

Условия, определенные для поиска при использовании методов досту­ па по подчиненности, таковы:

Первый

Иерархическая модель данных. Найти первый порожденный узел (рис. 7.12).

Сетевая модель данных. Найти первую запись-член (рис. 7.13).

Рис. 7.13. Правила связывания чле­ нов набора для сетевой модели данных.

Первый

Последний

Предыдущий

Следующий

Упорядоченный (только для

 

поиска)•

Последний

Иерархическая модель данных. Найти последний порожденный узел. Сетевая модель данных. Найти последнюю запись-член.

Предшествующий

Иерархическая модель данных. Найти порожденный узел, предшест­ вующий последнему найденному порожденному.

Сетевая модель данных. Найти запись-член, предшествующую послед­ ней найденной записи-члену (на рис. 7.13 запись-член 4 — последняя выбранная запись).

Следующий

Иерархическая модель данных. Найти порожденный узел, следующий за последним найденным порожденным.

Сетевая модель данных. Найти запись-член, следующую за последней найденной записью-членом (на рис. 7.13 запись-член 4 — последняя найденная запись-член).

С ограничениями

Иерархическая модель данных. Найти порожденный узел, учитывая заданные ограничения.

Сетевая модель данных. Найти запись-член, учитывая заданные огра­ ничения.

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

Иерархическая модель данных. Существование порожденного узла при отсутствии исходного невозможно. Это означает, что хранение порож­ денного невозможно, если не хранится исходный. Таким образом, метод доступа к исходному не может применяться для хранения порожденного и исходного. Однако он может быть полезен для поиска исходного по по­ рожденному (рис. 7.14).

Рис. 7.14. Метод доступа к исходному или владель­ цу. Поиск исходного узла или записи-владельца X по порожденному узлу или записи-члену У (иерархи­ ческая модель)

Сетевая модель данных. В некоторых разновидностях сетевой модели данных запись-член может существовать при отсутствии записи-владель­ ца. В этих случаях метод доступа к владельцу может использоваться как для хранения, так и для поиска владельца по члену (рис. 7.14).

4. Метод доступа «рядом». Этот метод модели предназначен только для хранения данных.

Иерархическая модель данных. Порожденный узел должен храниться физически рядом с исходным с учетом заданной иерархией взаимосвязи.

Сетевая модель данных. Запись-член должна храниться физически рядом с записью-владельцем с учетом заданной взаимосвязи.

Часто методы доступа внешней модели реализуются с помощью указателей. Существуют указатели трех типов:

Соседние файлы в папке книги