Что такое UUID? Простое объяснение
Опубликовано 2026-07-15
UUID постоянно встречаются в программном обеспечении, ключах баз данных, токенах API, именах файлов, но объяснения часто более запутанны, чем сама концепция. Вот краткая версия.
Простое определение
UUID (универсальный уникальный идентификатор) — это 128-битное число, обычно записываемое как 32 шестнадцатеричных символа, разделённых на пять групп, например f47ac10b-58cc-4372-a567-0e02b2c3d479. Его единственная цель — служить идентификатором, столкновение которого с любым другим когда-либо сгенерированным UUID астрономически маловероятно, где бы то ни было, кем бы то ни было, без необходимости в центральном органе, раздающем уникальные номера.
Почему бы просто не использовать инкрементное число?
Автоинкрементный ID базы данных (1, 2, 3...) отлично работает внутри одной базы данных, но перестаёт работать, как только вам нужна уникальность между несколькими системами. Если две отдельные базы данных независимо друг от друга генерируют «заказ №4521», а позже вам нужно объединить эти данные, возникает коллизия. UUID решают эту проблему, генерируясь независимо, без какой-либо координации, но при этом оставаясь уникальными на практике. Именно поэтому UUID повсюду в распределённых системах: первичные ключи баз данных, ID запросов API, токены сессий, имена файлов, ID отслеживания для событий аналитики и так далее.
Как на самом деле гарантируется уникальность?
Она гарантирована не в абсолютном математическом смысле, а в практическом смысле «этого никогда не произойдёт». Самая распространённая версия, UUID v4, генерируется почти полностью из случайных битов: 122 из 128 бит случайны, а оставшиеся 6 бит фиксированы, чтобы идентифицировать его как UUID версии 4. При такой случайности количество UUID, которое нужно сгенерировать до достижения 50%-й вероятности хотя бы одной коллизии, составляет около 2,71 квинтиллиона. Даже при генерации миллиарда UUID в секунду потребуется примерно 85 лет, чтобы достичь вероятности коллизии в одну миллиардную. Практически для любой практической цели это равносильно невозможному.
Версии UUID, кратко
UUID бывают нескольких версий с разными методами генерации. Версия 1 основана на временной метке плюс адресе сетевого оборудования генерирующего компьютера (сегодня используется редко, поскольку может раскрыть информацию о том, когда и где он был сгенерирован). Версия 4, почти полностью случайная, безусловно наиболее распространена в современном программном обеспечении, поскольку не требует специального ввода и не несёт метаданных о своём происхождении. Версия 5 генерируется детерминированно из пространства имён и имени с помощью хеш-функции, поэтому одни и те же входные данные всегда дают один и тот же UUID — это полезно, когда вам нужен стабильный идентификатор, полученный из существующих данных, а не свежий случайный.
Когда вам действительно понадобится его сгенерировать
Распространённые случаи: присвоение уникального ID новой записи базы данных без ожидания, пока база данных выдаст его сама, генерация уникального имени файла во избежание перезаписи существующего файла, создание одноразового ключа API или токена сессии, или маркировка пакета тестовых данных ID, гарантированно не пересекающимся с реальными производственными данными. Везде, где вам нужен «уникальный идентификатор прямо сейчас, без какой-либо координации», UUID обычно является самым простым ответом.