Нечетное столкновение с использованием UuidCreateSequential / NewSequentialID

Каковы шансы столкновения при использовании UuidCreateSequentialили это обертка NewSequentialID? Наиболее конкретным, что я нашел для последовательных направляющих, является "более вероятно, чем случайные направляющие".

Сравните это со случайными гидами версии 4, где есть масса забавной статистики:

  • 70-триллион гидов имеет вероятность столкновения 0,0000000004%. Так же, как ежегодные шансы попасть под метеорит ( вики)
  • 1 миллиард ПК, генерирующих 1 миллион гидов в год, имеет хорошие шансы столкновения через 70 000 лет ( lipper, guids part 3)
  • 2 600 000 000 000 000 000 поколений дают 1% вероятности столкновения

Но как насчет дорогих старых последовательных гидов? где его забавная статистика? Если уместно, предположим, современная версия SQL - скажем, 2012/2014 и Windows 2008 или 2012.

1 ответ

Если вы не делаете что-то глупое, например отсутствие сетевой карты на вашем сервере (или явная установка mac-адреса и дублирование macaddrs), вы не получите дубликаты. Если у вас нет сетевой карты, руководства будут уникальными для этой машины.

Внимательно прочитайте страницу документации MS, там написано:

"Каждый GUID, сгенерированный с помощью NEWSEQUENTIALID(), является уникальным на этом компьютере. GUID, сгенерированный с помощью NEWSEQUENTIALID(), уникален для нескольких компьютеров, только если на исходном компьютере есть сетевая карта".

Вы должны читать между строк немного, но они действительно уникальны, если вы не делаете глупостей.

ДОБАВЛЕННЫЙ КОММЕНТАРИЙ

Есть одно очевидное предостережение: документы MS могут быть ошибочными. Но доказать это может занять очень много времени, если вам придется опровергнуть, создав дубликат. Вполне возможно, что ms не использует генерируемый современный guid и может раскрывать базовый mac-адрес. Я, кажется, потерял свой код исходного кода и не могу проверить наверняка.:-)

Другие вопросы по тегам