Возможно ли, чтобы ASP.NET сервер генерировал один и тот же GUID для нескольких пользователей?

StackOverflow https://stackoverflow.com/questions/272169

  •  07-07-2019
  •  | 
  •  

Вопрос

Я видел, как Столкновения GUID обсуждения, но просто хотелось бы услышать ваши мысли о том, могло ли произойти столкновение GUID, если оба клиента обращались к одной и той же веб-странице, которая генерирует GUID точно в одно и то же время (возможно, с точностью до микросекунды)?

Это было полезно?

Решение

Это теоретически возможно, но крайне маловероятно.

Другие советы

Нет.Если это произойдет, беги и купи лотерейный билет!

На одном сервере нет, это невозможно. Направляющие версии 4 состоят (среди прочего) из псевдослучайного 54-разрядного значения, и, насколько я понимаю, они повторяют все значения перед повторением.

При создании на нескольких серверах возможно столкновение guid, хотя это крайне маловероятно.

См. RFC 4122 , в частности раздел 4.1.5. Я полагаю, что в современной Windows используются UUID v4.

Из Википедии, свободной энциклопедии

Глобальный уникальный идентификатор или идентификатор GUID (произносится как / & # 712; gu & # 720; & d # или / & # 712; gw & # 618; d /) - это особый тип идентификатора, используемый в программных приложениях в приказать предоставить ссылочный номер, который является уникальным в любом контексте (следовательно, «глобально»), например, при определении внутренней ссылки для типа точки доступа в программном приложении или для создания уникальные ключи в базе данных. Хотя каждый сгенерированный GUID не гарантированно является уникальным, общее количество уникальных ключей (2128 или 3.4 & # 215; 1038) настолько велико, что вероятность того, что одно и то же число будет сгенерировано дважды, очень мала , Например, рассмотрим наблюдаемую вселенную, которая содержит около 5 × 1022 звезд; тогда каждая звезда может иметь 6,8 × 1015 универсально уникальных GUID.

Если вы генерируете множество идентификаторов GUID, вероятность столкновения становится достаточно высокой из-за Парадокс дня рождения . Теоретически коллизия GUID должна быть крайне маловероятной (наивная интуиция), но практически это происходит время от времени.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top