Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦІЯ 3.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
223.74 Кб
Скачать

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

Адрес

(номер страницы)

Номер

накладной

Название

товара

Арти-

кул

Коли-чество

Дата

поставки

Ссылка

на

синонимы

500

29

Брюки

750

90

13.12.05

501

96

Сапоги

220

120

13.12.05

502

40

Костюм

300

35

14.12.05

500

503

504

505

Рис. 6. Пример хеширования с областью переполнения

Стратегия разрешения коллизий с помощью свободного замещения

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

Технології пошуку і видалення записів в обох стратегіях також аналогічні.

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

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

Дуже складною є ситуація, коли кількість запам'ятовуються записів більше, ніж передбачалося, і необхідно збільшити місце в пам'яті для їх зберігання або розміри таблиці хешування. У цій ситуації потрібно виконати повне повторне хешування.

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

Незважаючи на зазначені недоліки хешування, даний спосіб організації зберігання і швидкого витягання необхідних даних широко застосовується, в першу чергу в об'єктно-орієнтованих базах даних [12].