Хешування в СУБД: статичні та динамічні методи хешування

Що таке хешування в СУБД?

У СУБД хешування — це метод прямого пошуку розташування потрібних даних на диску без використання структури індексу. Метод хешування використовується для індексування та отримання елементів у базі даних, оскільки швидше шукати певний елемент за допомогою коротшого хешованого ключа замість використання його початкового значення. Дані зберігаються у формі блоків даних, адреса яких генерується шляхом застосування хеш-функції в місці пам’яті, де зберігаються ці записи, відомому як блок даних або сегмент даних.

Навіщо нам хешування?

Ось ситуації в СУБД, коли потрібно застосувати метод хешування:

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

Важливі термінології в хешуванні

Ось важливі терміни, які використовуються в хешуванні:

  • Відро даних – Блоки даних – це місця пам’яті, де зберігаються записи. Він також відомий як одиниця зберігання.
  • ключ: Ключ СУБД це атрибут або набір атрибутів, який допомагає вам ідентифікувати рядок (кортеж) у відношенні (таблиці). Це дозволяє знайти зв’язок між двома таблицями.
  • Функція хешу: Хеш-функція – це функція відображення, яка відображає весь набір ключів пошуку на адресу, де розміщено фактичні записи.
  • Лінійне зондування – Лінійне зондування – це фіксований інтервал між зондуваннями. У цьому методі для введення нового запису використовується наступний доступний блок даних замість перезапису старішого запису.
  • Квадратичне зондування– Це допомагає вам визначити нову адресу відра. Це допомагає вам додати інтервал між зондами шляхом додавання послідовного результату квадратичного полінома до початкового значення, заданого вихідним обчисленням.
  • Хеш-індекс – Це адреса блоку даних. Хеш-функція може бути як простою математичною функцією, так і навіть складною математичною функцією.
  • Double Хешування -Double Хешування — це метод комп’ютерного програмування, який використовується в хеш-таблицях для вирішення проблем зіткнення.
  • Переповнення відра: Умова переповнення ковша називається зіткненням. Це фатальний етап для функціонування будь-якої статики.

Типи методів хешування

В основному існує два типи методів/технік хешування SQL:

  1. Статичне хешування
  2. Динамічне хешування

статичне хешування

У статичному хешуванні результуюча адреса сегмента даних завжди залишатиметься незмінною.

Тому, якщо ви згенеруєте адресу для скажімо Student_ID = 10 за допомогою функції хешування мод(3), результуюча адреса сегмента завжди буде 1. Отже, ви не побачите жодних змін в адресі сегмента.

Тому в цьому методі статичного хешування кількість сегментів даних у пам’яті завжди залишається постійною.

Статичні хеш-функції

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

Статичне хешування далі поділяється на

  1. Відкрити хешування
  2. Закрити хешування.

Відкрийте Хешування

У відкритому методі хешування замість перезапису старішого для введення нового запису використовується наступний доступний блок даних. Цей метод також відомий як лінійне зондування.

Наприклад, A2 – це новий запис, який потрібно вставити. Хеш-функція генерує адресу як 222. Але вона вже зайнята іншим значенням. Ось чому система шукає наступне відро даних 501 і призначає йому A2.

Відкрийте Хешування
Як працює відкритий хеш

Закрити хешування

У методі закритого хешування, коли відра заповнені, нове відро виділяється для того самого хешу, а результати зв’язуються після попереднього.

Динамічне хешування

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

Різниця між упорядкованим індексуванням і хешуванням

Нижче наведено основні відмінності між індексуванням і хешуванням

параметри Індексація замовлення Хешування
Зберігання адреси Адреси в пам'яті сортуються відповідно до значення ключа, яке називається первинним ключем Адреси завжди генеруються за допомогою хеш-функції для значення ключа.
продуктивність Він може зменшуватися, коли дані в хеш-файлі збільшуються. Оскільки він зберігає дані у відсортованому вигляді, коли виконується будь-яка операція (вставлення/видалення/оновлення), що знижує його продуктивність. Ефективність хешування буде найкращою, коли відбувається постійне додавання та видалення даних. Однак, коли база даних величезна, організація хеш-файлу та його обслуговування будуть дорожчими.
Використовувати для Рекомендується для пошуку даних у діапазоні. Це означає, що якщо є дані для певного діапазону, цей метод є ідеальним варіантом. Це ідеальний метод, коли ви хочете отримати певний запис на основі ключа пошуку. Однак він працюватиме добре лише тоді, коли хеш-функція знаходиться на ключі пошуку.
Управління пам'яттю Буде багато невикористаних блоків даних через операцію видалення/оновлення. Ці блоки даних не можна надати для повторного використання. Тому необхідно регулярно обслуговувати пам'ять. У статичних і динамічних методах хешування пам'яттю завжди керують. Переповнення відра також ідеально обробляється для розширення статичного хешування.

Що таке зіткнення?

Хеш-колізія – це стан, коли отримані хеші з двох або більше даних у наборі даних неправильно відображають те саме місце в хеш-таблиця.

Як боротися з колізією хешування?

Є дві техніки, які можна використовувати, щоб уникнути геш-колізії:

  1. Повторення: Цей метод викликає вторинну хеш-функцію, яка безперервно застосовується, доки не буде знайдено порожній слот, куди слід розмістити запис.
  2. Прикування: Метод ланцюжка створює пов’язаний список елементів, хеші ключа яких однакові. Цей метод вимагає додаткового поля посилання на кожну позицію таблиці.

Підсумки

  • In СУБД, хешування — це техніка прямого пошуку розташування потрібних даних на диску без використання структури індексу.
  • Метод хешування використовується для індексування та отримання елементів у базі даних, оскільки швидше шукати певний елемент за допомогою коротшого хешованого ключа замість використання його початкового значення.
  • Відро даних, ключ, хеш-функція, лінійне дослідження, квадратичне дослідження, хеш-індекс, Double Хешування, переповнення відра — це важливі терміни, які використовуються в хешуванні
  • Два типи методів хешування: 1) статичне хешування 2) динамічне хешування
  • У статичному хешуванні результуюча адреса сегмента даних завжди залишатиметься незмінною.
  • Динамічне хешування пропонує механізм, у якому сегменти даних додаються та видаляються динамічно та на вимогу.
  • У порядку індексування адреси в пам’яті сортуються відповідно до критичного значення, тоді як у хешуванні адреси завжди генеруються за допомогою хеш-функції для значення ключа.
  • Хеш-колізія – це стан, коли результуючі хеші двох або більше даних у наборі даних неправильно відображають те саме місце в хеш-таблиці.
  • Повторне хешування та ланцюжок — два методи, які допомагають уникнути колізій хешування.