Открытое хеширование и закрытое хеширование - противоречивые определения из разных источников - PullRequest
0 голосов
/ 02 мая 2020

В настоящее время я беру курс по системам управления базами данных, и в качестве библиографии нашего курса мы используем книгу "Концепции систем баз данных", написанную Silberschatz, Korth и Sudarshan.

В разделе о хешировании на странице 659 седьмого издания:

Чтобы вставить запись с ключом поиска Ki, мы вычисляем h (Ki), который дает адрес блока для этой записи. Мы добавляем индексную запись для записи в список по смещению i. Обратите внимание, что существуют другие варианты индексов ha sh, которые по-разному обрабатывают случай нескольких записей в сегменте; описанная здесь форма является наиболее широко используемым вариантом и называется цепочкой переполнения. Индексирование Ha sh с использованием переполнения также называется закрытой адресацией (или, реже, закрытым хешированием). Альтернативная схема хеширования, называемая открытой адресацией, используется в некоторых приложениях, но не подходит для большинства приложений индексирования базы данных, поскольку открытая адресация не поддерживает эффективное удаление. Мы не будем рассматривать ее далее.

Немного далее, это продолжается:

В основанном на диске индексе ha sh, когда мы вставляем запись, мы определяем область памяти, используя хеширование ключа поиска, как описано ранее. Предположим сейчас, что в корзине есть место для хранения записи. Затем запись сохраняется в этом ведре. Если в корзине недостаточно места, говорят, что происходит переполнение корзины. Мы обрабатываем переполнение корзины, используя корзины переполнения. Если запись должна быть вставлена ​​в корзину b, а b уже заполнена, система предоставляет корзину переполнения для b и вставляет запись в корзину переполнения. Если корзина переполнения также заполнена, система предоставляет другую корзину переполнения и т. Д. Все блоки переполнения данного блока объединены в связанный список

Это определение Закрытое хеширование , кажется, точно то же самое, что я вижу во многих местах, упоминаемых как Открытое хеширование (например, здесь https://opendsa-server.cs.vt.edu/ODSA/Books/CS3/html/OpenHash.html). Другие места согласны с книгой (как эта https://www.tutorialspoint.com/dbms/dbms_hashing.htm)

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

Я создаю эту топи c в надежде, что кто-то, более знакомый с этими концепциями, сможет объяснить мне, какая версия является правильной, просто ли я путаю или смешиваю концепции, и что такое открытое и закрытое хеширование / адресация.

...