Версии UUID объяснены
Спецификация UUID определяет несколько версий с различными методами генерации. Выбор правильной версии зависит от ваших требований к уникальности, конфиденциальности, воспроизводимости и производительности. Это руководство сравнивает все версии, чтобы помочь вам решить.
Версия 1 - Основанная на времени
UUID Версии 1 генерируются с использованием текущей временной метки и MAC-адреса машины. Эта комбинация гарантирует уникальность: никакие две машины не имеют одинакового MAC-адреса, и временная метка гарантирует, что одна и та же машина никогда не генерирует дубликаты. Временная метка использует 60-битное значение, представляющее 100-наносекундные интервалы с 15 октября 1582 года (начало Григорианского календаря). Это обеспечивает субмикросекундную точность и достаточный диапазон для тысячелетий уникальных ID. 48-битный MAC-адрес уникально идентифицирует сетевой интерфейс. Преимущества UUID V1: гарантированная уникальность без случайности (детерминированная генерация). Естественная хронологическая сортировка — вы можете сортировать UUID V1 по времени создания. Когда что-то идет не так, временная метка и MAC могут помочь отладить, где и когда ID был создан. Недостатки UUID V1: проблемы конфиденциальности — MAC-адрес раскрывает информацию о генерирующем устройстве (производитель, сетевой интерфейс), и временная метка раскрывает, когда ID был создан. Это может быть эксплуатировано для отслеживания или атак по времени. Системы без сетевых интерфейсов (или с поддельными MAC) не могут генерировать совместимые UUID V1. Используйте V1, когда: вам нужна сортировка по времени UUID, вы работаете в контролируемой среде, где конфиденциальность не является проблемой, вы интегрируетесь с системами, требующими UUID V1.
Версия 4 - Случайная
UUID Версии 4 — безусловно наиболее широко используемая версия. Они генерируются с использованием криптографически безопасных случайных чисел, с 122 битами случайности (6 битов зарезервированы для версии и варианта). 122 бита случайности означают 2^122 (примерно 5.3 × 10^36) возможных UUID. Вероятность коллизии чрезвычайно мала — если вы генерируете один миллиард UUID V4 в секунду, потребовалось бы около 85 лет, чтобы достичь 50% шанса единственной коллизии. Преимущества UUID V4: простая генерация — нужны только случайные биты. Нет проблем с конфиденциальностью — UUID не раскрывают информацию о времени, месте или системе. Широко поддерживается во всех языках и платформах. Не требует состояния — нет необходимости отслеживать временные метки или MAC-адреса. Недостатки UUID V4: не сортируемы — UUID V4 появляются в случайном порядке. Немного менее эффективно в индексах базы данных по сравнению с последовательными ID. Полагается на качество генератора случайных чисел — используйте криптографически безопасные генераторы. Используйте V4 для: первичных ключей базы данных, идентификаторов сеансов, токенов API, уникальных имен файлов, ID отслеживания, любого случая, требующего уникальных ID без специальных требований. V4 — рекомендуемый выбор по умолчанию для большинства приложений. Это просто, безопасно и имеет отличные характеристики уникальности.
Попробовать инструмент
Генератор UUID