В этой статье
Что такое UUID?
UUID (Universally Unique Identifier) — это 128-битное значение, используемое для уникальной идентификации информации в компьютерных системах. Записанный в виде 32 шестнадцатеричных цифр, отображаемых в пяти группах, разделённых дефисами, UUID выглядит как 550e8400-e29b-41d4-a716-446655440000.
UUID спроектированы для обеспечения глобальной уникальности без необходимости центрального органа регистрации. Это делает их идеальными для распределённых систем, где несколько узлов должны независимо генерировать идентификаторы, которые никогда не совпадут.
Версии UUID
Стандарт UUID определяет несколько версий, каждая с различным методом генерации. Номер версии отображается как 13-й символ.
- Версия 1 (v1) — на основе времени: объединяет текущую метку времени с MAC-адресом машины. Гарантирует уникальность, но раскрывает аппаратную информацию
- Версия 3 (v3) — на основе имени с MD5: генерирует детерминистический UUID путём хеширования пространства имён и имени с помощью MD5
- Версия 4 (v4) — случайная: наиболее распространённая версия. Все биты, кроме полей версии и варианта, генерируются случайно
- Версия 5 (v5) — на основе имени с SHA-1: как v3, но использует SHA-1. Предпочтительна над v3 для новых реализаций
- Версия 7 (v7) — случайная, упорядоченная по времени: более новый формат, объединяющий метку времени Unix со случайными битами
Попробуйте бесплатно — без регистрации
Проверить UUID →Как работает валидация UUID
Валидация UUID включает проверку как формата, так и структурных правил. Действительный UUID должен соответствовать каноническому шестнадцатеричному шаблону 8-4-4-4-12.
- Проверка формата — строка должна содержать ровно 32 шестнадцатеричных символа, расположенных в пяти группах, разделённых четырьмя дефисами
- Проверка версии — 13-й символ должен быть допустимым номером версии (1, 2, 3, 4, 5, 6, 7 или 8)
- Проверка варианта — 17-й символ должен указывать вариант RFC 4122 (8, 9, a или b)
Типичные сценарии использования
UUID являются стандартным выбором идентификаторов во многих областях современной разработки программного обеспечения.
- Первичные ключи базы данных — UUID позволяют генерировать ключи на стороне клиента без обращений к базе данных
- Идентификаторы ресурсов API — использование UUID вместо последовательных целых чисел предотвращает атаки перебора
- Идентификаторы сессий и корреляции — UUID отслеживают запросы через микросервисы
- Именование файлов и объектов — системы облачного хранения используют UUID для предотвращения конфликтов имён
Лучшие практики
Выбор правильной версии UUID и корректная работа с ними может предотвратить тонкие ошибки и проблемы с производительностью.
- Используйте v4 для общих случайных идентификаторов — это наиболее распространённый выбор без внешних зависимостей
- Используйте v7, когда нужны идентификаторы, сортируемые по времени — UUID v7 сортируются хронологически
- Храните UUID как 16-байтовый бинарный формат в базах данных вместо строк из 36 символов
- Всегда валидируйте UUID, полученные из внешних источников — никогда не предполагайте, что предоставленные пользователем строки правильно сформированы
Часто задаваемые вопросы
Могут ли два UUID быть одинаковыми?
Хотя теоретически это возможно, вероятность коллизии с UUID v4 астрономически мала. Потребуется сгенерировать примерно 2,7 квинтиллиона UUID, чтобы иметь 50 процентов шанса на одну коллизию.
UUID чувствителен к регистру?
Нет. Стандарт RFC 4122 указывает, что UUID должны выводиться в нижнем регистре, но реализации должны принимать оба варианта как эквивалентные.
Что лучше использовать — UUID или ULID?
ULID — это 128-битные идентификаторы, которые лексикографически сортируемы. Если вам нужна сортируемость без сложности UUID v7, ULID являются хорошей альтернативой.