Що таке UUID насправді
UUID, скорочення від Universally Unique Identifier (універсальний унікальний ідентифікатор), — це 128-бітне значення, яке використовується для позначення чогось без необхідності попередньо отримувати дозвіл від будь-кого. Ви також можете зустріти термін GUID, або Globally Unique Identifier, — саме так Microsoft назвала ту саму концепцію в Windows і світі .NET. Обидва терміни описують одне й те саме 128-бітне число практично в усіх випадках, що мають практичне значення: якщо колега каже GUID, а ви — UUID, ви говорите про одне й те саме.
Ці 128 бітів зазвичай записуються як 32 шістнадцяткових цифри, розділені на п'ять груп дефісами за шаблоном 8-4-4-4-12. Типове значення виглядає так: 123e4567-e89b-12d3-a456-426614174000. Дефіси самі по собі не несуть ніякого змісту — вони існують виключно для того, щоб людина могла прочитати значення, не збиваючись. Кожен символ є шістнадцятковою цифрою від 0 до f, тому UUID виглядає щільнішим за звичайне число, хоча під поверхнею це просто одне дуже велике ціле число.

Версії та чому v4 є стандартом де-факто
Стандарт визначає кілька версій, які відрізняються способом заповнення бітів. Версія 1 базується на часі: вона поєднує поточну мітку часу і MAC-адресу мережевого інтерфейсу пристрою. Це робить значення v1 придатними для сортування за часом створення, але водночас розкриває інформацію про те, де і приблизно коли вони були згенеровані — що не завжди бажано. Версії 3 і 5 базуються на іменах: вони хешують простір імен разом з іменем, тому однакові вхідні дані завжди дають однаковий ідентифікатор.
Версія 4 обрала зовсім інший шлях. Вона майже повністю випадкова. З 128 бітів шість зарезервовано для позначення версії та варіанту, а решта 122 заповнюються випадковими даними. Тут немає мітки часу, MAC-адреси, простору імен — лише шум. Саме тому більшість генераторів, включно з цим, за замовчуванням видає v4. Він нічого не розкриває про пристрій або момент створення і не вимагає координації між сторонами, що генерують. Інструмент на цій сторінці працює повністю у вашому браузері, тому випадкові значення ніколи не покидають ваш пристрій.
Наскільки малоймовірним є збіг
Розумна стурбованість полягає в тому, що два випадкових UUID можуть колись збігтися. З 122 випадковими бітами простір можливих значень v4 становить 2 у степені 122, що приблизно дорівнює 5,3 з 36 нулями. Щоб пояснити це людською мовою: вам довелося б генерувати мільярди UUID щосекунди протягом багатьох десятиліть, перш ніж ймовірність хоча б одного дубліката стала б вимірювальною. Сам стандарт описує шанс збігу як настільки близький до нуля, що ним можна знехтувати. На практиці команди вважають v4 унікальними і рухаються далі — і роблять це цілком обґрунтовано.

Де розробники вдаються до них
Оскільки унікальність не потребує центрального органу, UUID чудово підходять там, де координація дорога або неможлива. Вони є природним вибором для первинних ключів у базах даних — особливо коли кілька сервісів одночасно вставляють рядки і не можна зупинятися, щоб запитати у спільного лічильника наступний номер. У розподілених системах два вузли на протилежних кінцях планети можуть генерувати ідентифікатори в один і той самий момент і ніколи не перетнутися. Вони також використовуються як ключі ідемпотентності API, коли клієнт додає UUID до запиту, щоб сервер міг безпечно ігнорувати дублікат у разі повторної спроби мережі. Токени сесій, імена файлів, ідентифікатори подій і ключі повідомлень — усе це спирається на ту саму властивість.
UUID проти автоінкрементних ідентифікаторів
Класична альтернатива — автоінкрементне ціле число: 1, 2, 3 і так далі. Послідовні ідентифікатори компактні, природно сортуються і легко читаються, але мають реальні недоліки. Вони розкривають кількість записів і дозволяють стороннім вгадувати сусідні значення, а також змушують кожне вставлення звертатися до єдиного лічильника, що стає вузьким місцем при шардингу бази або злитті даних із кількох джерел. UUID вирішують ці проблеми, дозволяючи будь-якій стороні генерувати ключ незалежно і не розкриваючи нічого про обсяг чи порядок. Плата за це — розмір і дещо менша локальність в індексах. Для систем, що масштабуються горизонтально або мають приховувати свою внутрішню структуру, ця угода зазвичай виправдана. Ви можете дослідити цей та подібні інструменти в нашій колекції всі генератори або переглянути ширший набір інструментів для розробників.
Часті запитання
Чи є GUID тим самим, що й UUID?
Для повсякденних цілей — так. GUID — це назва Microsoft для того самого 128-бітного ідентифікатора. Єдина реальна відмінність — порядок байтів у сирому бінарному форматі в деяких системах Windows; у рядковому форматі вони ідентичні й взаємозамінні.
Яку версію UUID генерує цей інструмент?
Він генерує версію 4 — випадковий варіант. Зі 128 бітів 122 заповнені випадковими даними, що робить кожне значення надзвичайно малоймовірним до повторення і означає, що воно не містить мітки часу чи інформації про пристрій.
Чи можуть два UUID бути однаковими?
Теоретично ймовірність не є строго нульовою, але з приблизно 5,3 × 10 у степені 36 можливими значеннями v4 вона настільки мала, що вважається незначущою. Вам довелося б генерувати астрономічну кількість UUID, перш ніж збіг став би ймовірним.
Чому варто використовувати UUID замість автоінкрементного числа?
UUID можна створювати незалежно в будь-якому сервісі без спільного лічильника, вони не розкривають кількість записів чи порядок і спрощують злиття даних із кількох джерел. Автоінкрементні ідентифікатори компактніші, але стають вузьким місцем і розкривають інформацію при масштабуванні.
UUID генеруються на сервері?
Ні. Цей інструмент працює повністю у вашому браузері, тому випадкові значення виробляються локально і нікуди не надсилаються. Це робить його безпечним для ключів і токенів, які ви хочете зберегти в таємниці.
Що означає шаблон із дефісами?
Угруповання 8-4-4-4-12 — це лише конвенція для зручності читання. Дефіси не несуть ніяких даних; вони розбивають 32 шістнадцяткових цифри на блоки, щоб люди могли легше переглядати й порівнювати значення.
