Введение в хеширование в СУБД

Когда мы говорим об огромной структуре базы данных и их сложности, поиск всех индексов становится очень неэффективным, и достижение желаемых данных становится очень расплывчатой ​​и сложной возможностью. Используя технику хеширования, можно достичь этих состояний и назначить прямой указатель, чтобы знать точное и прямое местоположение на диске для конкретной записи, не используя сложную структуру индекса. Данные в случае метода хеширования хранятся в форме блоков данных, адрес которых генерируется с использованием функции, обычно называемой функцией хеширования. Место в памяти, где оно находится и где хранятся записи, называется блоками данных или корзиной данных.

Типы хеширования в СУБД

Обычно в СУБД существует два типа методов хеширования:

1. Статическое хеширование
2. Динамическое хеширование

1) Статическое хеширование

В случае статического хеширования сформированный набор данных и адрес сегмента совпадают. Это означает, что если мы попытаемся сгенерировать адрес для USER_ID = 113, используя модуль хеширования 5, то он всегда дает нам результат 3 с тем же адресом сегмента. В этом случае не будет никаких изменений в адресе предоставленной корзины. Поэтому количество ковшей остается постоянным на протяжении всей операции.

Операция статически типизированного хеширования

а. Поиск записи: если существует необходимость в обнаружении записи, то точно такая же функция хеширования используется для извлечения адреса и пути к корзине данных с сохраняемыми данными.

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

  1. Удаление записи: чтобы удалить запись, сначала нужно выбрать эту запись, которую можно удалить. После выполнения этой задачи записи должны быть удалены для этого адреса памяти.
  2. Обновление записи: чтобы обновить запись, мы сначала ищем запись, используя функцию на основе хеша, и как только это будет сделано, можно сказать, что наша запись данных находится в обновленном состоянии. Для того, чтобы мы вставили в файл новую запись, а адрес, сгенерированный из основанной на хэше функции и блока данных, не является пустым или данные уже присутствуют в указанном адресе. Эта ситуация, которая особенно возникает в случае статического хеширования, может быть лучше названа переполнением сегмента, и поэтому есть несколько способов, используемых для преодоления этой проблемы, таких как:

(i) Открытое хеширование: если хеширующая функция генерирует адрес, для которого данные можно увидеть уже в сохраненном состоянии, в этом случае автоматически выделяется следующий уровень сегмента. Этот механизм можно назвать методом линейного зондирования.

Например, если R3 - это свежий адрес, который необходимо поместить, то функция на основе хеша сгенерирует адрес как число 102 для адреса R3. Сгенерированный адрес находится в полном состоянии, и поэтому система предназначена для поиска нового сегмента данных, который равен 113, и назначения R3 для этого блока данных.

(ii) Закрытое хеширование: когда сегменты полностью заполнены, то для определенного результата хеширования назначается новый сегмент, который связывается сразу же после завершенного ранее, и поэтому этот метод называется техникой цепочки переполнения.

Например, R3 является новым адресом, который требуется поместить в новую таблицу, функция хеширования используется для генерации адреса в виде числа 110 для него. Этот сегмент, в свою очередь, полон и, следовательно, не может получать новые данные, и поэтому после 100 добавляется новый сегмент.

2) Динамическое хеширование

Этот вид метода, основанного на хеше, может использоваться для решения основных проблем статического хеширования, таких как переполнение сегмента, так как сегменты данных могут увеличиваться и уменьшаться с размером, более оптимизированным для пространства, и поэтому его называют расширяемым. метод, основанный на хэше. В этом методе хеширование делается динамическим, что означает, что операции вставки или удаления разрешены без ухудшения производительности.

а. Поиск ключа: Рассчитайте хеш-адрес требуемого ключа и проверьте количество бит, которые используются в случае каталога, известного как i. Затем те, которые являются младшими из I битов, берутся из каталога, что дает представление об индексе из каталога. Используя это значение индекса, перейдите в каталог, чтобы найти адрес сегмента для поиска существующих записей.

б. Вставка новой записи: сначала вы должны следовать той же самой процедуре поиска, которая должна заканчиваться где-то в корзине. Найдите место в этом ведре, а затем поместите в него записи. Если это созданное ведро завершено и заполнено, то оно будет разделено и записи будут перераспределены.

Например, последние два бита цифр 2 и 4 равны 00. Таким образом, они будут добавлены в сегмент B0 и т. Д. В соответствии с функцией модуля. Ключ 9 имеет адрес 10001, который должен присутствовать в первом сегменте, но будет разделен и переместится в новый сегмент B1, и это будет продолжаться до тех пор, пока все сегменты и ключи не будут динамически хешированы. Хеш-функция используется таким образом, что хеш-функция используется для выбора столбца и его значения для генерации адреса. Максимальное количество раз, когда хеш-функция использует первичный ключ, который, в свою очередь, используется для генерации адресов блока данных. Это простая математическая функция, в которой первичный ключ также может рассматриваться как адрес блока данных, что означает, что каждая строка с тем же адресом, что и у первичного ключа, будет сохранена в блоке данных.

Рекомендуемые статьи

Это руководство по хешированию в СУБД. Здесь мы обсуждаем введение и различные типы хеширования в СУБД, которые включают статическое хеширование и динамическое хеширование вместе с примерами. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Модели данных в СУБД
  2. Преимущества СУБД
  3. Инструмент интеграции данных
  4. Что такое СУБД?