Я хочу иметь возможность сделать большой mysql INSERT
, который игнорирует вставку, когда URL-адрес уже существует в базе данных. Это будет сделано с ON DUPLICATE KEY
.
Но для этого мне нужно сделать столбец url
уникальным индексом.
Я сделал это, создав новый столбец с именем url_hash
, где я храню хешированную MD5 версию URL-адреса, и вместо этого сделал этот столбец уникальным.
Единственная проблема в том, что после этого я подумал о том, как может работать MD5. И я понял, что это не может быть 100% защитой от столкновений. Уникальность хэшей не гарантируется на 100%. Даже если риск невелик, это может привести к столкновению.
Это заставило меня задуматься, действительно ли это лучший способ сделать это. Иметь хеш-значение в качестве уникального ключа для этой цели.
Есть ли способ сохранить URL-адрес как уникальный индекс на 100% с защитой от коллизий?
md5
не уникален, на самом деле теперь он совсем не уникален. security.stackexchange.com/questions/19906/ - person Martin   schedule 26.02.2016