Чем NanoID отличается от UUID?
Записью и алфавитом. UUID — это 36 символов с дефисами и фиксированной внутренней разметкой: в нем есть поля версии и варианта, часть битов занята ими, а не случайностью. NanoID — просто строка символов из выбранного алфавита, никаких служебных полей в ней нет. При длине по умолчанию в 21 символ и алфавите из 64 знаков это 126 бит случайности — практически столько же, сколько у UUID версии 4, при записи на 15 символов короче.
Какая длина NanoID нужна?
По умолчанию берут 21 символ: этого хватает, чтобы столкновение оставалось невероятным при любых разумных объемах. Каждый символ алфавита из 64 знаков добавляет 6 бит, поэтому длину можно менять под задачу: 10 символов дают 60 бит и годятся для коротких ссылок, 32 символа — 192 бита для долгоживущих ключей. Сокращая длину, помните, что вероятность столкновения растет квадратично от числа выданных идентификаторов, а не линейно.
Можно ли вставлять NanoID в адрес страницы?
Да, алфавит по умолчанию для этого и подобран: в нем только латинские буквы, цифры, дефис и подчеркивание — символы, которые не требуют экранирования ни в адресе, ни в имени файла, ни в идентификаторе HTML-элемента. Если идентификатор придется диктовать голосом или набирать вручную, возьмите алфавит без заглавных букв: он короче на 26 знаков, но и путаницы дает меньше.
Сортируется ли NanoID по времени создания?
Нет, в нем нет метки времени — все символы случайные. Если нужен идентификатор, у которого порядок строк совпадает с порядком создания, возьмите ULID или UUID версии 7. Обратная сторона такого порядка в том, что по идентификатору видно время создания записи и примерно понятно, сколько их выдано, — у NanoID наружу не утекает ничего.