Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Может ли GUID совпасть?

Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,4028×1038), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.
Как его изменить (модифицировать) чтобы он вообще никогда не мог совпасть?


Ответ

Если вопрос чисто теоретический, то изменить (модифицировать) GUID, так чтобы он вообще никогда не мог совпасть - невозможно.
Если практический, прибавьте к нему timestamp и уникальный id клиента (того, кто генерирует id, например id телефона или жесткого диска).
Для хранения второго числа можно использовать отдельное поле. Сравнивать разумеется надо сразу оба поля. Теоретически этим мы нарушим правило 128 бит в GUID, но практически мы застрахуемся, например, от неверного алгоритма получения случайных чисел и даже при супер больших данных не получим коллизии.
Насколько я помню в WinAPI при генерации итак учитывается timestamp и id устройства.
Впрочем, вероятность коллизии и с обычным GUID итак пренебрежительно мала.

Комментариев нет:

Отправить комментарий