
- •1.Физ. Организация бд. Основные способы доступа к памяти и критерии оценки их качества.
- •4.Индексно-произвольный метод доступа. Пример
- •2. Последовательный способ доступа к памяти. Пример
- •3.Индексно-последовательный метод доступа. Пример
- •5. Инвертированный метод доступа. Пример
- •6.Прямой метод доступа. Хеширование. Пример
- •7.Установление функциональных связей между объектами: определение фс, тождественные совокупности фс, цепь объектов, цепь фс, примеры
- •8.Установление структурных связей между объектами: характеристики структурных связей (4) без значения хар-ки детального объекта
- •9.Правило отображения функциональных связей в структ.Связи
- •12. Распределенные бд: Определение, способы проектирования, обработка запросов
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
2 3 4 |
Существует несколько способов хеширования. Например, память делится на основную область и область переполнения. Записи в основной области могут быть блокированы. Означает, что в основной области подряд располагается несколько записей-синонимов. Если коэффициент блокировки kблок =3, то подряд можно размещать не более 3-х записей-синонимов. Все остальные записи будут размещаться в области переполнения. Таким образом, при этом избегаем резервирования памяти. Длина цепочки не должна быть большой т.к. из-за этого значительно ухудшается эффективность доступа к памяти.
В другом методе хеширования память не делится на основную и область переполнения. Если адрес занят в другой записи, то эта запись вытесняется. В этом варианте хеширования эффективность хранения выше, но ниже эффективность доступа.