Задать вопрос
Driver86
@Driver86
Немодератор toster.ru

Какой хэш использовать в качестве уникального ключа для текстов?

В БД будет храниться текст до 500 символов unicode.
Должна быть уникальность. Поэтому в качестве primary key предполагаю использовать хэш.
Записей будет, максимум 350 млрд (но это самый сложный случай, так что скорее всего намного меньше).
Достаточно ли будет md5, или вероятность коллизии будет слишком высока?
P.S. Можно было бы взять сразу sha512 какой-нибудь, но важны скорость расчёта хэша и вес индекса БД.
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
Driver86
@Driver86 Автор вопроса
Немодератор toster.ru
Остановился на md5.
По моим тестам, реальный шанс получить коллизию начинается где-то после 20.000.000.000.000.000 записей, что много больше 350 млрд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
1) Можешь смело брать sha256/512. Они уже имеют аппаратную поддержку в процессорах и должны быть быстрее чем MD5. Проверь этот факт для твоего API.

2) По поводу борьбы с коллизиями. Нужно посчитать цену коллизии. Тоесть если она все таки
возникает - как это повлияет на ваш бизнес
. И как вы будете выходить из ситуации.

Вообще я думаю что все будет в порядке. 350 млрд. Номерная емкость SHA256 - это 1.157920892373162E77
и доля ключей составляет 3.0226589942830556E-66.

Это буквально 0 процентов. Ноль целых и потом 60 нулей после запятой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы