Метеор использует свой внутренний Случайный пакет для генерации Монго-идентификаторов для документов, где используемый набор символов определяется как:
var UNMISTAKABLE_CHARS = "23456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijkmnopqrstuvwxyz";
В описании метода для Random.id
также указано:
Возвращает уникальный идентификатор, такой как "Jjwjg6gouWLXhMGKW"
, который, вероятно, будет уникальным во всем мире.
, который определен для длины Id по умолчанию (17 символов; каждый из UNMISTAKABLE_CHARS
).
Теперь я хотел бы использовать только первые N символов идентификатора для сокращения моих URL-адресов (включая идентификаторы для динамической загрузки страниц, для которых требуется определенный документ, который определяется идентификатором).
Так что, если мой оригинальный идентификатор
`v5sw59HEdX9KM5KQE`
Я хотел бы использовать, например (рассмотрим здесь случайное N = 5):
{
_id:"v5sw59HEdX9KM5KQE",
short: "v5sw5"
}
в качестве схемы документа и получить соответствующий документ по этому идентификатору, используя { short }
в качестве запроса в моем Mongo.Collection
.
Теперь у меня вопрос , сколько символов достаточно для предотвращения коллизии , если нужно учитывать количество документов (таким образом, идентификаторов) от 5000 до 10000.
Примечание: У меня есть несколько инструментов для расчета энтропии, и все эти значения (набор символов, длина оригинальных идентификаторов, количество документов) передо мной, но я не знаю, как это сделать все, чтобы безопасно рассчитать N.