Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рейтинг 2 БД.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
168.57 Кб
Скачать

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

Этот метод служит для обеспечения быстрого поиска данных с использованием вторичных ключей. В примере раздела 4.3 это может быть разбивка рабочих по цехам. Для реализации метода создается инвертированный файл. Такой подход позволяет избежать просмотра всех записей файла.

Рассмотрим пример. Допустим необходимо найти всех рабочих 6 цеха.

Исходные файлы

0311

Адрес блока

0934

02

1

0802

04

2

06

3

0422

11

4

0422

0981

Инвертиро-ванный файл

1016

Структура инвертированного файла сходна со структурой индексного файла, только здесь в качестве индексов берутся значения вторичного ключа. В блоках записываются значения первичных ключей, либо сразу адреса записей.

Выводы. 1. С увеличением объема исходного файл улучшается эффективность хранения.

2. Эффективность доступа уменьшается с ростом базы данных, т.к. информация в блоках просматривается последовательно.

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

6.Прямой метод доступа. Хеширование. Пример

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

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

Ключ

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

Действительный адрес

1

10

101

134

205

415

632

1

10

101

134

205

.

.

1001

1011

.

.

.

.

.

Преобразованному ключу ставится в соответствие адрес с 1001 до 1011. Все ячейки с 1002 до 1011 являются пустыми. Это и есть зарезервированная память. Чтобы избавиться от основного недостатка в прямом методе доступа (а именно, значительного резервирования памяти), применяют методы хеширования.

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

Отметим, что записи, имеющие одинаковые значения преобразованного ключа называются синонимами. Таким образом, в памяти записи-синонимы образуют так называемую цепочку. Отметим, что адрес записи занимает одну ячейку.

Исходные значения ключей

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

1-100

(синонимы)

201-400

401-600

601-800

1

2

3

4

Существует несколько способов хеширования. Например, память делится на основную область и область переполнения. Записи в основной области могут быть блокированы. Означает, что в основной области подряд располагается несколько записей-синонимов. Если коэффициент блокировки kблок =3, то подряд можно размещать не более 3-х записей-синонимов. Все остальные записи будут размещаться в области переполнения. Таким образом, при этом избегаем резервирования памяти. Длина цепочки не должна быть большой т.к. из-за этого значительно ухудшается эффективность доступа к памяти.

В другом методе хеширования память не делится на основную и область переполнения. Если адрес занят в другой записи, то эта запись вытесняется. В этом варианте хеширования эффективность хранения выше, но ниже эффективность доступа.