Въведение в Hashing в СУБД
Когато говорим за огромната структура на базата данни и тяхната сложност, става много неефективно да се търсят всички индекси и достигането до желаните данни става много неясна и сложна възможност. Използвайки техниката на хеширане, тези състояния могат да бъдат достигнати и може да се назначи директен показалец, за да се знае точното и прякото местоположение на диска за конкретния запис, без да се използва сложната структура на индекса. Данните в случай на техника на хеширане се съхраняват под формата на блокове данни, чийто адрес се генерира чрез използване на функцията, обикновено известна като хеширане функция. Местоположението в паметта, където се съхраняват и се съхраняват записи, е известно като блокове данни или кофа с данни.
Видове хеширане в СУБД
Обикновено в СУБД има два вида хеширащи техники:
1. Статично хеширане
2. Динамично хеширане
1) Статично хеширане
В случай на статично хеширане, наборът от данни се формира и адресът на кофата е същият. Това означава, че ако се опитаме да генерираме адреса за USER_ID = 113, като използваме модула 5 на хеширане, тогава той винаги ни предоставя резултата като 3 с един и същи изглеждащ адрес на кофа. В този случай няма да има промяна в адреса на предоставената кофа. Следователно броят на кофите остава постоянен през цялата операция.
Експлоатация на статично тип хеширане
а. Търсене на запис: Ако има нужда да бъде намерен записът, тогава точно същата функция на хеширане се използва за извличане на адреса и пътя на кофа с данни със запаметените данни.
б. Вмъкване на нов запис: Ако нов и свеж запис бъде поставен в таблица, тогава се генерира адрес за нов запис въз основа на хеширащия ключ, като по този начин се съхранява записа в това място.
- Изтриване на записа: За да бъде изтрит записа, първо трябва да се извлече този запис, който може да бъде изтрит. След като тази задача е изпълнена, записите трябва да бъдат изтрити за този адрес на паметта.
- Актуализация на запис: За да актуализираме записа, първо търсим записа, като използваме хеш-базирана функция и след като това е направено, тогава може да се каже, че записът ни на данни е в актуализирано състояние. За да можем да вмъкнем нов файл във файла и адресът, генериран от функцията, базирана на хеш, и групата данни не е празна или ако данните вече присъстват на предоставения адрес. Тази ситуация, която възниква особено в случай на статично хеширане, може да бъде по-добре наречена препълване на кофата и следователно има някои начини, използвани за преодоляване на този проблем като:
(i) Open Hashing: Ако хешираща функция генерира адреса, за който данните могат да се видят вече в запазено състояние, в този случай следващото ниво на кофата автоматично ще бъде разпределено. Този механизъм може да бъде наречен като линейна сонда техника.
Например, ако R3 е свежият адрес, който трябва да бъде поставен, функцията на базата на хеш ще генерира адрес като числото 102 за R3 адреса. Генерираният адрес е в пълно състояние и следователно системата е предназначена да търси новия пакет данни, който е 113 и да присвоява R3 на тази група данни.
(ii) Затворено хеширане: Когато кофите са напълно пълни, след това се разпределя нова кофа за конкретен хеш-резултат, който е свързан веднага след този, завършен преди това, и следователно този метод се нарича Техника за преливане на веригата.
Например, R3 е свежият адрес, който трябва да бъде поставен в новата таблица, хеширащата функция се използва за генериране на адрес като числото 110 към него. Тази кофа от своя страна е пълна и следователно не може да получава нови данни и следователно свежа кофа се поставя накрая след 100.
2) Динамично хеширане
Този вид базиран на хеш метод може да се използва за решаване на основните проблеми на статичното хеширане като тези като препълване на кофа, тъй като кодовете с данни могат да растат и да се свиват с размера, който е по-оптимизиран за пространство и затова се нарича разширяем хеш-базиран метод. При този метод хеширането се прави динамично, което означава, че активността на вмъкване или изтриването е разрешена, без да се дава лоша производителност.
а. Търсене на ключ: Изчислете базирания на хеш адрес на необходимия ключ и проверете броя на битовете, които се използват в случай на директория, известна като i. Тогава тези, които са най-малко значими от I бита, се вземат от директорията, което дава представа за индекса от директорията. Използвайки тази стойност на индекса, отидете в директорията, за да намерите адреса на кофата, за да потърсите настоящите записи.
б. Вмъкване на нов запис: В началото се изисква да следвате същата процедура за извличане, която трябва да приключи някъде в кофата. Търсете пространството в тази кофа, след което поставете записите вътре в нея. Ако създадената кофа е пълна и пълна, тогава кофата ще се раздели и записите се преразпределят.
Например, последните два бита на цифрите 2 и 4 са 00. Значи те ще влязат в кофата B0 и така нататък според функцията на модула. Ключ 9 има адрес от 10001, който трябва да присъства в първата кофа, но ще се раздели и ще се премести в новата кофа В1 и това продължава, докато всички кофи и ключове не се динамично хешират. Хеш функцията се използва по начин, при който хеш функцията се използва за избор на колоната и нейната стойност за генериране на адрес. Максимално пъти, когато хеш функцията използва първичния ключ, който от своя страна се използва за генериране на адреси на блока с данни. Това е проста математическа функция, при която първичният ключ може да се счита и за адрес на блока данни, което означава, че всеки ред със същия адрес като този на първичния ключ ще се съхранява в блока с данни.
Препоръчителни статии
Това е ръководство за Хеширане в СУБД. Тук обсъждаме въвеждането и различните видове хеширане в СУБД, което включва статично хеширане и динамично хеширане заедно с примери. Може да разгледате и следните статии, за да научите повече -
- Модели на данни в СУБД
- Предимства на СУБД
- Инструмент за интегриране на данни
- Какво е RDBMS?