Безответственно ли генерировать новых гидов "волей-неволей", и если да, то почему? - PullRequest
0 голосов
/ 17 августа 2010

в c #, по крайней мере, генерация нового guid - это процесс вызова в одну строку.

Путеводитель прост в использовании и форматировании и «гарантирует» уникальность.

Однако безответственно просто уйти и генерировать новые ориентиры для каждой мелочи. Можем ли мы значительно увеличить вероятность столкновения гида "та загар"?!

мысли ...?

Ответы [ 5 ]

2 голосов
/ 17 августа 2010

GUID являются 128-битными значениями. Вы можете генерировать миллион в секунду, пока солнце не сгорит и не столкнется с столкновением. В частности, парадокс дня рождения, примененный к 128-битному значению, означает, что даже при значениях 10e19 у вас все еще есть только 50% вероятность столкновения.

Точнее говоря, 10e38 или «38 цифр», как вы говорите, только кажутся жалким числом из-за того, как оно выражено. Попробуйте написать это на листе бумаги как 1 с 38 нулями после него. Даже тогда вы, вероятно, не можете изобразить что-либо подобное тому, что оно представляет. Для этого проще как-то его сломать. Лучший способ сделать это - показать некоторые сравнительные значения.

В году 10e7,5 секунд.

На земле 10e9,8 человек.

В нынешнем возрасте Вселенной 10e10,1 года.

Таким образом, даже если бы каждый человек на Земле генерировал миллион GUID каждую секунду с начала времен, вы все равно бы использовали менее 1 / 10,000-й части домена.

0 голосов
/ 17 августа 2010

Другая сторона медали в том, что GUID, как правило, немного дороже в изготовлении, а также неудобен в обработке и использовании. Ничего более забавного, чем расшифровка zillion 32 CHAR ID, которые выглядят примерно так.

0 голосов
/ 17 августа 2010

GUID могут быть сгенерированы несколькими способами; чаще всего хеш несколько вещей, которые могут быть уникальными в любой момент времени, такие как IP адрес плюс дата / время часов и т. д. используются для генерации уникальных идентификаторов. Каждая система может иметь немного другой алгоритм генерации уникального Id.

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

0 голосов
/ 17 августа 2010

Не будет коллизий GUID:

Когда вы узнаете о GUID, кажется, что 38 мизерных цифр недостаточно.Разве мы не выбежим, если люди будут сходить с ума от GUID, назначая их на все: от своих питомцев до их любимого вкуса жевательной резинки?Подумайте, насколько велик Интернет: в индексе Google миллиарды веб-страниц.Давайте назовем это триллионом (10 ^ 12) для ударов.Подумайте о каждой статье в Википедии, каждом новостном материале на CNN, каждом продукте в Amazon, каждом посте в блоге от любого автора.Мы можем назначить GUID для каждого из этих документов.

Теперь давайте предположим, что каждый на Земле получает свою собственную копию Интернета, чтобы отслеживать свои вещи.Даже безумнее, скажем, каждый человек получает свою собственную копию Интернета каждую секунду.Как долго мы можем продолжать?

Более миллиарда лет.

Подробнее здесь .

0 голосов
/ 17 августа 2010

Пока вы не генерируете 10000 GUID каждый момент, я сомневаюсь, что есть проблема.Идентификаторы GUID включают временный компонент, поэтому идентификаторы GUID, сгенерированные в разные секунды, гарантированно будут уникальными.

Для идентификаторов GUID, сгенерированных в течение секунды, алгоритм также содержит рандомизатор, поэтому вам, вероятно, не придется беспокоиться об этом.,Я не могу вспомнить, насколько велико это поле у ​​моей головы, но оно должно быть примерно «достаточно большим»;)

...