Перейти к основному содержимому
FreeOnlineTools Go
Русский
Сравнение

UUID v1 против v4 против v5: Какую версию выбрать?

Автор: FreeOnlineTools Team · Обновлено 2026-08-28

Быстрый ответ

Используйте UUID v4 (random) по умолчанию —не требует координации и имеет незначительный риск коллизии. Используйте v1 (time-based) только когда нужны time-orderable ID. Используйте v5 (namespace+name) для детерминированных ID. Генерируйте любой нашим бесплатным UUID Generator.

Введение

UUID (Universally Unique Identifier) — 128-bit идентификатор, представленный как 36 символов в 8-4-4-4-12 hex-группах, напр. 123e4567-e89b-12d3-a456-426614174000. RFC 9562 определяет несколько версий; три наиболее распространённые — v1 (time + MAC), v4 (random) и v5 (namespace + name, SHA-1). Каждая делает разные trade-off между гарантиями уникальности, сортируемостью и детерминизмом.

Шаг за шагом

  1. UUID v1 — на основе времени и узла

    v1 кодирует текущую 60-битную метку времени (интервалы 100 нс с 15.10.1582) и 48-битный идентификатор узла (обычно MAC-адрес). Идентификаторы, генерируемые на одном узле, монотонно увеличиваются и сортируются по времени. Риск: MAC-адрес приводит к утечке аппаратных данных, а смещение тактовой частоты между узлами может нарушить порядок.

  2. UUID v4 —случайно

    v4 использует 122 случайных бита (6 бит фиксированы для версии/варианта). При 122 случайных битах вероятность конфликта среди 2,71 триллиона идентификаторов составляет 50 % — для любой реальной рабочей нагрузки вероятность фактически равна нулю. Версия 4 не требует координации и не раскрывает информацию о хосте, что делает ее самым безопасным вариантом по умолчанию.

  3. UUID v5 — пространство имен и имя (SHA-1)

    v5 хэширует пространство имен UUID и строку имени с помощью SHA-1 для создания детерминированного 128-битного идентификатора. Одна и та же пара (пространство имен, имя) всегда дает один и тот же UUID, что идеально подходит для дедупликации и стабильных идентификаторов, полученных из натуральных ключей. v3 — та же идея, но использует MD5 (избегайте этого).

  4. Сравните компромиссы

    Версия v1 поддается сортировке, но пропускает MAC и требует синхронизации часов. v4 является случайным и частным, но не поддается сортировке. Версия 5 является детерминированной и выполняет дедупликацию, но не является случайной — угадывание имени позволяет злоумышленнику воспроизвести UUID. Выбирайте, исходя из того, нужен ли вам порядок, случайность или детерминизм.

  5. Выберите подходящую версию для вашего случая

    Первичные ключи базы данных: v4 (или v7 в более новых системах для упорядочивания по времени). Распределенные системы без координации: v4. Детерминированные идентификаторы из естественного ключа (например, URL →UUID): v5. Журналы аудита, которые выигрывают от временного порядка: v1 с защищенным случайным идентификатором узла.

Примеры

UUID v1 (по времени, с возможностью сортировки)

Вход: Сгенерировано в 2026-08-28T12:00:00Z на узле 00:11:22:33:44:55.

Выход: 1ef7c1d0-2d3b-11f0-8000-001122334455 (цифра версии '1', с возможностью сортировки по времени)

UUID v4 (случайно)

Вход: Random generation

Выход: f47ac10b-58cc-4372-a567-0e02b2c3d479 (цифра версии «4», случайные биты)

UUID v5 (детерминировано из пространства имен+имя)

Вход: Пространство имен DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8) + имя «freeonlinetoolsgo.com»

Выход: 74738ff5-5367-5958-9aeb-0c1f1f1f1f1f (один и тот же ввод всегда дает одинаковый вывод)

Распространенные проблемы

  • Хранение UUID как VARCHAR(36) вместо собственного 16-байтового типа BINARY/UUID: это приводит к удвоенной трате памяти и снижению производительности индекса. Используйте собственный тип столбца UUID, если он доступен.
  • Использование версии 1 без защиты идентификатора узла: MAC-адрес по умолчанию нарушает идентификацию оборудования и является проблемой конфиденциальности. Замените его криптографически случайным 48-битным значением на узел.
  • Если предположить, что столкновения v4 невозможны: это не так — они просто астрономически маловероятны. При 122 случайных битах вам понадобится около 2,71 триллиона идентификаторов для вероятности 50%. Для 1 миллиарда идентификаторов вероятность составляет ~ 0,0000000000000001.
  • Использование версии 3 (на основе MD5) вместо версии 5 (на основе SHA-1): MD5 не работает, поэтому предпочтительна версия 5. Оба являются детерминированными, но v5 имеет более высокую устойчивость к коллизиям.

Советы

  • По умолчанию используется версия 4 почти для каждого варианта использования — она случайная, конфиденциальная и защищена от коллизий без какой-либо координации.
  • Если вам нужны случайные идентификаторы с сортировкой по времени, обратите внимание на UUID v7 (RFC 9562, 2024), который сочетает в себе временную метку Unix со случайными битами — лучше, чем v1 для современных баз данных.
  • Используйте версию 5 для генерации стабильных идентификаторов из естественных ключей (URLs, адресов электронной почты), чтобы одни и те же входные данные всегда сопоставлялись с одним и тем же UUID — это полезно для дедупликации и идемпотентного APIs.
  • По возможности сгенерируйте UUID на клиенте, чтобы избежать обратного пути к серверу — наш генератор UUID полностью запускается в вашем браузере с помощью crypto.getRandomValues().

Сопутствующие инструменты

Связанные руководства

Ссылки