Я сохраняю URL-адреса в базе данных, и когда я вставляю новый, я хочу проверить, существует ли этот URL-адрес уже в базе данных.
Обычной практикой (если я не ошибаюсь) является хеширование URL-адресов с использованием md5 или sha-1 и т. Д. ... и проверка этого поля в базе данных на наличие дубликатов перед вставкой нового.
Я знаю, md5 может вызывать столкновения, также sha-1 ...
Что вы мне предлагаете? Мои потребности:
Размер БД: В конечном счете от 10 до 20 миллионов записей в базе данных
Производительность / скорость: Небольшой размер хэша, поэтому в базе данных не будет большой проверки на наличие дубликатов (в этом поле будет индекс курса)
Допуск: Мне все равно, получу ли я 1 столкновение на каждые 100 000 записей. Мои потребности больше направлены на производительность (маленький хеш), а не на 0% коллизий (большой хэш).
Вероятность атаки по неверно сформированным URL-адресам с целью создания коллизий с целью: Чрезвычайно низкий
Максимально возможный урон в случае такой успешной атаки: Чрезвычайно низкий
Вопросы:
Считаете ли вы, что md5 достаточно (что-то лучше предложить)?
Может быть, md5 для меня даже излишне , и я мог бы серьезно повысить производительность, используя что-то более простое?
Заранее спасибо, ребята!