Що таке UUID?
UUID (Універсальний Унікальний Ідентифікатор) — це стандартизований формат ідентифікатора, розроблений для забезпечення глобальної унікальності в просторі та часі. UUID — це 128-бітні значення, які зазвичай представлені у вигляді 32 шістнадцяткових цифр, розділених на п’ять груп дефісами: d4e5f6a7-b8c9-4012-d456-789abcdef012
.
UUID визначені стандартом RFC 9562 (який замінив попередній RFC 4122) і використовуються в обчислювальних платформах для ідентифікації інформації без необхідності централізованої реєстрації чи координації.
Формат UUID
Усі UUID мають спільний формат, що складається з 36 символів (32 шістнадцяткові цифри плюс 4 дефіси), організованих за шаблоном:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Де:
x
— будь-яка шістнадцяткова цифра (0-9, a-f)M
вказує на версію UUID (1-7)N
вказує на варіант UUID (зазвичай 8, 9, A або B для сучасних UUID)
Порівняння версій UUID
Версія | Назва | Метод Генерації | Сортування за Часом | Випадки Використання |
---|---|---|---|---|
UUID v1 | Мітка Часу | Поточна мітка часу + ID вузла (MAC) | Так (частково) | Журнали, розподілені системи |
UUID v3 | На Основі Імені (MD5) | MD5-хеш простору імен + імені | Ні | Послідовні ID для однакових вхідних даних |
UUID v4 | Випадковий | Випадкові або псевдовипадкові числа | Ні | Загальне призначення, найпоширеніший |
UUID v5 | На Основі Імені (SHA-1) | SHA-1-хеш простору імен + імені | Ні | Послідовні ID із сильнішим хешем |
UUID v6 | Пересортована Мітка Часу | Мітка часу (відсортована для сортування) | Так | Ключі баз даних, журнали, відсортовані за часом |
UUID v7 | Мітка Часу Unix | Мітка часу Unix + випадкові дані | Так | Сучасні сортувальні ідентифікатори |
Nil UUID | Нульовий UUID | Усі нулі | N/A | Спеціальне значення, неініціалізований маркер |
Переваги UUID
- Не Потребує Координації: Генерація ID без централізованої координації
- Глобальна Унікальність: Надзвичайно низька ймовірність зіткнення
- Фіксована Довжина: Послідовне представлення з 36 символів
- Кросплатформеність: Сумісність майже з усіма мовами програмування
- Універсальність: Різні версії для різних випадків використання
Нестандартні альтернативи UUID
Тип ID | Опис | Переваги | Недоліки |
---|---|---|---|
GUID | Реалізація UUID від Microsoft | Функціонально еквівалентний UUID | Деякі відмінності реалізації на старих системах |
ULID | Універсальний Унікальний Лексикографічно Сортувальний Ідентифікатор | Лексикографічно сортується, мітка часу спочатку, нечутливий до регістру | Новіший, менш поширений |
Snowflake ID | Розподілена система ID від Twitter | Сортується за часом, компактний (64 біти) | Потребує централізованої координації |
CUID/CUID2 | Колізійно-стійкі ID | Короткі, підходять для генерації на клієнті | Не є офіційним стандартом |
Nano ID | Генератор коротких, безпечних і унікальних рядків, дружніх до URL | Менший за UUID, налаштовуваний алфавіт | Не стандартизований |
Short UUID | Скорочене кодування стандартних UUID | Компактніше представлення | Потребує конвертації до/з стандартного UUID |
Nil UUID | UUID з усіма нулями | Спеціальне семантичне значення | Не унікальний (використовується як спеціальне значення) |
Minecraft UUID | UUID з дефісами або без них | Сумісний зі стандартними UUID | Лише відмінності у форматі |
Практичні Застосування
- Первинні Ключі Баз Даних: Особливо у розподілених або реплікованих базах даних
- Розподілені Системи: Ідентифікація сутностей у кількох системах
- Веб-додатки: Ідентифікатори сесій, відстеження анонімних користувачів
- Управління Контентом: Ідентифікатори документів і медіа
- API: Ідентифікатори запитів і транзакцій для відстеження та налагодження
- Інтернет Речей: Ідентифікація пристроїв без централізованої реєстрації
- Синхронізація Даних: Ідентифікація записів у кількох сховищах даних
- Ліцензії на Програмне Забезпечення: Унікальні ключі продукту або ліцензії