Учитывая, что каждый GUID представлен 16 байтами. Таким образом, в лучшем случае существует 2^128 возможностей = 3,4028237e+38 возможных GUID.
Возможно ли, что все это будет израсходовано?
Учитывая, что каждый GUID представлен 16 байтами. Таким образом, в лучшем случае существует 2^128 возможностей = 3,4028237e+38 возможных GUID.
Возможно ли, что все это будет израсходовано?
Нет. Даже если вы предполагаете чрезвычайно широкое использование идентификаторов GUID в какой-то области и чрезвычайно длительные временные масштабы, ключевым моментом в отношении идентификаторов GUID является их уникальность. Как только вы начнете получать повторы с любой вероятностью, которая имеет практическое значение, люди перестанут использовать GUID и, следовательно, больше не будут их использовать. Конечно, они могут использовать некоторые числа, которые выглядят как GUID в некоторых областях, где достаточно редкое использование все еще может помочь обеспечить локальную уникальность, но это будут только LUID, и, если повезет, люди также будут называть их так.
Чтобы показать вам, насколько велики 2 ^ 128 GUID:
1 GUID = 16 bytes
.
Следовательно, для хранения 2^128
GUID потребуется 2^4 * 2^128 bytes
.
2^4 * 2^128 = 2^132 bytes
Используя Python, я подсчитал, что это займет:4,951,760,157,141,521,099,596,496,896
терабайт.
Итак, сначала вам нужно будет побеспокоиться о возможности хранить такое количество GUID, прежде чем вы даже сможете подумать об их исчерпании.
В принципе: вы не можете убежать.
Просто потому, что я много раз слышал, как люди беспокоятся о столкновении, я расширим свой ответ, включив в него анализ возможностей столкновений.
average
количество UUID, которое вам понадобится, пока не возникнет коллизия:
2^128 / 2 = 2^127
Это означает, что существует 50%
шанс, что к тому времени, когда вы сгенерируете 2^127
GUID, вы получите коллизию. Количество GUID, которое вам нужно для этого:
170141183460469231731687303715884105728 GUIDs
Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь, но: это означает, что вероятность возникновения коллизии настолько мала, что даже не стоит проверять, существует ли только что сгенерированный UUID в вашей базе данных.
Примечание. Все это предполагает, что UUID генерируются с использованием хорошего алгоритма случайности и хорошего источника энтропии.