Перейти к содержимому
useToolz онлайн-инструменты

UUID v4: что это, зачем нужен и как генерировать

15.01.2026 1 мин. чтения

Что такое UUID

UUID (Universally Unique Identifier) — это 128-битный идентификатор, который гарантированно уникален в глобальном масштабе без центрального координирующего органа. UUID записывается как 32 шестнадцатеричных символа, разделённых дефисами в формате 8-4-4-4-12:

550e8400-e29b-41d4-a716-446655440000

UUID стандартизирован в RFC 4122 и используется повсеместно: базы данных, API, распределённые системы, сессии, файловые системы. Главное преимущество UUID — возможность генерировать уникальные идентификаторы на любом устройстве без подключения к серверу и без риска коллизий.

Версии UUID

Существует несколько версий UUID, каждая с разным механизмом генерации:

UUID v1 — на основе времени и MAC-адреса

Генерируется из текущей метки времени (100-наносекундные интервалы с 15 октября 1582 года) и MAC-адреса сетевого интерфейса. Гарантирует уникальность, но раскрывает информацию о времени создания и устройстве. По UUID v1 можно узнать, когда и на каком компьютере он был создан — это потенциальная проблема конфиденциальности.

UUID v4 — случайный

Самая популярная версия. 122 бита из 128 генерируются случайным образом (6 бит зарезервированы для обозначения версии и варианта). UUID v4 не содержит никакой информации о времени или устройстве — это чистая случайность. Именно этот вариант используется в большинстве современных приложений.

UUID v7 — на основе Unix timestamp (новый)

Предложен в новой спецификации (RFC 9562, 2024 год). Первые 48 бит — это Unix timestamp в миллисекундах, остальные — случайные. Преимущество: UUID v7 сортируемы по времени, что значительно улучшает производительность при использовании в качестве первичных ключей в базах данных (нет фрагментации индексов B-tree).

Вероятность коллизий UUID v4

UUID v4 имеет 122 бита случайности, что даёт 2^122 (примерно 5.3 × 10^36) возможных значений. Чтобы оценить вероятность коллизии, используют «парадокс дней рождения»:

  • При генерации 1 миллиарда UUID v4 вероятность хотя бы одной коллизии — около 0.00000000000000003% (3 × 10^{-17}).
  • Чтобы вероятность коллизии достигла 50%, нужно сгенерировать около 2.7 × 10^18 UUID — это 2.7 квинтиллиона идентификаторов.
  • Если генерировать 1 миллиард UUID в секунду, потребуется 85 лет, чтобы вероятность коллизии достигла 50%.

На практике коллизии UUID v4 не встречаются. Это математически обоснованная надёжность, а не просто «маловероятно».

Где используются UUID

Базы данных

UUID часто используется как первичный ключ вместо автоинкрементного числа. Преимущества: можно генерировать ID на клиенте до вставки в базу, легко объединять данные из разных баз, нет предсказуемости (пользователь не может перебирать ID). Недостаток UUID v4: случайность ухудшает производительность B-tree индексов. Решение — UUID v7 или ULID, которые сортируемы по времени.

API и распределённые системы

В микросервисной архитектуре каждый сервис может генерировать UUID независимо. Это устраняет необходимость центрального сервиса выдачи идентификаторов и убирает единую точку отказа. UUID используются для идентификации запросов (correlation ID), транзакций, сессий и ресурсов.

Файловые системы и диски

В Linux разделы диска идентифицируются по UUID (команда blkid). Это надёжнее, чем имена устройств (/dev/sda1), которые могут меняться при перезагрузке или подключении новых дисков.

UUID vs альтернативы

  • Автоинкремент — простой, компактный, но требует центральной базы данных и предсказуем. UUID лучше для распределённых систем.
  • ULID (Universally Unique Lexicographically Sortable Identifier) — сортируемый по времени, компактнее UUID в текстовом представлении. Хорошая альтернатива UUID v4 для баз данных.
  • Snowflake ID (Twitter/Discord) — 64-битный ID, сортируемый по времени, с встроенным ID машины. Компактнее UUID, но требует координации ID машин.
  • NanoID — компактный случайный ID с настраиваемым алфавитом и длиной. Популярен для URL-friendly идентификаторов.

Как генерировать UUID

В большинстве языков есть встроенные средства:

  • JavaScript: crypto.randomUUID() (в современных браузерах и Node.js 19+).
  • Python: import uuid; uuid.uuid4().
  • PHP: Str::uuid() (Laravel) или ramsey/uuid.
  • PostgreSQL: gen_random_uuid().
  • MySQL: UUID() (генерирует v1).

Для быстрой генерации UUID без кода используйте наш генератор UUID. Он создаёт криптографически стойкие UUID v4 прямо в вашем браузере.

Часто задаваемые вопросы

Сколько байт занимает UUID?

UUID — это 128 бит, или 16 байт в бинарном представлении. В текстовом формате (с дефисами) — 36 символов. В базах данных рекомендуется хранить UUID как бинарный тип (BINARY(16) в MySQL, UUID в PostgreSQL), а не как строку — это экономит место и ускоряет индексы.

Чем UUID отличается от хеша?

UUID — это случайный (или основанный на времени) идентификатор, не привязанный к данным. Хеш — результат детерминированной функции от входных данных. Одни и те же данные всегда дадут одинаковый хеш, но разные UUID при каждой генерации. UUID используется для идентификации, хеш — для проверки целостности.

Почему UUID v4 плохо работает как первичный ключ?

UUID v4 полностью случаен, что приводит к фрагментации B-tree индексов в базах данных: новые записи вставляются в случайные позиции дерева, а не в конец. Это замедляет вставку и увеличивает потребление дискового ввода-вывода. Решение — использовать UUID v7, ULID или сортируемые варианты UUID, где первые байты содержат метку времени.

Как быстро сгенерировать UUID?

Откройте наш генератор UUID и получите один или несколько UUID v4 одним кликом. Идентификаторы генерируются в вашем браузере с использованием криптографически стойкого генератора случайных чисел.

Увеличенное изображение