Какой алгоритм хеширования для проверки дубликатов URL? - PullRequest
1 голос
/ 13 сентября 2011

Я сохраняю URL-адреса в базе данных, и когда я вставляю новый, я хочу проверить, существует ли этот URL-адрес уже в базе данных.

Обычной практикой (если я не ошибаюсь) является хеширование URL-адресов с использованием md5 или sha-1 и т. Д. ... и проверка этого поля в базе данных на наличие дубликатов перед вставкой нового.

Я знаю, md5 может вызывать столкновения, также sha-1 ...

Что вы мне предлагаете? Мои потребности:

  • Размер БД: В конечном счете от 10 до 20 миллионов записей в базе данных

  • Производительность / скорость: Небольшой размер хэша, поэтому в базе данных не будет большой проверки на наличие дубликатов (в этом поле будет индекс курса)

  • Допуск: Мне все равно, получу ли я 1 столкновение на каждые 100 000 записей. Мои потребности больше направлены на производительность (маленький хеш), а не на 0% коллизий (большой хэш).

  • Вероятность атаки по неверно сформированным URL-адресам с целью создания коллизий с целью: Чрезвычайно низкий

  • Максимально возможный урон в случае такой успешной атаки: Чрезвычайно низкий

Вопросы:

  • Считаете ли вы, что md5 достаточно (что-то лучше предложить)?

  • Может быть, md5 для меня даже излишне , и я мог бы серьезно повысить производительность, используя что-то более простое?

Заранее спасибо, ребята!

1 Ответ

0 голосов
/ 13 сентября 2011

Как насчет использования md5 или какого-либо аналогичного относительно недорогого хэша (может быть, Quark ?) И в редких случаях коллизий, проверяющих полный URL-адрес для соответствующих записей? Таким образом, в большинстве случаев у вас есть недорогая хеш-проверка, но вы также никогда не вставляете дублирующийся URL.

...