Выбор идентификатора сеанса строки длина, чтобы обеспечить уникальность - PullRequest
2 голосов
/ 24 апреля 2009

Когда идентификатор сеанса создается, идентификатор обычно не проверяется на уникальность. Проверка уникальности требует больших затрат при работе с миллиардами записей.

Мне было интересно, какой длины случайной строки идентификатора сеанса должно быть достаточно, чтобы полагаться на уникальность в производственном сервисе, таком большом, как Gmail, например.

Будут приветствоваться любые другие предложения по поддержанию уникальности сессии.

Спасибо

Рой.

Ответы [ 3 ]

9 голосов
/ 24 апреля 2009

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

3 голосов
/ 24 апреля 2009

Вместо случайного создания собственного числа, почему бы и нет ...

  • Использовать GUID (128-бит)
  • Используйте строку, содержащую год, месяц, день, час, минуту, секунду, миллисекунды или наносекунды

Если вы используете 128-битное случайное число, то у вас есть 1 в 3.40282366921e + 38 шанс получения дубликата. Предполагая, что ваши числа действительно случайны.

0 голосов
/ 24 апреля 2009

Хэш SHA-256 некоторых пользовательских данных и текущий полный рабочий день с таким количеством восстановления, которое доступно, должно дать вам нечто достаточно уникальное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...