Я не говорю о распределенных системах ключ/значение, таких как обычно используемые с memcached, которые используют согласованное хеширование, чтобы сделать добавление/удаление узлов относительно дешевой процедурой.
Я говорю о вашей стандартной хеш-таблице в памяти, такой как python dict или хэш perl.
Казалось бы, преимущества использования согласованного хеширования также применимы к этим стандартным структурам данных за счет снижения стоимости изменения размера хеш-таблицы. Системы реального времени (и другие системы, чувствительные к задержкам) выиграют от / потребуют хеш-таблиц, оптимизированных для малозатратного роста, даже если общая пропускная способность немного снизится.
Википедия ссылается на «постепенное изменение размера», но в основном говорит о подходе к изменению размера с горячей/холодной заменой; есть отдельная статья о «расширяемом хешировании», в которой для дешевого повторного хэширования используется поиск в сегменте.
Просто любопытно, слышал ли кто-нибудь о встроенных в ядро хеш-таблицах с одним узлом, которые используют последовательное хеширование для снижения стоимости роста. Или это требование лучше выполнить, используя какой-то другой подход (аля два бита из Википедии, перечисленные выше)?
или ... весь мой вопрос ошибочен? Делают ли соображения подкачки памяти сложность того не стоит? То есть дополнительная косвенность последовательного хеширования позволяет повторно хешировать только часть всех ключей, но, возможно, это не имеет значения, потому что вам, вероятно, придется читать с каждой существующей страницы, поэтому задержка памяти является вашим основным фактором, и вы перефразируете некоторые или все ключи, не имеет значения по сравнению со стоимостью доступа к памяти.... но, с другой стороны, при последовательном хешировании все ваши переназначения ключей имеют одну и ту же страницу назначения, поэтому будет меньшая перегрузка памяти, чем если бы ваши ключи переназначались на любую из существующих страниц.
РЕДАКТИРОВАТЬ: добавлен тег «структуры данных», уточнено последнее предложение, чтобы сказать «страница» вместо «ведро».