Показать сообщение отдельно
  #1 (permalink)  
Старый 15.06.2014, 22:51
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Универсальный короткий id
Возникла ситуация:

нужно создавать максимально короткие id к данным. Причем делать это нужно как можно более экономично (в плане ресурсов).

id имеет малый период жизни, а количество одновременно живущих id может достигать 1000-3000






Как я думаю это сделать:

Решил использовать base36 в качестве генерации уникальных id.
Значения id будет от 1 до 4-х символов (то есть короткие!), при этом диапазон значений весьма неплохой - 1679615 !

// возвращает уникальный короткий ID в заданном числовом диапазоне
function getRandomID(min, max) {
  var int = Math.floor(Math.random() * (max - min + 1)) + min;

  return int.toString(36);
}

var id = getRandomID(0, 1679615);

alert(id);


Конечно данный id может оказаться уже задействованным (среди тех активных 1000-3000 айдишников), поэтому нужно проверять перед использованием! Но такая вероятность ничтожна в случае с 3000 id - вероятность 1 на 559




А как бы вы это делали?
Ответить с цитированием