Генератор UUID
Создавайте случайные идентификаторы UUID v4 с помощью криптографического генератора случайных чисел вашего браузера. Создайте один или сто сразу, ничего никуда не отправляется.
Что такое UUID v4?
128 бит случайности, отформатированные как стандартный идентификатор.
UUID v4 — это 122 случайных бита (остальные 6 фиксированы для обозначения версии и варианта), что даёт примерно 5,3 андециллиона возможных значений. Коллизии настолько маловероятны, что не представляют практической проблемы для первичных ключей баз данных, идентификаторов запросов или имён файлов.
Распространённые случаи использования
Первичные ключи баз данных, не раскрывающие количество строк, ключи идемпотентности для API-запросов, идентификаторы корреляции для трассировки логов между сервисами, а также уникальные имена файлов или сессий, которые не столкнутся, даже если сгенерированы одновременно на разных машинах.
Как это работает
Каждый ID создаётся функцией crypto.randomUUID() — встроенным генератором браузера. Внутри он берёт 128 бит из криптографически безопасного источника случайности операционной системы (того же, что генерирует ключи TLS), а затем фиксирует 6 из этих бит определёнными значениями: полубайт версии становится 4, а биты варианта — 10. Именно поэтому у каждого UUID здесь третья группа начинается с 4, а четвёртая — с 8, 9, a или b. Остальные 122 бита — чистая случайность, из-за чего коллизии на практике не представляют проблемы.
Насколько не проблема? Существует 2^122 возможных UUID v4 — около 5,3 андециллиона. Математика «задачи о днях рождения» показывает, что потребуется сгенерировать примерно 103 триллиона UUID, прежде чем вероятность хотя бы одной коллизии достигнет одного к миллиону. Любое количество ID, которое когда-либо создадут ваши системы, — это статистическая погрешность на фоне этого числа, поэтому UUID v4 безопасно генерировать на любой машине без какой-либо координации.
Генерация — это единственный вызов API браузера, поэтому от сервера ничего не запрашивается и на него ничего не отправляется: откройте вкладку «Сеть» в инструментах разработчика, нажмите «Сгенерировать» и убедитесь, что ничего не происходит. Переключатели верхнего регистра и без дефисов лишь переформатируют уже сгенерированные ID; сами значения не меняются.
Практическое замечание: UUID v4 намеренно неупорядочены, поэтому в качестве первичных ключей базы данных они разбрасывают вставки по всему индексу. Если вам нужны ID, сортируемые по времени создания, обратите внимание на UUID v7, который помещает временную метку в старшие биты. Для всего остального (ID запросов, имена файлов, токены корреляции) случайный v4 подходит идеально.