Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekcii_OBD.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.87 Mб
Скачать

4. Технологія хеширування.

Є альтернативою технології B-дерева. Загальною ідеєю методів хеширування є застосування до значення ключа деякої функції згортки (хеш-функції), що генерує значення меншого розміру.

Формально під хеш-функцією розуміється результат перетворення даних довільної довжини в бітову послідовність з фіксованою довжиною, яку ще називають згорткою. В подальшому її використовують як для доступу до записів.

Основною вимогою до хеш-функції є:

- стійкість до колізій (два різні набори даних повинні мати різні результати перетворення);

- рівномірний розподіл значення згортки.

Її використання дозволяє на одній індексній сторінці розмістити більше інформації.

Разом з тим хеширування не гарантує відсутності колізій. Для подолання виникаючих конфліктів використовують наступні методи:

-відкритої адресації:

Запис нового рядка виконується не по адресу хеш-функції, а в перше вільне місце. Його недоліком є те, що при наступних записах може трапитись конфлікт з записом, адреса хеш-функції якого була зайнята конфліктним записом. При цьому методі конфлікт ніби відкладається, але насправді це інколи призводить до наростання конфліктності.

-використання зв’язаної області переповнення

При виникнені колізій для записів, що мають однакову функцію згортки створюється т.з. область переповнення, куди поміщаються конфліктуючі записи. При цьому вводиться додаткове поле – покажчик синоніму, що є адресою записів всередині області переповнення. Якщо він дорівнює 0, то це означає відсутність конфлікту.

-багатократного хеширування:

Спосіб вирішення конфліктів, що полягає в використані другої хеш-функції, якщо перша призводить до колізії. Її метою є отримання нової адреси хешируваня, яка б дозволила б уникнути конфлікту. Вона використовується для розміщення записів в області переповнення.

Переліченні вище методи хеширювавання є статичними – в них простір хеш-адрес задається при створені таблиці.

Головним їх обмеженням є фіксований розмір таблиці. Якщо таблиця заповнена занадто повно, то виникне багато послідовностей переповнення, що в свою чергу призводе до втрати головної переваги хешируваня - доступу до запису практично за одне звернення до таблиці.

Розширення таблиці вимагає її повного переоблаштування на основі нової хеш-функції із значенням згортки більшого розміру, що не завжди прийнятно у випадку баз даних.

Для подолання проблеми використовують метод динамічного хеширування:

Хэш-функція при цьому міняється динамічно, у залежності від глибини B-дерева.

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

Більш того, хеширування не підходить для пошуку і вибірки даних по будь якому іншому полю, відмінному від поля хеширування.

Разом з тим, слід відмітити можливість поєднання кращих властивостей методів B-дерева та хеширування.

Основою методу динамічного хеширування є обробка числа, згенерованого хеш-функцією у вигляді послідовності біт, і розподілу записів по сегментам на основі так званої прогресуючої оцифровки (progressive digitization) цієї послідовності. Динамічна хеш-функція генерує значення в широкому діапазоні, а іменно n-бітові двійкові цілі числа, де n, як правило дорівнює 32

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]