@iogurt89

Правда ли UUID так надёжен?

Добрый день. В Вики в статье к UUID написано:
Основное назначение UUID — это позволить распределённым системам уникально идентифицировать информацию без центра координации. Таким образом, любой может создать UUID и использовать его для идентификации чего-либо с приемлемым уровнем уверенности, что данный идентификатор непреднамеренно никогда не будет использован для чего-то ещё. Поэтому информация, помеченная с помощью UUID, может быть помещена позже в общую базу данных, без необходимости разрешения конфликта имен.


В моей ситуации нужно генерировать идентификаторы для сообщений в мессенджере. При активной переписке каждый пользователь может отправлять около сотни сообщений. Людей которые будут пользоваться этим мессенджером будет как минимум 500 человек(размер компании в которой он будет использоваться). Реально ли можно использовать UUID в такой ситуации и не бояться что айдишники будут повторяться?

Поделитесь пожалуйста опытом использования UUID в реальных, более-менее больших проектах.
Заранее спасибо!
  • Вопрос задан
  • 1373 просмотра
Решения вопроса 2
GavriKos
@GavriKos
В вашем случае намного проще генерировать ID по нику пользователя в чате (его ID-номеру в базе, чтобы короче)+таймштампу с точностью до микросекунды. Гарантированая уникальность.
Ответ написан
Комментировать
bingo347
@bingo347
Crazy on performance...
алгоритм вычисления uuid использует timestamp и несколько псевдослучайных значений, вероятность того, что кто-то в мире сгенерирует такой же uuid в ближайшие 300 лет стремится к нулю
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Applez
@Applez
Разраб
Вообще, на UUID есть стандарт, в котором прописаны предъявляемые требования, если они Вас удовлетворяют, то можете смело использовать. RFC4122
Ответ написан
Комментировать
@rostislaved
"Общее количество уникальных ключей UUID (без учёта версий) составляет 2^128 = 256^16 или около 3,4 × 10^38. Это означает, что генерируя 1 триллион ключей каждую наносекунду, перебрать все возможные значения удастся лишь за 10 миллиардов лет. " (с) wiki
В вашем случае 100 сообщений * 500 человек = 5*10^4 в день, тогда:
P1 = 1 / (3,4 × 10^38) - вероятность получить какое-то одно определенное значение
P_day = (5*10^4) * P1 = 1.5 * 10^-34 - вероятность получить какое-то одно определенное значение за 1 день
P_year = 365 * P_day = 5.5 * 10^-32 - вероятность встретить определенное значение за 1 год
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы