Как сгенерировать UUID
Что такое UUID v4
UUID - это 128-битный идентификатор из 32 шестнадцатеричных символов, разбитых на группы 8-4-4-4-12, например 550e8400-e29b-41d4-a716-446655440000. В версии 4 почти все биты случайные (122 из 128), остальные помечают версию и вариант. Случайность инструмент берет из crypto.getRandomValues браузера, поэтому вероятность встретить два одинаковых значения ничтожно мала.
Чем UUID удобнее сквозной нумерации
Автоинкремент (1, 2, 3.) требует общей базы, которая раздает следующий номер. UUID можно создать где угодно и когда угодно, не спрашивая никого: два сервиса, мобильное приложение и импорт-скрипт генерируют значения независимо и не сталкиваются. Это выручает при слиянии данных из разных источников, работе офлайн и шардировании.
- первичные ключи, когда id задает приложение, а не база;
- идентификаторы заказов, сессий и загруженных файлов;
- ключи событий в очередях и логах распределенных систем;
- имена временных файлов и папок, устойчивые к совпадениям.
О чем стоит помнить
UUID v4 уникален, но не секретен: соседние значения легко подобрать, поэтому для доступа к данным он не заменяет пароль или токен. Порядка в нем тоже нет - отсортировать записи по времени создания по самому идентификатору не получится, для этого держите отдельное поле с датой.
Как сгенерировать UUID
-
Укажите количество
Введите число от 1 до 1000 - столько идентификаторов получите за одно нажатие.
-
Нажмите "Сгенерировать"
В поле справа появится список UUID v4, каждый с новой строки.
-
Скопируйте результат
Кнопка "Копировать" переносит весь список в буфер - его удобно вставить в SQL, конфиг или код.
Вопросы и ответы
UUID v4 - случайный 128-битный идентификатор в стандартном формате 8-4-4-4-12
Да, многие СУБД хранят его отдельным типом или в 16 байтах. Учтите, что случайный v4 не растет по порядку: сортировать записи по времени создания по нему нельзя, а индекс выходит менее плотным, чем у последовательного ключа
До 1000 UUID одним нажатием - каждый с новой строки, удобно для вставки в конфиг или скрипт
Вероятность коллизии пренебрежимо мала - генерация основана на crypto.getRandomValues