Главная > Программирование > Распределенные хэш-таблицы.Теория (финальная часть)

Распределенные хэш-таблицы.Теория (финальная часть)

И хорошая новость это то, что при распределении потоков – группировать хэш значения по «соседству» друг с другом не так важно.
С открытой адресацией, если есть кластер почти одинаковых значений, вы попадете в пустую ячейку в этой части хэш-таблицы.
С распределенными потоками, каждый элемент у которого имеет другое хэш значение, это не повлияет на другие элементы.
Динамическое изменение размера
основанное на коэффициенте загрузки.
Обычно можно услышать, что не хотелось бы полного заполнения хэш-таблицы из-за проблем поиска, который будет занимать все больше времени. Если значения нет в массиве с открытой адресацией, вам придется искать до тех пор, пока вы не обнаружите пустой адрес или ждать, пока вы вернетесь обратно к началу массива, другими словами, с полной таблицей, время поиска будет занимать 0(n) времени, продолжительность которого ужасает. Реальная реализация хэш-таблицы должна будет прослеживать коэффициент загрузки — соотношение между элементами и размером массива.
Если у вас массив для 10 элементов, с семью элементами в нем, коэффициент загрузки составит 0.7.
Фактически, коэффициент загрузки 0.7, в целом, самое время для изменения размера основного массива.
Выбор правильного хэш алгоритма
Чем больше коллизий происходит, тем хуже производительность у вашей хэш-таблицы.
С достаточным количеством элементов в вашей хэш-таблице, вы получите среднюю производительность, что хорошо – по существу, константное время равно 0(1). (Вся ловкость заключается в том, чтобы сделать массив, который растет все время, с начала ввода данных, до заполнения).
Но если у вас много элементов, которые хэшируются одним значением, тогда вам придется искать список элементов которые имеет одинаковые хэш значения. А это может растянуть поиск от константного времени до, ну, до линейного времени исчисляемого количеством элементов. Представьте, что ваша хэш функция хэширует все значения до 0, и вставляет их в первый элемент массива. Тогда это будет действительно сложный путь реализации линейного поиска.
Выбор хорошего алгоритма хэширования потребует немного усердия и эксперимента, и будет зависеть от поставленной перед вами задачи.
Если вы работаете с именами, возможно, вам не потребуется хэш алгоритм, который ищет только первую букву, потому что буквы в алфавите не используются равномерно – вы найдете больше имен, которые начинаются с буквы «S», чем с буквы «Z».
Возможно, вам захочется сделать хэш-функцию более быстрой – вам не захочется терять время, сохраняя данные полученные с помощью хэш-таблицы, т.к. вы находите хэш-функцию медленной.
Тут необходим тонкий баланс.
Сейчас вы готовы для реализации своей первой хэш-таблицы! Попробуйте. Это не очень трудно и конечный результат вполне полезен.

Для каждого программиста очень важно чтобы все данные с которыми приходится часто работать, на компьютере были в целости и сохранности. Но бывают всякие случаи когда данных теряются и тогда есть надобность восстановить все.В таких случая нужно обращаться к специалистам и здесь это решается на профессиональном уровне: http://www.paradise-r.ru/. Очень важно помнить что когда вы обращаетесь к знакомым то здесь не всегда можно будет все сделать как надо. Специалисты которые обучены в этой области знают как решать эту проблему.


Комментарии:

Об авторе: Johan8888