Для такого большого диапазона ключей разделов лучше всего использовать алгоритм хэширования поверх поле или набор полей для генерации ключа (числа) с наименьшим коллизией.
Предполагая, что вы храните информацию о клиенте, например, хэш для имени клиента от «Джон Смит» может сгенерировать хэш-значение 32, потому что любой пользователь с тем же именем, что и «Джон Смит», будет генерировать тот же хэш, если он не часто, не было бы проблемой, потому что 32 не является идентификатором, и они могут повторяться, имея один и тот же хеш, они будут храниться в одном разделе.
Если вы действительно хотите распределить эти значения как можно более равномерно, вы можете использовать другое объединенное поле, чтобы отличить «Джона Смита» от «Джона Смита», например дату рождения. И если оба не родились в один и тот же день, вы найдете разные значения для каждый.
В вашем случае, поскольку диапазон очень велик, вы должны использовать алгоритм хеширования, чтобы хешировать эти значения, чтобы они соответствовали диапазону от -9223372036854775808 до 9223372036854775807.
Вам нужно столько ключей?
Если в вашей системе не ожидается очень большое количество разделов, простой способ справиться с этим — использовать натуральное число, которое точно отражает диапазон ключей, предоставляемых выбранной вами функцией хеширования, вы можете выбрать вариант с более высокой производительностью, или нижнее столкновение, или и то, и другое.
person
Diego Mendes
schedule
13.08.2018